From 8dd1b66d6918e212530160cb3c1b78e58947c443 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Fri, 18 Aug 2023 12:39:59 +0100 Subject: [PATCH] Always use protobufs by reference & generate handlers --- Makefile | 4 +- _assets/ci/Jenkinsfile | 2 +- _assets/ci/Jenkinsfile.tests | 2 +- .../generate_handlers/generate_handlers.go | 126 + .../generate_handlers_template.txt | 57 + appdatabase/migrations/bindata.go | 626 +- appdatabase/migrationsprevnodecfg/bindata.go | 397 +- cmd/ping-community/main.go | 2 +- cmd/populate-db/main.go | 2 +- mailserver/migrations/bindata.go | 40 +- multiaccounts/migrations/bindata.go | 108 +- protocol/activity_center_persistence.go | 12 +- protocol/activity_center_persistence_test.go | 21 +- protocol/anonmetrics/adaptors.go | 6 +- protocol/anonmetrics/migrations/migrations.go | 38 +- protocol/anonmetrics/server.go | 2 +- protocol/chat_test.go | 12 +- protocol/common/message.go | 16 +- protocol/common/message_sender.go | 5 - protocol/common/message_sender_test.go | 6 - protocol/common/message_test.go | 12 +- protocol/common/pin_message.go | 10 +- protocol/communities/adaptors.go | 4 +- protocol/communities/community.go | 2 +- .../communities/community_event_message.go | 6 +- protocol/communities/manager.go | 4 +- protocol/communities/persistence.go | 2 +- protocol/communities/persistence_test.go | 12 +- .../communities/persistence_test_helpers.go | 2 +- protocol/communities_events_utils_test.go | 12 +- .../communities_messenger_helpers_test.go | 4 +- protocol/communities_messenger_test.go | 25 +- protocol/delete_message.go | 14 +- protocol/edit_message.go | 14 +- protocol/emoji_reaction.go | 18 +- protocol/encryption/migrations/migrations.go | 159 +- protocol/encryption/protocol_message.pb.go | 1239 ++-- protocol/group_chat_invitation.go | 16 +- protocol/group_chat_system_messages.go | 2 +- protocol/message_persistence.go | 76 +- protocol/message_validator.go | 24 +- protocol/message_validator_test.go | 80 +- protocol/messenger.go | 1071 +-- protocol/messenger_activity_center.go | 17 +- protocol/messenger_activity_center_test.go | 8 +- protocol/messenger_auto_message.go | 2 +- protocol/messenger_backup.go | 4 +- protocol/messenger_backup_handler.go | 24 +- protocol/messenger_backup_test.go | 9 +- protocol/messenger_communities.go | 61 +- protocol/messenger_community_metrics_test.go | 2 +- protocol/messenger_contact_requests_test.go | 10 +- protocol/messenger_contact_verification.go | 17 +- protocol/messenger_contacts.go | 4 +- ...senger_delete_message_for_everyone_test.go | 2 +- protocol/messenger_delete_message_test.go | 33 +- protocol/messenger_edit_message_test.go | 19 +- protocol/messenger_emoji_test.go | 2 +- protocol/messenger_group_chat.go | 4 +- protocol/messenger_group_chat_test.go | 6 +- protocol/messenger_handler.go | 354 +- protocol/messenger_handler_test.go | 4 +- protocol/messenger_handlers.go | 1610 +++++ protocol/messenger_mailserver.go | 2 +- protocol/messenger_messages.go | 14 +- protocol/messenger_pin_message_test.go | 11 +- protocol/messenger_pin_messages.go | 2 +- protocol/messenger_saved_address.go | 11 +- protocol/messenger_share_image_test.go | 2 +- protocol/messenger_status_updates.go | 11 +- protocol/messenger_sync_raw_messages.go | 67 +- protocol/messenger_test.go | 40 +- protocol/migrations/migrations.go | 729 +- protocol/persistence.go | 4 +- protocol/persistence_test.go | 96 +- protocol/protobuf/anon_metrics.pb.go | 320 +- .../application_metadata_message.pb.go | 735 +- .../application_metadata_message.proto | 12 +- protocol/protobuf/chat_identity.pb.go | 543 +- protocol/protobuf/chat_message.pb.go | 2112 +++--- protocol/protobuf/chat_message.proto | 2 +- protocol/protobuf/command.pb.go | 773 ++- protocol/protobuf/communities.pb.go | 3161 +++++---- protocol/protobuf/communities.proto | 2 +- ...mmunity_privileged_user_sync_message.pb.go | 323 +- protocol/protobuf/community_token.pb.go | 467 +- protocol/protobuf/community_update.pb.go | 1200 ++-- protocol/protobuf/contact.pb.go | 540 +- protocol/protobuf/contact_verification.pb.go | 477 +- protocol/protobuf/emoji_reaction.pb.go | 312 +- protocol/protobuf/enums.pb.go | 283 +- protocol/protobuf/group_chat_invitation.pb.go | 266 +- .../protobuf/membership_update_message.pb.go | 475 +- protocol/protobuf/pairing.pb.go | 6129 ++++++++++------- protocol/protobuf/pairing.proto | 23 +- protocol/protobuf/pin_message.pb.go | 214 +- protocol/protobuf/push_notifications.pb.go | 1578 +++-- protocol/protobuf/status_update.pb.go | 267 +- protocol/protobuf/sync_settings.pb.go | 420 +- protocol/protobuf/url_data.pb.go | 543 +- protocol/push_notification_test.go | 4 +- protocol/pushnotificationclient/client.go | 21 +- .../migrations/migrations.go | 68 +- .../migrations/migrations.go | 52 +- protocol/pushnotificationserver/server.go | 12 +- protocol/status_update.go | 2 +- protocol/transport/migrations/migrations.go | 61 +- protocol/v1/status_message.go | 193 - protocol/wakusync/progress_response.go | 4 +- protocol/wakusync/response.go | 2 +- server/handlers_test.go | 2 +- server/pairing/sync_device_test.go | 2 +- services/chat/api_send_messages.go | 10 +- static/bindata.go | 163 +- t/bindata.go | 40 +- .../libsecp256k1/contrib/lax_der_parsing.c | 150 + .../libsecp256k1/contrib/lax_der_parsing.h | 91 + .../contrib/lax_der_privatekey_parsing.c | 113 + .../contrib/lax_der_privatekey_parsing.h | 90 + .../src/java/org_bitcoin_NativeSecp256k1.c | 377 + .../src/java/org_bitcoin_NativeSecp256k1.h | 119 + .../src/java/org_bitcoin_Secp256k1Context.c | 15 + .../src/java/org_bitcoin_Secp256k1Context.h | 22 + .../libsecp256k1/src/modules/ecdh/main_impl.h | 54 + .../src/modules/ecdh/tests_impl.h | 105 + .../_example/mod_regexp/sqlite3_mod_regexp.c | 35 + .../v4/_example/mod_vtable/picojson.h | 1040 +++ vendor/modernc.org/libc/freebsd/mblocal.h | 122 + vendor/modernc.org/libc/freebsd/setlocale.h | 13 + vendor/modernc.org/libc/freebsd/table.c | 267 + vendor/modernc.org/libc/freebsd/table.cpp.c | 4101 +++++++++++ .../libc/freebsd/xlocale_private.h | 228 + .../libc/musl/arch/aarch64/atomic_arch.h | 82 + .../libc/musl/arch/aarch64/bits/fcntl.h | 38 + .../libc/musl/arch/aarch64/bits/fenv.h | 19 + .../libc/musl/arch/aarch64/bits/float.h | 31 + .../libc/musl/arch/aarch64/bits/hwcap.h | 40 + .../libc/musl/arch/aarch64/bits/posix.h | 2 + .../libc/musl/arch/aarch64/bits/reg.h | 2 + .../libc/musl/arch/aarch64/bits/setjmp.h | 1 + .../libc/musl/arch/aarch64/bits/signal.h | 153 + .../libc/musl/arch/aarch64/bits/stat.h | 18 + .../libc/musl/arch/aarch64/bits/stdint.h | 20 + .../libc/musl/arch/aarch64/bits/user.h | 16 + .../libc/musl/arch/aarch64/crt_arch.h | 15 + .../libc/musl/arch/aarch64/fp_arch.h | 25 + .../libc/musl/arch/aarch64/kstat.h | 21 + .../libc/musl/arch/aarch64/pthread_arch.h | 12 + .../libc/musl/arch/aarch64/reloc.h | 24 + .../libc/musl/arch/aarch64/syscall_arch.h | 78 + .../libc/musl/arch/arm/atomic_arch.h | 109 + .../libc/musl/arch/arm/bits/fcntl.h | 40 + .../libc/musl/arch/arm/bits/fenv.h | 23 + .../libc/musl/arch/arm/bits/float.h | 16 + .../libc/musl/arch/arm/bits/hwcap.h | 53 + .../libc/musl/arch/arm/bits/ioctl_fix.h | 2 + .../libc/musl/arch/arm/bits/ipcstat.h | 1 + .../modernc.org/libc/musl/arch/arm/bits/msg.h | 18 + .../libc/musl/arch/arm/bits/posix.h | 2 + .../libc/musl/arch/arm/bits/ptrace.h | 25 + .../modernc.org/libc/musl/arch/arm/bits/reg.h | 3 + .../modernc.org/libc/musl/arch/arm/bits/sem.h | 18 + .../libc/musl/arch/arm/bits/setjmp.h | 1 + .../modernc.org/libc/musl/arch/arm/bits/shm.h | 31 + .../libc/musl/arch/arm/bits/signal.h | 86 + .../libc/musl/arch/arm/bits/stat.h | 25 + .../libc/musl/arch/arm/bits/stdint.h | 20 + .../libc/musl/arch/arm/bits/user.h | 36 + .../modernc.org/libc/musl/arch/arm/crt_arch.h | 18 + vendor/modernc.org/libc/musl/arch/arm/kstat.h | 21 + .../libc/musl/arch/arm/pthread_arch.h | 33 + vendor/modernc.org/libc/musl/arch/arm/reloc.h | 32 + .../libc/musl/arch/arm/syscall_arch.h | 103 + .../libc/musl/arch/generic/bits/dirent.h | 11 + .../libc/musl/arch/generic/bits/errno.h | 134 + .../libc/musl/arch/generic/bits/fcntl.h | 40 + .../libc/musl/arch/generic/bits/fenv.h | 10 + .../libc/musl/arch/generic/bits/hwcap.h | 0 .../libc/musl/arch/generic/bits/io.h | 0 .../libc/musl/arch/generic/bits/ioctl.h | 115 + .../libc/musl/arch/generic/bits/ioctl_fix.h | 0 .../libc/musl/arch/generic/bits/ipc.h | 11 + .../libc/musl/arch/generic/bits/ipcstat.h | 1 + .../libc/musl/arch/generic/bits/kd.h | 1 + .../libc/musl/arch/generic/bits/limits.h | 0 .../libc/musl/arch/generic/bits/link.h | 1 + .../libc/musl/arch/generic/bits/mman.h | 0 .../libc/musl/arch/generic/bits/msg.h | 12 + .../libc/musl/arch/generic/bits/poll.h | 0 .../libc/musl/arch/generic/bits/ptrace.h | 0 .../libc/musl/arch/generic/bits/resource.h | 0 .../libc/musl/arch/generic/bits/sem.h | 14 + .../libc/musl/arch/generic/bits/shm.h | 24 + .../libc/musl/arch/generic/bits/socket.h | 0 .../libc/musl/arch/generic/bits/soundcard.h | 1 + .../libc/musl/arch/generic/bits/statfs.h | 7 + .../libc/musl/arch/generic/bits/termios.h | 166 + .../libc/musl/arch/generic/bits/vt.h | 1 + .../libc/musl/arch/generic/fp_arch.h | 0 .../libc/musl/arch/i386/atomic_arch.h | 108 + .../libc/musl/arch/i386/bits/fenv.h | 33 + .../libc/musl/arch/i386/bits/float.h | 35 + .../modernc.org/libc/musl/arch/i386/bits/io.h | 77 + .../libc/musl/arch/i386/bits/ipcstat.h | 1 + .../libc/musl/arch/i386/bits/limits.h | 1 + .../libc/musl/arch/i386/bits/mman.h | 1 + .../libc/musl/arch/i386/bits/msg.h | 18 + .../libc/musl/arch/i386/bits/posix.h | 2 + .../libc/musl/arch/i386/bits/ptrace.h | 11 + .../libc/musl/arch/i386/bits/reg.h | 19 + .../libc/musl/arch/i386/bits/sem.h | 13 + .../libc/musl/arch/i386/bits/setjmp.h | 1 + .../libc/musl/arch/i386/bits/shm.h | 31 + .../libc/musl/arch/i386/bits/signal.h | 142 + .../libc/musl/arch/i386/bits/stat.h | 25 + .../libc/musl/arch/i386/bits/stdint.h | 20 + .../libc/musl/arch/i386/bits/user.h | 44 + .../libc/musl/arch/i386/crt_arch.h | 16 + .../modernc.org/libc/musl/arch/i386/kstat.h | 21 + .../libc/musl/arch/i386/pthread_arch.h | 10 + .../modernc.org/libc/musl/arch/i386/reloc.h | 23 + .../libc/musl/arch/i386/syscall_arch.h | 91 + .../libc/musl/arch/m68k/atomic_arch.h | 8 + .../libc/musl/arch/m68k/bits/fcntl.h | 40 + .../libc/musl/arch/m68k/bits/fenv.h | 29 + .../libc/musl/arch/m68k/bits/float.h | 39 + .../libc/musl/arch/m68k/bits/ipcstat.h | 1 + .../libc/musl/arch/m68k/bits/msg.h | 18 + .../libc/musl/arch/m68k/bits/posix.h | 2 + .../libc/musl/arch/m68k/bits/ptrace.h | 2 + .../libc/musl/arch/m68k/bits/reg.h | 45 + .../libc/musl/arch/m68k/bits/sem.h | 13 + .../libc/musl/arch/m68k/bits/setjmp.h | 1 + .../libc/musl/arch/m68k/bits/shm.h | 31 + .../libc/musl/arch/m68k/bits/signal.h | 140 + .../libc/musl/arch/m68k/bits/stat.h | 25 + .../libc/musl/arch/m68k/bits/stdint.h | 20 + .../libc/musl/arch/m68k/bits/user.h | 38 + .../libc/musl/arch/m68k/crt_arch.h | 14 + .../modernc.org/libc/musl/arch/m68k/kstat.h | 21 + .../libc/musl/arch/m68k/pthread_arch.h | 13 + .../modernc.org/libc/musl/arch/m68k/reloc.h | 30 + .../libc/musl/arch/m68k/syscall_arch.h | 91 + .../libc/musl/arch/microblaze/atomic_arch.h | 53 + .../libc/musl/arch/microblaze/bits/float.h | 16 + .../libc/musl/arch/microblaze/bits/ipcstat.h | 1 + .../libc/musl/arch/microblaze/bits/msg.h | 18 + .../libc/musl/arch/microblaze/bits/posix.h | 2 + .../libc/musl/arch/microblaze/bits/reg.h | 3 + .../libc/musl/arch/microblaze/bits/sem.h | 18 + .../libc/musl/arch/microblaze/bits/setjmp.h | 1 + .../libc/musl/arch/microblaze/bits/shm.h | 31 + .../libc/musl/arch/microblaze/bits/signal.h | 88 + .../libc/musl/arch/microblaze/bits/stat.h | 25 + .../libc/musl/arch/microblaze/bits/stdint.h | 20 + .../libc/musl/arch/microblaze/bits/user.h | 25 + .../libc/musl/arch/microblaze/crt_arch.h | 17 + .../libc/musl/arch/microblaze/kstat.h | 21 + .../libc/musl/arch/microblaze/pthread_arch.h | 10 + .../libc/musl/arch/microblaze/reloc.h | 27 + .../libc/musl/arch/microblaze/syscall_arch.h | 97 + .../libc/musl/arch/mips/atomic_arch.h | 58 + .../libc/musl/arch/mips/bits/errno.h | 134 + .../libc/musl/arch/mips/bits/fcntl.h | 40 + .../libc/musl/arch/mips/bits/fenv.h | 25 + .../libc/musl/arch/mips/bits/float.h | 16 + .../libc/musl/arch/mips/bits/hwcap.h | 14 + .../libc/musl/arch/mips/bits/ioctl.h | 114 + .../libc/musl/arch/mips/bits/ipcstat.h | 1 + .../libc/musl/arch/mips/bits/mman.h | 25 + .../libc/musl/arch/mips/bits/msg.h | 27 + .../libc/musl/arch/mips/bits/poll.h | 2 + .../libc/musl/arch/mips/bits/posix.h | 2 + .../libc/musl/arch/mips/bits/ptrace.h | 9 + .../libc/musl/arch/mips/bits/reg.h | 47 + .../libc/musl/arch/mips/bits/resource.h | 5 + .../libc/musl/arch/mips/bits/sem.h | 16 + .../libc/musl/arch/mips/bits/setjmp.h | 1 + .../libc/musl/arch/mips/bits/shm.h | 29 + .../libc/musl/arch/mips/bits/signal.h | 124 + .../libc/musl/arch/mips/bits/socket.h | 35 + .../libc/musl/arch/mips/bits/stat.h | 26 + .../libc/musl/arch/mips/bits/statfs.h | 8 + .../libc/musl/arch/mips/bits/stdint.h | 20 + .../libc/musl/arch/mips/bits/termios.h | 169 + .../libc/musl/arch/mips/bits/user.h | 13 + .../libc/musl/arch/mips/crt_arch.h | 29 + .../libc/musl/arch/mips/ksigaction.h | 13 + .../modernc.org/libc/musl/arch/mips/kstat.h | 22 + .../libc/musl/arch/mips/pthread_arch.h | 19 + .../modernc.org/libc/musl/arch/mips/reloc.h | 50 + .../libc/musl/arch/mips/syscall_arch.h | 151 + .../libc/musl/arch/mips64/atomic_arch.h | 56 + .../libc/musl/arch/mips64/bits/errno.h | 134 + .../libc/musl/arch/mips64/bits/fcntl.h | 40 + .../libc/musl/arch/mips64/bits/fenv.h | 25 + .../libc/musl/arch/mips64/bits/float.h | 16 + .../libc/musl/arch/mips64/bits/hwcap.h | 3 + .../libc/musl/arch/mips64/bits/ioctl.h | 114 + .../libc/musl/arch/mips64/bits/ipc.h | 12 + .../libc/musl/arch/mips64/bits/mman.h | 25 + .../libc/musl/arch/mips64/bits/poll.h | 2 + .../libc/musl/arch/mips64/bits/posix.h | 2 + .../libc/musl/arch/mips64/bits/ptrace.h | 9 + .../libc/musl/arch/mips64/bits/reg.h | 47 + .../libc/musl/arch/mips64/bits/resource.h | 5 + .../libc/musl/arch/mips64/bits/setjmp.h | 1 + .../libc/musl/arch/mips64/bits/signal.h | 143 + .../libc/musl/arch/mips64/bits/socket.h | 35 + .../libc/musl/arch/mips64/bits/stat.h | 20 + .../libc/musl/arch/mips64/bits/statfs.h | 8 + .../libc/musl/arch/mips64/bits/stdint.h | 20 + .../libc/musl/arch/mips64/bits/termios.h | 169 + .../libc/musl/arch/mips64/bits/user.h | 15 + .../libc/musl/arch/mips64/crt_arch.h | 33 + .../libc/musl/arch/mips64/ksigaction.h | 10 + .../modernc.org/libc/musl/arch/mips64/kstat.h | 21 + .../libc/musl/arch/mips64/pthread_arch.h | 19 + .../modernc.org/libc/musl/arch/mips64/reloc.h | 60 + .../libc/musl/arch/mips64/syscall_arch.h | 128 + .../libc/musl/arch/mipsn32/atomic_arch.h | 52 + .../libc/musl/arch/mipsn32/bits/errno.h | 134 + .../libc/musl/arch/mipsn32/bits/fcntl.h | 40 + .../libc/musl/arch/mipsn32/bits/fenv.h | 25 + .../libc/musl/arch/mipsn32/bits/float.h | 16 + .../libc/musl/arch/mipsn32/bits/hwcap.h | 3 + .../libc/musl/arch/mipsn32/bits/ioctl.h | 114 + .../libc/musl/arch/mipsn32/bits/ipcstat.h | 1 + .../libc/musl/arch/mipsn32/bits/mman.h | 25 + .../libc/musl/arch/mipsn32/bits/msg.h | 27 + .../libc/musl/arch/mipsn32/bits/poll.h | 2 + .../libc/musl/arch/mipsn32/bits/posix.h | 2 + .../libc/musl/arch/mipsn32/bits/ptrace.h | 9 + .../libc/musl/arch/mipsn32/bits/reg.h | 47 + .../libc/musl/arch/mipsn32/bits/resource.h | 5 + .../libc/musl/arch/mipsn32/bits/sem.h | 16 + .../libc/musl/arch/mipsn32/bits/setjmp.h | 1 + .../libc/musl/arch/mipsn32/bits/shm.h | 29 + .../libc/musl/arch/mipsn32/bits/signal.h | 143 + .../libc/musl/arch/mipsn32/bits/socket.h | 35 + .../libc/musl/arch/mipsn32/bits/stat.h | 23 + .../libc/musl/arch/mipsn32/bits/statfs.h | 8 + .../libc/musl/arch/mipsn32/bits/stdint.h | 20 + .../libc/musl/arch/mipsn32/bits/termios.h | 169 + .../libc/musl/arch/mipsn32/bits/user.h | 15 + .../libc/musl/arch/mipsn32/crt_arch.h | 32 + .../libc/musl/arch/mipsn32/ksigaction.h | 10 + .../libc/musl/arch/mipsn32/kstat.h | 22 + .../libc/musl/arch/mipsn32/pthread_arch.h | 19 + .../libc/musl/arch/mipsn32/reloc.h | 50 + .../libc/musl/arch/mipsn32/syscall_arch.h | 130 + .../libc/musl/arch/or1k/atomic_arch.h | 14 + .../libc/musl/arch/or1k/bits/float.h | 16 + .../libc/musl/arch/or1k/bits/ipcstat.h | 1 + .../libc/musl/arch/or1k/bits/limits.h | 1 + .../libc/musl/arch/or1k/bits/msg.h | 18 + .../libc/musl/arch/or1k/bits/posix.h | 2 + .../libc/musl/arch/or1k/bits/reg.h | 3 + .../libc/musl/arch/or1k/bits/sem.h | 13 + .../libc/musl/arch/or1k/bits/setjmp.h | 1 + .../libc/musl/arch/or1k/bits/shm.h | 31 + .../libc/musl/arch/or1k/bits/signal.h | 85 + .../libc/musl/arch/or1k/bits/stat.h | 25 + .../libc/musl/arch/or1k/bits/stdint.h | 20 + .../libc/musl/arch/or1k/bits/user.h | 0 .../libc/musl/arch/or1k/crt_arch.h | 18 + .../modernc.org/libc/musl/arch/or1k/kstat.h | 21 + .../libc/musl/arch/or1k/pthread_arch.h | 18 + .../modernc.org/libc/musl/arch/or1k/reloc.h | 24 + .../libc/musl/arch/or1k/syscall_arch.h | 115 + .../libc/musl/arch/powerpc/atomic_arch.h | 38 + .../libc/musl/arch/powerpc/bits/errno.h | 134 + .../libc/musl/arch/powerpc/bits/fcntl.h | 40 + .../libc/musl/arch/powerpc/bits/fenv.h | 36 + .../libc/musl/arch/powerpc/bits/float.h | 16 + .../libc/musl/arch/powerpc/bits/hwcap.h | 43 + .../libc/musl/arch/powerpc/bits/ioctl.h | 120 + .../libc/musl/arch/powerpc/bits/ipc.h | 12 + .../libc/musl/arch/powerpc/bits/ipcstat.h | 1 + .../libc/musl/arch/powerpc/bits/mman.h | 13 + .../libc/musl/arch/powerpc/bits/msg.h | 18 + .../libc/musl/arch/powerpc/bits/posix.h | 2 + .../libc/musl/arch/powerpc/bits/ptrace.h | 25 + .../libc/musl/arch/powerpc/bits/reg.h | 3 + .../libc/musl/arch/powerpc/bits/sem.h | 12 + .../libc/musl/arch/powerpc/bits/setjmp.h | 1 + .../libc/musl/arch/powerpc/bits/shm.h | 30 + .../libc/musl/arch/powerpc/bits/signal.h | 119 + .../libc/musl/arch/powerpc/bits/socket.h | 25 + .../libc/musl/arch/powerpc/bits/stat.h | 24 + .../libc/musl/arch/powerpc/bits/stdint.h | 20 + .../libc/musl/arch/powerpc/bits/termios.h | 171 + .../libc/musl/arch/powerpc/bits/user.h | 23 + .../libc/musl/arch/powerpc/crt_arch.h | 20 + .../libc/musl/arch/powerpc/kstat.h | 20 + .../libc/musl/arch/powerpc/pthread_arch.h | 18 + .../libc/musl/arch/powerpc/reloc.h | 31 + .../libc/musl/arch/powerpc/syscall_arch.h | 94 + .../libc/musl/arch/powerpc64/atomic_arch.h | 62 + .../libc/musl/arch/powerpc64/bits/errno.h | 134 + .../libc/musl/arch/powerpc64/bits/fcntl.h | 40 + .../libc/musl/arch/powerpc64/bits/fenv.h | 31 + .../libc/musl/arch/powerpc64/bits/float.h | 16 + .../libc/musl/arch/powerpc64/bits/hwcap.h | 43 + .../libc/musl/arch/powerpc64/bits/ioctl.h | 120 + .../libc/musl/arch/powerpc64/bits/ipc.h | 12 + .../libc/musl/arch/powerpc64/bits/mman.h | 13 + .../libc/musl/arch/powerpc64/bits/posix.h | 2 + .../libc/musl/arch/powerpc64/bits/ptrace.h | 25 + .../libc/musl/arch/powerpc64/bits/reg.h | 3 + .../libc/musl/arch/powerpc64/bits/setjmp.h | 1 + .../libc/musl/arch/powerpc64/bits/shm.h | 23 + .../libc/musl/arch/powerpc64/bits/signal.h | 110 + .../libc/musl/arch/powerpc64/bits/socket.h | 27 + .../libc/musl/arch/powerpc64/bits/stat.h | 16 + .../libc/musl/arch/powerpc64/bits/stdint.h | 20 + .../libc/musl/arch/powerpc64/bits/termios.h | 171 + .../libc/musl/arch/powerpc64/bits/user.h | 23 + .../libc/musl/arch/powerpc64/crt_arch.h | 19 + .../libc/musl/arch/powerpc64/kstat.h | 19 + .../libc/musl/arch/powerpc64/pthread_arch.h | 18 + .../libc/musl/arch/powerpc64/reloc.h | 31 + .../libc/musl/arch/powerpc64/syscall_arch.h | 90 + .../libc/musl/arch/riscv64/atomic_arch.h | 38 + .../libc/musl/arch/riscv64/bits/fcntl.h | 38 + .../libc/musl/arch/riscv64/bits/fenv.h | 17 + .../libc/musl/arch/riscv64/bits/float.h | 16 + .../libc/musl/arch/riscv64/bits/posix.h | 2 + .../libc/musl/arch/riscv64/bits/reg.h | 2 + .../libc/musl/arch/riscv64/bits/setjmp.h | 1 + .../libc/musl/arch/riscv64/bits/signal.h | 118 + .../libc/musl/arch/riscv64/bits/stat.h | 18 + .../libc/musl/arch/riscv64/bits/stdint.h | 20 + .../libc/musl/arch/riscv64/bits/user.h | 5 + .../libc/musl/arch/riscv64/crt_arch.h | 19 + .../libc/musl/arch/riscv64/kstat.h | 21 + .../libc/musl/arch/riscv64/pthread_arch.h | 14 + .../libc/musl/arch/riscv64/reloc.h | 22 + .../libc/musl/arch/riscv64/syscall_arch.h | 78 + .../libc/musl/arch/s390x/atomic_arch.h | 30 + .../libc/musl/arch/s390x/bits/fcntl.h | 43 + .../libc/musl/arch/s390x/bits/fenv.h | 17 + .../libc/musl/arch/s390x/bits/float.h | 31 + .../libc/musl/arch/s390x/bits/hwcap.h | 15 + .../libc/musl/arch/s390x/bits/ioctl_fix.h | 2 + .../libc/musl/arch/s390x/bits/limits.h | 1 + .../libc/musl/arch/s390x/bits/link.h | 1 + .../libc/musl/arch/s390x/bits/posix.h | 2 + .../libc/musl/arch/s390x/bits/ptrace.h | 9 + .../libc/musl/arch/s390x/bits/reg.h | 2 + .../libc/musl/arch/s390x/bits/setjmp.h | 1 + .../libc/musl/arch/s390x/bits/signal.h | 121 + .../libc/musl/arch/s390x/bits/stat.h | 16 + .../libc/musl/arch/s390x/bits/statfs.h | 7 + .../libc/musl/arch/s390x/bits/stdint.h | 20 + .../libc/musl/arch/s390x/bits/user.h | 62 + .../libc/musl/arch/s390x/crt_arch.h | 17 + .../modernc.org/libc/musl/arch/s390x/kstat.h | 19 + .../libc/musl/arch/s390x/pthread_arch.h | 14 + .../modernc.org/libc/musl/arch/s390x/reloc.h | 13 + .../libc/musl/arch/s390x/syscall_arch.h | 76 + .../libc/musl/arch/sh/atomic_arch.h | 48 + .../modernc.org/libc/musl/arch/sh/bits/fenv.h | 26 + .../libc/musl/arch/sh/bits/float.h | 16 + .../libc/musl/arch/sh/bits/hwcap.h | 11 + .../libc/musl/arch/sh/bits/ioctl.h | 112 + .../libc/musl/arch/sh/bits/ipcstat.h | 1 + .../libc/musl/arch/sh/bits/limits.h | 1 + .../modernc.org/libc/musl/arch/sh/bits/msg.h | 18 + .../libc/musl/arch/sh/bits/posix.h | 2 + .../libc/musl/arch/sh/bits/ptrace.h | 5 + .../modernc.org/libc/musl/arch/sh/bits/sem.h | 18 + .../libc/musl/arch/sh/bits/setjmp.h | 1 + .../modernc.org/libc/musl/arch/sh/bits/shm.h | 31 + .../libc/musl/arch/sh/bits/signal.h | 87 + .../modernc.org/libc/musl/arch/sh/bits/stat.h | 25 + .../libc/musl/arch/sh/bits/stdint.h | 20 + .../modernc.org/libc/musl/arch/sh/bits/user.h | 51 + .../modernc.org/libc/musl/arch/sh/crt_arch.h | 78 + .../libc/musl/arch/sh/ksigaction.h | 10 + vendor/modernc.org/libc/musl/arch/sh/kstat.h | 21 + .../libc/musl/arch/sh/pthread_arch.h | 17 + vendor/modernc.org/libc/musl/arch/sh/reloc.h | 52 + .../libc/musl/arch/sh/syscall_arch.h | 93 + .../libc/musl/arch/x32/atomic_arch.h | 121 + .../libc/musl/arch/x32/bits/fcntl.h | 40 + .../libc/musl/arch/x32/bits/fenv.h | 34 + .../libc/musl/arch/x32/bits/float.h | 20 + .../modernc.org/libc/musl/arch/x32/bits/io.h | 77 + .../libc/musl/arch/x32/bits/ioctl_fix.h | 4 + .../modernc.org/libc/musl/arch/x32/bits/ipc.h | 11 + .../libc/musl/arch/x32/bits/limits.h | 1 + .../libc/musl/arch/x32/bits/mman.h | 1 + .../modernc.org/libc/musl/arch/x32/bits/msg.h | 15 + .../libc/musl/arch/x32/bits/posix.h | 2 + .../libc/musl/arch/x32/bits/ptrace.h | 13 + .../modernc.org/libc/musl/arch/x32/bits/reg.h | 29 + .../modernc.org/libc/musl/arch/x32/bits/sem.h | 11 + .../libc/musl/arch/x32/bits/setjmp.h | 1 + .../modernc.org/libc/musl/arch/x32/bits/shm.h | 32 + .../libc/musl/arch/x32/bits/signal.h | 153 + .../libc/musl/arch/x32/bits/socket.h | 5 + .../libc/musl/arch/x32/bits/stat.h | 22 + .../libc/musl/arch/x32/bits/statfs.h | 9 + .../libc/musl/arch/x32/bits/stdint.h | 20 + .../libc/musl/arch/x32/bits/user.h | 41 + .../modernc.org/libc/musl/arch/x32/crt_arch.h | 12 + .../libc/musl/arch/x32/ksigaction.h | 11 + vendor/modernc.org/libc/musl/arch/x32/kstat.h | 22 + .../libc/musl/arch/x32/pthread_arch.h | 14 + vendor/modernc.org/libc/musl/arch/x32/reloc.h | 31 + .../libc/musl/arch/x32/syscall_arch.h | 93 + .../libc/musl/arch/x86_64/atomic_arch.h | 123 + .../libc/musl/arch/x86_64/bits/fcntl.h | 40 + .../libc/musl/arch/x86_64/bits/fenv.h | 34 + .../libc/musl/arch/x86_64/bits/float.h | 35 + .../libc/musl/arch/x86_64/bits/io.h | 77 + .../libc/musl/arch/x86_64/bits/limits.h | 1 + .../libc/musl/arch/x86_64/bits/mman.h | 1 + .../libc/musl/arch/x86_64/bits/posix.h | 2 + .../libc/musl/arch/x86_64/bits/ptrace.h | 13 + .../libc/musl/arch/x86_64/bits/reg.h | 29 + .../libc/musl/arch/x86_64/bits/sem.h | 11 + .../libc/musl/arch/x86_64/bits/setjmp.h | 1 + .../libc/musl/arch/x86_64/bits/signal.h | 153 + .../libc/musl/arch/x86_64/bits/stat.h | 22 + .../libc/musl/arch/x86_64/bits/stdint.h | 20 + .../libc/musl/arch/x86_64/bits/user.h | 41 + .../libc/musl/arch/x86_64/crt_arch.h | 12 + .../libc/musl/arch/x86_64/ksigaction.h | 11 + .../modernc.org/libc/musl/arch/x86_64/kstat.h | 22 + .../libc/musl/arch/x86_64/pthread_arch.h | 10 + .../modernc.org/libc/musl/arch/x86_64/reloc.h | 20 + .../libc/musl/arch/x86_64/syscall_arch.h | 70 + .../libc/musl/compat/time32/__xstat.c | 24 + .../libc/musl/compat/time32/adjtime32.c | 21 + .../libc/musl/compat/time32/adjtimex_time32.c | 10 + .../musl/compat/time32/aio_suspend_time32.c | 11 + .../libc/musl/compat/time32/clock_adjtime32.c | 70 + .../musl/compat/time32/clock_getres_time32.c | 13 + .../libc/musl/compat/time32/clock_gettime32.c | 18 + .../compat/time32/clock_nanosleep_time32.c | 15 + .../libc/musl/compat/time32/clock_settime32.c | 9 + .../musl/compat/time32/cnd_timedwait_time32.c | 9 + .../libc/musl/compat/time32/ctime32.c | 7 + .../libc/musl/compat/time32/ctime32_r.c | 7 + .../libc/musl/compat/time32/difftime32.c | 7 + .../libc/musl/compat/time32/fstat_time32.c | 17 + .../libc/musl/compat/time32/fstatat_time32.c | 17 + .../libc/musl/compat/time32/ftime32.c | 25 + .../libc/musl/compat/time32/futimens_time32.c | 10 + .../libc/musl/compat/time32/futimes_time32.c | 12 + .../musl/compat/time32/futimesat_time32.c | 12 + .../musl/compat/time32/getitimer_time32.c | 15 + .../musl/compat/time32/getrusage_time32.c | 39 + .../musl/compat/time32/gettimeofday_time32.c | 19 + .../libc/musl/compat/time32/gmtime32.c | 7 + .../libc/musl/compat/time32/gmtime32_r.c | 7 + .../libc/musl/compat/time32/localtime32.c | 7 + .../libc/musl/compat/time32/localtime32_r.c | 7 + .../libc/musl/compat/time32/lstat_time32.c | 17 + .../libc/musl/compat/time32/lutimes_time32.c | 12 + .../libc/musl/compat/time32/mktime32.c | 16 + .../compat/time32/mq_timedreceive_time32.c | 9 + .../musl/compat/time32/mq_timedsend_time32.c | 9 + .../musl/compat/time32/mtx_timedlock_time32.c | 9 + .../musl/compat/time32/nanosleep_time32.c | 15 + .../libc/musl/compat/time32/ppoll_time32.c | 10 + .../libc/musl/compat/time32/pselect_time32.c | 9 + .../time32/pthread_cond_timedwait_time32.c | 9 + .../time32/pthread_mutex_timedlock_time32.c | 9 + .../pthread_rwlock_timedrdlock_time32.c | 9 + .../pthread_rwlock_timedwrlock_time32.c | 9 + .../time32/pthread_timedjoin_np_time32.c | 10 + .../libc/musl/compat/time32/recvmmsg_time32.c | 10 + .../time32/sched_rr_get_interval_time32.c | 13 + .../libc/musl/compat/time32/select_time32.c | 10 + .../musl/compat/time32/sem_timedwait_time32.c | 9 + .../musl/compat/time32/semtimedop_time32.c | 10 + .../musl/compat/time32/setitimer_time32.c | 25 + .../musl/compat/time32/settimeofday_time32.c | 10 + .../musl/compat/time32/sigtimedwait_time32.c | 9 + .../libc/musl/compat/time32/stat_time32.c | 17 + .../libc/musl/compat/time32/stime32.c | 8 + .../musl/compat/time32/thrd_sleep_time32.c | 16 + .../libc/musl/compat/time32/time32.c | 15 + .../libc/musl/compat/time32/time32.h | 91 + .../libc/musl/compat/time32/time32gm.c | 15 + .../libc/musl/compat/time32/timer_gettime32.c | 15 + .../libc/musl/compat/time32/timer_settime32.c | 25 + .../musl/compat/time32/timerfd_gettime32.c | 16 + .../musl/compat/time32/timerfd_settime32.c | 26 + .../musl/compat/time32/timespec_get_time32.c | 18 + .../libc/musl/compat/time32/utime_time32.c | 14 + .../musl/compat/time32/utimensat_time32.c | 11 + .../libc/musl/compat/time32/utimes_time32.c | 11 + .../libc/musl/compat/time32/wait3_time32.c | 40 + .../libc/musl/compat/time32/wait4_time32.c | 40 + vendor/modernc.org/libc/musl/copyright.c | 194 + vendor/modernc.org/libc/musl/crt/Scrt1.c | 1 + vendor/modernc.org/libc/musl/crt/crt1.c | 19 + vendor/modernc.org/libc/musl/crt/crti.c | 0 vendor/modernc.org/libc/musl/crt/crtn.c | 0 vendor/modernc.org/libc/musl/crt/rcrt1.c | 14 + vendor/modernc.org/libc/musl/include/aio.h | 73 + vendor/modernc.org/libc/musl/include/alloca.h | 19 + vendor/modernc.org/libc/musl/include/ar.h | 25 + .../modernc.org/libc/musl/include/arpa/ftp.h | 35 + .../modernc.org/libc/musl/include/arpa/inet.h | 31 + .../libc/musl/include/arpa/nameser.h | 455 ++ .../libc/musl/include/arpa/nameser_compat.h | 2 + .../libc/musl/include/arpa/telnet.h | 251 + .../modernc.org/libc/musl/include/arpa/tftp.h | 31 + vendor/modernc.org/libc/musl/include/assert.h | 23 + .../modernc.org/libc/musl/include/byteswap.h | 26 + .../modernc.org/libc/musl/include/complex.h | 133 + vendor/modernc.org/libc/musl/include/cpio.h | 29 + vendor/modernc.org/libc/musl/include/crypt.h | 20 + vendor/modernc.org/libc/musl/include/ctype.h | 75 + vendor/modernc.org/libc/musl/include/dirent.h | 75 + vendor/modernc.org/libc/musl/include/dlfcn.h | 46 + vendor/modernc.org/libc/musl/include/elf.h | 3292 +++++++++ vendor/modernc.org/libc/musl/include/endian.h | 80 + vendor/modernc.org/libc/musl/include/err.h | 25 + vendor/modernc.org/libc/musl/include/errno.h | 27 + vendor/modernc.org/libc/musl/include/fcntl.h | 216 + .../modernc.org/libc/musl/include/features.h | 40 + vendor/modernc.org/libc/musl/include/fenv.h | 28 + vendor/modernc.org/libc/musl/include/float.h | 52 + vendor/modernc.org/libc/musl/include/fmtmsg.h | 47 + .../modernc.org/libc/musl/include/fnmatch.h | 24 + vendor/modernc.org/libc/musl/include/ftw.h | 41 + vendor/modernc.org/libc/musl/include/getopt.h | 30 + vendor/modernc.org/libc/musl/include/glob.h | 52 + vendor/modernc.org/libc/musl/include/grp.h | 53 + vendor/modernc.org/libc/musl/include/iconv.h | 24 + .../modernc.org/libc/musl/include/ifaddrs.h | 35 + .../modernc.org/libc/musl/include/inttypes.h | 229 + vendor/modernc.org/libc/musl/include/iso646.h | 20 + .../modernc.org/libc/musl/include/langinfo.h | 98 + .../modernc.org/libc/musl/include/lastlog.h | 1 + vendor/modernc.org/libc/musl/include/libgen.h | 15 + .../modernc.org/libc/musl/include/libintl.h | 33 + vendor/modernc.org/libc/musl/include/limits.h | 166 + vendor/modernc.org/libc/musl/include/link.h | 53 + vendor/modernc.org/libc/musl/include/locale.h | 86 + vendor/modernc.org/libc/musl/include/malloc.h | 25 + vendor/modernc.org/libc/musl/include/math.h | 442 ++ vendor/modernc.org/libc/musl/include/memory.h | 1 + vendor/modernc.org/libc/musl/include/mntent.h | 43 + .../modernc.org/libc/musl/include/monetary.h | 23 + vendor/modernc.org/libc/musl/include/mqueue.h | 41 + .../libc/musl/include/net/ethernet.h | 55 + vendor/modernc.org/libc/musl/include/net/if.h | 141 + .../libc/musl/include/net/if_arp.h | 142 + .../modernc.org/libc/musl/include/net/route.h | 124 + vendor/modernc.org/libc/musl/include/netdb.h | 156 + .../libc/musl/include/netinet/ether.h | 22 + .../libc/musl/include/netinet/icmp6.h | 305 + .../libc/musl/include/netinet/if_ether.h | 147 + .../libc/musl/include/netinet/igmp.h | 45 + .../libc/musl/include/netinet/in.h | 413 ++ .../libc/musl/include/netinet/in_systm.h | 9 + .../libc/musl/include/netinet/ip.h | 199 + .../libc/musl/include/netinet/ip6.h | 141 + .../libc/musl/include/netinet/ip_icmp.h | 193 + .../libc/musl/include/netinet/tcp.h | 282 + .../libc/musl/include/netinet/udp.h | 45 + .../libc/musl/include/netpacket/packet.h | 62 + .../modernc.org/libc/musl/include/nl_types.h | 22 + vendor/modernc.org/libc/musl/include/paths.h | 31 + vendor/modernc.org/libc/musl/include/poll.h | 57 + .../modernc.org/libc/musl/include/pthread.h | 243 + vendor/modernc.org/libc/musl/include/pty.h | 18 + vendor/modernc.org/libc/musl/include/pwd.h | 50 + vendor/modernc.org/libc/musl/include/regex.h | 62 + vendor/modernc.org/libc/musl/include/resolv.h | 142 + vendor/modernc.org/libc/musl/include/sched.h | 147 + .../modernc.org/libc/musl/include/scsi/scsi.h | 150 + .../libc/musl/include/scsi/scsi_ioctl.h | 11 + .../modernc.org/libc/musl/include/scsi/sg.h | 129 + vendor/modernc.org/libc/musl/include/search.h | 63 + .../modernc.org/libc/musl/include/semaphore.h | 39 + vendor/modernc.org/libc/musl/include/setjmp.h | 41 + vendor/modernc.org/libc/musl/include/shadow.h | 44 + vendor/modernc.org/libc/musl/include/signal.h | 286 + vendor/modernc.org/libc/musl/include/spawn.h | 83 + .../modernc.org/libc/musl/include/stdalign.h | 20 + vendor/modernc.org/libc/musl/include/stdarg.h | 21 + .../modernc.org/libc/musl/include/stdbool.h | 14 + .../libc/musl/include/stdc-predef.h | 10 + vendor/modernc.org/libc/musl/include/stddef.h | 25 + vendor/modernc.org/libc/musl/include/stdint.h | 117 + vendor/modernc.org/libc/musl/include/stdio.h | 222 + .../modernc.org/libc/musl/include/stdio_ext.h | 34 + vendor/modernc.org/libc/musl/include/stdlib.h | 175 + .../libc/musl/include/stdnoreturn.h | 7 + vendor/modernc.org/libc/musl/include/string.h | 105 + .../modernc.org/libc/musl/include/strings.h | 39 + .../modernc.org/libc/musl/include/stropts.h | 139 + .../modernc.org/libc/musl/include/sys/acct.h | 72 + .../modernc.org/libc/musl/include/sys/auxv.h | 17 + .../libc/musl/include/sys/cachectl.h | 22 + .../modernc.org/libc/musl/include/sys/dir.h | 2 + .../modernc.org/libc/musl/include/sys/epoll.h | 69 + .../modernc.org/libc/musl/include/sys/errno.h | 2 + .../libc/musl/include/sys/eventfd.h | 26 + .../libc/musl/include/sys/fanotify.h | 105 + .../modernc.org/libc/musl/include/sys/fcntl.h | 2 + .../modernc.org/libc/musl/include/sys/file.h | 21 + .../modernc.org/libc/musl/include/sys/fsuid.h | 20 + .../libc/musl/include/sys/inotify.h | 58 + vendor/modernc.org/libc/musl/include/sys/io.h | 17 + .../modernc.org/libc/musl/include/sys/ioctl.h | 125 + .../modernc.org/libc/musl/include/sys/ipc.h | 42 + vendor/modernc.org/libc/musl/include/sys/kd.h | 1 + .../modernc.org/libc/musl/include/sys/klog.h | 14 + .../libc/musl/include/sys/membarrier.h | 17 + .../modernc.org/libc/musl/include/sys/mman.h | 150 + .../modernc.org/libc/musl/include/sys/mount.h | 74 + .../modernc.org/libc/musl/include/sys/msg.h | 53 + .../modernc.org/libc/musl/include/sys/mtio.h | 188 + .../modernc.org/libc/musl/include/sys/param.h | 35 + .../libc/musl/include/sys/personality.h | 46 + .../modernc.org/libc/musl/include/sys/poll.h | 2 + .../modernc.org/libc/musl/include/sys/prctl.h | 167 + .../libc/musl/include/sys/procfs.h | 63 + .../libc/musl/include/sys/ptrace.h | 138 + .../modernc.org/libc/musl/include/sys/quota.h | 102 + .../libc/musl/include/sys/random.h | 19 + .../libc/musl/include/sys/reboot.h | 20 + .../modernc.org/libc/musl/include/sys/reg.h | 9 + .../libc/musl/include/sys/resource.h | 116 + .../libc/musl/include/sys/select.h | 46 + .../modernc.org/libc/musl/include/sys/sem.h | 72 + .../libc/musl/include/sys/sendfile.h | 22 + .../modernc.org/libc/musl/include/sys/shm.h | 70 + .../libc/musl/include/sys/signal.h | 2 + .../libc/musl/include/sys/signalfd.h | 49 + .../libc/musl/include/sys/socket.h | 413 ++ .../libc/musl/include/sys/soundcard.h | 1 + .../modernc.org/libc/musl/include/sys/stat.h | 127 + .../libc/musl/include/sys/statfs.h | 32 + .../libc/musl/include/sys/statvfs.h | 56 + .../libc/musl/include/sys/stropts.h | 1 + .../modernc.org/libc/musl/include/sys/swap.h | 21 + .../libc/musl/include/sys/syscall.h | 6 + .../libc/musl/include/sys/sysinfo.h | 36 + .../libc/musl/include/sys/syslog.h | 1 + .../libc/musl/include/sys/sysmacros.h | 15 + .../libc/musl/include/sys/termios.h | 2 + .../modernc.org/libc/musl/include/sys/time.h | 76 + .../modernc.org/libc/musl/include/sys/timeb.h | 28 + .../libc/musl/include/sys/timerfd.h | 32 + .../modernc.org/libc/musl/include/sys/times.h | 25 + .../modernc.org/libc/musl/include/sys/timex.h | 103 + .../libc/musl/include/sys/ttydefaults.h | 34 + .../modernc.org/libc/musl/include/sys/types.h | 85 + .../libc/musl/include/sys/ucontext.h | 1 + .../modernc.org/libc/musl/include/sys/uio.h | 48 + vendor/modernc.org/libc/musl/include/sys/un.h | 31 + .../modernc.org/libc/musl/include/sys/user.h | 16 + .../libc/musl/include/sys/utsname.h | 29 + .../modernc.org/libc/musl/include/sys/vfs.h | 1 + vendor/modernc.org/libc/musl/include/sys/vt.h | 1 + .../modernc.org/libc/musl/include/sys/wait.h | 67 + .../modernc.org/libc/musl/include/sys/xattr.h | 32 + .../modernc.org/libc/musl/include/syscall.h | 1 + .../modernc.org/libc/musl/include/sysexits.h | 21 + vendor/modernc.org/libc/musl/include/syslog.h | 100 + vendor/modernc.org/libc/musl/include/tar.h | 33 + .../modernc.org/libc/musl/include/termios.h | 46 + vendor/modernc.org/libc/musl/include/tgmath.h | 270 + .../modernc.org/libc/musl/include/threads.h | 93 + vendor/modernc.org/libc/musl/include/time.h | 166 + vendor/modernc.org/libc/musl/include/uchar.h | 29 + .../modernc.org/libc/musl/include/ucontext.h | 25 + vendor/modernc.org/libc/musl/include/ulimit.h | 17 + vendor/modernc.org/libc/musl/include/unistd.h | 469 ++ vendor/modernc.org/libc/musl/include/utime.h | 29 + vendor/modernc.org/libc/musl/include/utmp.h | 52 + vendor/modernc.org/libc/musl/include/utmpx.h | 67 + vendor/modernc.org/libc/musl/include/values.h | 39 + vendor/modernc.org/libc/musl/include/wait.h | 2 + vendor/modernc.org/libc/musl/include/wchar.h | 205 + vendor/modernc.org/libc/musl/include/wctype.h | 79 + .../modernc.org/libc/musl/include/wordexp.h | 41 + vendor/modernc.org/libc/musl/ldso/dlstart.c | 148 + vendor/modernc.org/libc/musl/ldso/dynlink.c | 2313 +++++++ vendor/modernc.org/libc/musl/src/aio/aio.c | 400 ++ .../libc/musl/src/aio/aio_suspend.c | 78 + .../libc/musl/src/aio/lio_listio.c | 143 + .../libc/musl/src/complex/__cexp.c | 87 + .../libc/musl/src/complex/__cexpf.c | 68 + .../modernc.org/libc/musl/src/complex/cabs.c | 6 + .../modernc.org/libc/musl/src/complex/cabsf.c | 6 + .../modernc.org/libc/musl/src/complex/cabsl.c | 13 + .../modernc.org/libc/musl/src/complex/cacos.c | 11 + .../libc/musl/src/complex/cacosf.c | 9 + .../libc/musl/src/complex/cacosh.c | 12 + .../libc/musl/src/complex/cacoshf.c | 10 + .../libc/musl/src/complex/cacoshl.c | 17 + .../libc/musl/src/complex/cacosl.c | 16 + .../modernc.org/libc/musl/src/complex/carg.c | 6 + .../modernc.org/libc/musl/src/complex/cargf.c | 6 + .../modernc.org/libc/musl/src/complex/cargl.c | 13 + .../modernc.org/libc/musl/src/complex/casin.c | 17 + .../libc/musl/src/complex/casinf.c | 15 + .../libc/musl/src/complex/casinh.c | 9 + .../libc/musl/src/complex/casinhf.c | 7 + .../libc/musl/src/complex/casinhl.c | 14 + .../libc/musl/src/complex/casinl.c | 21 + .../modernc.org/libc/musl/src/complex/catan.c | 107 + .../libc/musl/src/complex/catanf.c | 103 + .../libc/musl/src/complex/catanh.c | 9 + .../libc/musl/src/complex/catanhf.c | 7 + .../libc/musl/src/complex/catanhl.c | 14 + .../libc/musl/src/complex/catanl.c | 114 + .../modernc.org/libc/musl/src/complex/ccos.c | 8 + .../modernc.org/libc/musl/src/complex/ccosf.c | 6 + .../modernc.org/libc/musl/src/complex/ccosh.c | 140 + .../libc/musl/src/complex/ccoshf.c | 90 + .../libc/musl/src/complex/ccoshl.c | 7 + .../modernc.org/libc/musl/src/complex/ccosl.c | 13 + .../modernc.org/libc/musl/src/complex/cexp.c | 83 + .../modernc.org/libc/musl/src/complex/cexpf.c | 83 + .../modernc.org/libc/musl/src/complex/cexpl.c | 7 + .../modernc.org/libc/musl/src/complex/cimag.c | 6 + .../libc/musl/src/complex/cimagf.c | 6 + .../libc/musl/src/complex/cimagl.c | 6 + .../modernc.org/libc/musl/src/complex/clog.c | 14 + .../modernc.org/libc/musl/src/complex/clogf.c | 12 + .../modernc.org/libc/musl/src/complex/clogl.c | 18 + .../modernc.org/libc/musl/src/complex/conj.c | 6 + .../modernc.org/libc/musl/src/complex/conjf.c | 6 + .../modernc.org/libc/musl/src/complex/conjl.c | 6 + .../modernc.org/libc/musl/src/complex/cpow.c | 8 + .../modernc.org/libc/musl/src/complex/cpowf.c | 6 + .../modernc.org/libc/musl/src/complex/cpowl.c | 13 + .../modernc.org/libc/musl/src/complex/cproj.c | 8 + .../libc/musl/src/complex/cprojf.c | 8 + .../libc/musl/src/complex/cprojl.c | 15 + .../modernc.org/libc/musl/src/complex/creal.c | 6 + .../libc/musl/src/complex/crealf.c | 6 + .../libc/musl/src/complex/creall.c | 6 + .../modernc.org/libc/musl/src/complex/csin.c | 9 + .../modernc.org/libc/musl/src/complex/csinf.c | 7 + .../modernc.org/libc/musl/src/complex/csinh.c | 141 + .../libc/musl/src/complex/csinhf.c | 90 + .../libc/musl/src/complex/csinhl.c | 7 + .../modernc.org/libc/musl/src/complex/csinl.c | 14 + .../modernc.org/libc/musl/src/complex/csqrt.c | 100 + .../libc/musl/src/complex/csqrtf.c | 82 + .../libc/musl/src/complex/csqrtl.c | 7 + .../modernc.org/libc/musl/src/complex/ctan.c | 9 + .../modernc.org/libc/musl/src/complex/ctanf.c | 7 + .../modernc.org/libc/musl/src/complex/ctanh.c | 129 + .../libc/musl/src/complex/ctanhf.c | 66 + .../libc/musl/src/complex/ctanhl.c | 7 + .../modernc.org/libc/musl/src/complex/ctanl.c | 14 + .../modernc.org/libc/musl/src/conf/confstr.c | 17 + .../libc/musl/src/conf/fpathconf.c | 35 + .../modernc.org/libc/musl/src/conf/legacy.c | 22 + .../modernc.org/libc/musl/src/conf/pathconf.c | 6 + .../modernc.org/libc/musl/src/conf/sysconf.c | 219 + .../modernc.org/libc/musl/src/crypt/crypt.c | 14 + .../libc/musl/src/crypt/crypt_blowfish.c | 798 +++ .../libc/musl/src/crypt/crypt_des.c | 1016 +++ .../libc/musl/src/crypt/crypt_des.h | 14 + .../libc/musl/src/crypt/crypt_md5.c | 285 + .../modernc.org/libc/musl/src/crypt/crypt_r.c | 23 + .../libc/musl/src/crypt/crypt_sha256.c | 322 + .../libc/musl/src/crypt/crypt_sha512.c | 371 + .../modernc.org/libc/musl/src/crypt/encrypt.c | 52 + .../libc/musl/src/ctype/__ctype_b_loc.c | 41 + .../musl/src/ctype/__ctype_get_mb_cur_max.c | 7 + .../libc/musl/src/ctype/__ctype_tolower_loc.c | 30 + .../libc/musl/src/ctype/__ctype_toupper_loc.c | 30 + .../modernc.org/libc/musl/src/ctype/alpha.h | 172 + .../modernc.org/libc/musl/src/ctype/casemap.h | 297 + .../modernc.org/libc/musl/src/ctype/isalnum.c | 13 + .../modernc.org/libc/musl/src/ctype/isalpha.c | 14 + .../modernc.org/libc/musl/src/ctype/isascii.c | 7 + .../modernc.org/libc/musl/src/ctype/isblank.c | 13 + .../modernc.org/libc/musl/src/ctype/iscntrl.c | 13 + .../modernc.org/libc/musl/src/ctype/isdigit.c | 14 + .../modernc.org/libc/musl/src/ctype/isgraph.c | 14 + .../modernc.org/libc/musl/src/ctype/islower.c | 14 + .../modernc.org/libc/musl/src/ctype/isprint.c | 14 + .../modernc.org/libc/musl/src/ctype/ispunct.c | 13 + .../modernc.org/libc/musl/src/ctype/isspace.c | 14 + .../modernc.org/libc/musl/src/ctype/isupper.c | 14 + .../libc/musl/src/ctype/iswalnum.c | 13 + .../libc/musl/src/ctype/iswalpha.c | 21 + .../libc/musl/src/ctype/iswblank.c | 14 + .../libc/musl/src/ctype/iswcntrl.c | 16 + .../libc/musl/src/ctype/iswctype.c | 75 + .../libc/musl/src/ctype/iswdigit.c | 15 + .../libc/musl/src/ctype/iswgraph.c | 14 + .../libc/musl/src/ctype/iswlower.c | 13 + .../libc/musl/src/ctype/iswprint.c | 26 + .../libc/musl/src/ctype/iswpunct.c | 19 + .../libc/musl/src/ctype/iswspace.c | 24 + .../libc/musl/src/ctype/iswupper.c | 13 + .../libc/musl/src/ctype/iswxdigit.c | 13 + .../libc/musl/src/ctype/isxdigit.c | 13 + .../libc/musl/src/ctype/nonspacing.h | 89 + .../modernc.org/libc/musl/src/ctype/punct.h | 141 + .../modernc.org/libc/musl/src/ctype/toascii.c | 7 + .../modernc.org/libc/musl/src/ctype/tolower.c | 14 + .../modernc.org/libc/musl/src/ctype/toupper.c | 14 + .../libc/musl/src/ctype/towctrans.c | 84 + .../libc/musl/src/ctype/wcswidth.c | 8 + .../modernc.org/libc/musl/src/ctype/wctrans.c | 29 + .../modernc.org/libc/musl/src/ctype/wcwidth.c | 29 + vendor/modernc.org/libc/musl/src/ctype/wide.h | 65 + .../libc/musl/src/dirent/__dirent.h | 11 + .../libc/musl/src/dirent/alphasort.c | 9 + .../libc/musl/src/dirent/closedir.c | 11 + .../modernc.org/libc/musl/src/dirent/dirfd.c | 7 + .../libc/musl/src/dirent/fdopendir.c | 31 + .../libc/musl/src/dirent/opendir.c | 21 + .../libc/musl/src/dirent/readdir.c | 29 + .../libc/musl/src/dirent/readdir_r.c | 29 + .../libc/musl/src/dirent/rewinddir.c | 13 + .../libc/musl/src/dirent/scandir.c | 47 + .../libc/musl/src/dirent/seekdir.c | 12 + .../libc/musl/src/dirent/telldir.c | 7 + .../libc/musl/src/dirent/versionsort.c | 11 + .../modernc.org/libc/musl/src/env/__environ.c | 6 + .../libc/musl/src/env/__init_tls.c | 153 + .../libc/musl/src/env/__libc_start_main.c | 96 + .../libc/musl/src/env/__reset_tls.c | 15 + .../libc/musl/src/env/__stack_chk_fail.c | 22 + .../modernc.org/libc/musl/src/env/clearenv.c | 14 + vendor/modernc.org/libc/musl/src/env/getenv.c | 13 + vendor/modernc.org/libc/musl/src/env/putenv.c | 48 + .../libc/musl/src/env/secure_getenv.c | 8 + vendor/modernc.org/libc/musl/src/env/setenv.c | 44 + .../modernc.org/libc/musl/src/env/unsetenv.c | 29 + .../libc/musl/src/errno/__errno_location.c | 9 + .../libc/musl/src/errno/__strerror.h | 104 + .../libc/musl/src/errno/strerror.c | 47 + vendor/modernc.org/libc/musl/src/exit/_Exit.c | 8 + vendor/modernc.org/libc/musl/src/exit/abort.c | 32 + .../libc/musl/src/exit/arm/__aeabi_atexit.c | 6 + .../modernc.org/libc/musl/src/exit/assert.c | 9 + .../libc/musl/src/exit/at_quick_exit.c | 31 + .../modernc.org/libc/musl/src/exit/atexit.c | 72 + vendor/modernc.org/libc/musl/src/exit/exit.c | 33 + .../libc/musl/src/exit/quick_exit.c | 11 + .../modernc.org/libc/musl/src/fcntl/creat.c | 8 + .../modernc.org/libc/musl/src/fcntl/fcntl.c | 48 + vendor/modernc.org/libc/musl/src/fcntl/open.c | 23 + .../modernc.org/libc/musl/src/fcntl/openat.c | 19 + .../libc/musl/src/fcntl/posix_fadvise.c | 18 + .../libc/musl/src/fcntl/posix_fallocate.c | 10 + .../libc/musl/src/fenv/__flt_rounds.c | 19 + .../modernc.org/libc/musl/src/fenv/arm/fenv.c | 3 + .../libc/musl/src/fenv/fegetexceptflag.c | 7 + .../libc/musl/src/fenv/feholdexcept.c | 8 + vendor/modernc.org/libc/musl/src/fenv/fenv.c | 38 + .../libc/musl/src/fenv/fesetexceptflag.c | 8 + .../libc/musl/src/fenv/fesetround.c | 23 + .../libc/musl/src/fenv/feupdateenv.c | 9 + .../libc/musl/src/fenv/m68k/fenv.c | 85 + .../libc/musl/src/fenv/mips/fenv-sf.c | 3 + .../libc/musl/src/fenv/mips64/fenv-sf.c | 3 + .../libc/musl/src/fenv/mipsn32/fenv-sf.c | 3 + .../libc/musl/src/fenv/powerpc/fenv-sf.c | 3 + .../libc/musl/src/fenv/powerpc64/fenv.c | 69 + .../libc/musl/src/fenv/riscv64/fenv-sf.c | 3 + .../libc/musl/src/fenv/s390x/fenv.c | 56 + .../libc/musl/src/fenv/sh/fenv-nofpu.c | 3 + .../libc/musl/src/include/arpa/inet.h | 8 + .../modernc.org/libc/musl/src/include/crypt.h | 16 + .../modernc.org/libc/musl/src/include/errno.h | 14 + .../libc/musl/src/include/features.h | 11 + .../libc/musl/src/include/langinfo.h | 8 + .../libc/musl/src/include/pthread.h | 29 + .../libc/musl/src/include/resolv.h | 12 + .../libc/musl/src/include/signal.h | 14 + .../modernc.org/libc/musl/src/include/stdio.h | 20 + .../libc/musl/src/include/stdlib.h | 12 + .../libc/musl/src/include/string.h | 11 + .../libc/musl/src/include/sys/auxv.h | 10 + .../libc/musl/src/include/sys/membarrier.h | 9 + .../libc/musl/src/include/sys/mman.h | 20 + .../libc/musl/src/include/sys/sysinfo.h | 9 + .../libc/musl/src/include/sys/time.h | 8 + .../modernc.org/libc/musl/src/include/time.h | 15 + .../libc/musl/src/include/unistd.h | 14 + .../modernc.org/libc/musl/src/include/wchar.h | 9 + .../libc/musl/src/internal/atomic.h | 333 + .../libc/musl/src/internal/complex_impl.h | 22 + .../libc/musl/src/internal/defsysinfo.c | 3 + .../libc/musl/src/internal/dynlink.h | 113 + .../libc/musl/src/internal/fdpic_crt.h | 28 + .../libc/musl/src/internal/floatscan.c | 508 ++ .../libc/musl/src/internal/floatscan.h | 8 + .../libc/musl/src/internal/futex.h | 19 + .../libc/musl/src/internal/intscan.c | 100 + .../libc/musl/src/internal/intscan.h | 8 + .../libc/musl/src/internal/ksigaction.h | 13 + .../modernc.org/libc/musl/src/internal/libc.c | 9 + .../modernc.org/libc/musl/src/internal/libc.h | 58 + .../modernc.org/libc/musl/src/internal/libm.h | 271 + .../libc/musl/src/internal/locale_impl.h | 45 + .../modernc.org/libc/musl/src/internal/lock.h | 9 + .../libc/musl/src/internal/procfdname.c | 15 + .../libc/musl/src/internal/pthread_impl.h | 190 + .../libc/musl/src/internal/sh/__shcall.c | 6 + .../libc/musl/src/internal/shgetc.c | 37 + .../libc/musl/src/internal/shgetc.h | 32 + .../libc/musl/src/internal/stdio_impl.h | 112 + .../libc/musl/src/internal/syscall.h | 384 ++ .../libc/musl/src/internal/syscall_ret.c | 11 + .../modernc.org/libc/musl/src/internal/vdso.c | 93 + .../libc/musl/src/internal/version.c | 4 + vendor/modernc.org/libc/musl/src/ipc/ftok.c | 10 + vendor/modernc.org/libc/musl/src/ipc/ipc.h | 24 + vendor/modernc.org/libc/musl/src/ipc/msgctl.c | 51 + vendor/modernc.org/libc/musl/src/ipc/msgget.c | 12 + vendor/modernc.org/libc/musl/src/ipc/msgrcv.c | 12 + vendor/modernc.org/libc/musl/src/ipc/msgsnd.c | 12 + vendor/modernc.org/libc/musl/src/ipc/semctl.c | 69 + vendor/modernc.org/libc/musl/src/ipc/semget.c | 19 + vendor/modernc.org/libc/musl/src/ipc/semop.c | 12 + .../libc/musl/src/ipc/semtimedop.c | 35 + vendor/modernc.org/libc/musl/src/ipc/shmat.c | 17 + vendor/modernc.org/libc/musl/src/ipc/shmctl.c | 51 + vendor/modernc.org/libc/musl/src/ipc/shmdt.c | 12 + vendor/modernc.org/libc/musl/src/ipc/shmget.c | 14 + .../modernc.org/libc/musl/src/ldso/__dlsym.c | 14 + .../libc/musl/src/ldso/arm/find_exidx.c | 42 + .../libc/musl/src/ldso/dl_iterate_phdr.c | 46 + .../modernc.org/libc/musl/src/ldso/dladdr.c | 9 + .../modernc.org/libc/musl/src/ldso/dlclose.c | 7 + .../modernc.org/libc/musl/src/ldso/dlerror.c | 77 + .../modernc.org/libc/musl/src/ldso/dlinfo.c | 14 + .../modernc.org/libc/musl/src/ldso/dlopen.c | 10 + vendor/modernc.org/libc/musl/src/ldso/dlsym.c | 7 + .../modernc.org/libc/musl/src/ldso/tlsdesc.c | 9 + .../libc/musl/src/legacy/cuserid.c | 14 + .../modernc.org/libc/musl/src/legacy/daemon.c | 33 + vendor/modernc.org/libc/musl/src/legacy/err.c | 67 + .../libc/musl/src/legacy/euidaccess.c | 10 + vendor/modernc.org/libc/musl/src/legacy/ftw.c | 11 + .../libc/musl/src/legacy/futimes.c | 14 + .../libc/musl/src/legacy/getdtablesize.c | 11 + .../libc/musl/src/legacy/getloadavg.c | 14 + .../libc/musl/src/legacy/getpagesize.c | 8 + .../libc/musl/src/legacy/getpass.c | 40 + .../libc/musl/src/legacy/getusershell.c | 32 + .../libc/musl/src/legacy/isastream.c | 7 + .../libc/musl/src/legacy/lutimes.c | 14 + .../modernc.org/libc/musl/src/legacy/ulimit.c | 19 + .../modernc.org/libc/musl/src/legacy/utmpx.c | 52 + .../modernc.org/libc/musl/src/legacy/valloc.c | 8 + .../modernc.org/libc/musl/src/linux/adjtime.c | 27 + .../libc/musl/src/linux/adjtimex.c | 7 + .../libc/musl/src/linux/arch_prctl.c | 7 + vendor/modernc.org/libc/musl/src/linux/brk.c | 9 + .../modernc.org/libc/musl/src/linux/cache.c | 50 + vendor/modernc.org/libc/musl/src/linux/cap.c | 11 + .../modernc.org/libc/musl/src/linux/chroot.c | 8 + .../libc/musl/src/linux/clock_adjtime.c | 151 + .../modernc.org/libc/musl/src/linux/clone.c | 21 + .../libc/musl/src/linux/copy_file_range.c | 8 + .../modernc.org/libc/musl/src/linux/epoll.c | 37 + .../modernc.org/libc/musl/src/linux/eventfd.c | 23 + .../libc/musl/src/linux/fallocate.c | 12 + .../libc/musl/src/linux/fanotify.c | 14 + .../modernc.org/libc/musl/src/linux/flock.c | 7 + .../libc/musl/src/linux/getdents.c | 12 + .../libc/musl/src/linux/getrandom.c | 7 + .../modernc.org/libc/musl/src/linux/inotify.c | 26 + .../modernc.org/libc/musl/src/linux/ioperm.c | 10 + vendor/modernc.org/libc/musl/src/linux/iopl.c | 10 + .../modernc.org/libc/musl/src/linux/klogctl.c | 7 + .../libc/musl/src/linux/membarrier.c | 77 + .../libc/musl/src/linux/memfd_create.c | 8 + .../modernc.org/libc/musl/src/linux/mlock2.c | 10 + .../modernc.org/libc/musl/src/linux/module.c | 11 + .../modernc.org/libc/musl/src/linux/mount.c | 17 + .../libc/musl/src/linux/name_to_handle_at.c | 10 + .../libc/musl/src/linux/open_by_handle_at.c | 8 + .../libc/musl/src/linux/personality.c | 8 + .../libc/musl/src/linux/pivot_root.c | 6 + .../modernc.org/libc/musl/src/linux/ppoll.c | 26 + .../modernc.org/libc/musl/src/linux/prctl.c | 14 + .../modernc.org/libc/musl/src/linux/prlimit.c | 26 + .../libc/musl/src/linux/process_vm.c | 13 + .../modernc.org/libc/musl/src/linux/ptrace.c | 29 + .../libc/musl/src/linux/quotactl.c | 7 + .../libc/musl/src/linux/readahead.c | 8 + .../modernc.org/libc/musl/src/linux/reboot.c | 7 + .../libc/musl/src/linux/remap_file_pages.c | 8 + vendor/modernc.org/libc/musl/src/linux/sbrk.c | 11 + .../libc/musl/src/linux/sendfile.c | 9 + .../libc/musl/src/linux/setfsgid.c | 7 + .../libc/musl/src/linux/setfsuid.c | 7 + .../libc/musl/src/linux/setgroups.c | 8 + .../libc/musl/src/linux/sethostname.c | 8 + .../modernc.org/libc/musl/src/linux/setns.c | 8 + .../libc/musl/src/linux/settimeofday.c | 13 + .../libc/musl/src/linux/signalfd.c | 21 + .../modernc.org/libc/musl/src/linux/splice.c | 8 + .../modernc.org/libc/musl/src/linux/stime.c | 9 + vendor/modernc.org/libc/musl/src/linux/swap.c | 12 + .../libc/musl/src/linux/sync_file_range.c | 17 + .../modernc.org/libc/musl/src/linux/syncfs.c | 8 + .../modernc.org/libc/musl/src/linux/sysinfo.c | 9 + vendor/modernc.org/libc/musl/src/linux/tee.c | 8 + .../modernc.org/libc/musl/src/linux/timerfd.c | 59 + .../modernc.org/libc/musl/src/linux/unshare.c | 8 + .../modernc.org/libc/musl/src/linux/utimes.c | 8 + .../modernc.org/libc/musl/src/linux/vhangup.c | 8 + .../libc/musl/src/linux/vmsplice.c | 8 + .../modernc.org/libc/musl/src/linux/wait3.c | 9 + .../modernc.org/libc/musl/src/linux/wait4.c | 39 + .../libc/musl/src/linux/x32/sysinfo.c | 49 + .../modernc.org/libc/musl/src/linux/xattr.c | 62 + .../libc/musl/src/locale/__lctrans.c | 19 + .../libc/musl/src/locale/__mo_lookup.c | 42 + .../modernc.org/libc/musl/src/locale/big5.h | 1085 +++ .../musl/src/locale/bind_textdomain_codeset.c | 11 + .../libc/musl/src/locale/c_locale.c | 15 + .../libc/musl/src/locale/catclose.c | 14 + .../libc/musl/src/locale/catgets.c | 38 + .../libc/musl/src/locale/catopen.c | 79 + .../libc/musl/src/locale/codepages.h | 320 + .../libc/musl/src/locale/dcngettext.c | 272 + .../libc/musl/src/locale/duplocale.c | 15 + .../libc/musl/src/locale/freelocale.c | 9 + .../libc/musl/src/locale/gb18030.h | 1866 +++++ .../modernc.org/libc/musl/src/locale/hkscs.h | 390 ++ .../modernc.org/libc/musl/src/locale/iconv.c | 685 ++ .../libc/musl/src/locale/iconv_close.c | 8 + .../libc/musl/src/locale/jis0208.h | 563 ++ vendor/modernc.org/libc/musl/src/locale/ksc.h | 650 ++ .../libc/musl/src/locale/langinfo.c | 73 + .../libc/musl/src/locale/legacychars.h | 40 + .../libc/musl/src/locale/locale_map.c | 113 + .../libc/musl/src/locale/localeconv.c | 34 + .../libc/musl/src/locale/newlocale.c | 58 + .../modernc.org/libc/musl/src/locale/pleval.c | 158 + .../modernc.org/libc/musl/src/locale/pleval.h | 8 + .../modernc.org/libc/musl/src/locale/revjis.h | 515 ++ .../libc/musl/src/locale/setlocale.c | 79 + .../libc/musl/src/locale/strcoll.c | 15 + .../libc/musl/src/locale/strfmon.c | 101 + .../libc/musl/src/locale/strxfrm.c | 18 + .../libc/musl/src/locale/textdomain.c | 42 + .../libc/musl/src/locale/uselocale.c | 16 + .../libc/musl/src/locale/wcscoll.c | 16 + .../libc/musl/src/locale/wcsxfrm.c | 23 + .../modernc.org/libc/musl/src/malloc/calloc.c | 45 + .../libc/musl/src/malloc/lite_malloc.c | 103 + .../musl/src/malloc/mallocng/aligned_alloc.c | 57 + .../libc/musl/src/malloc/mallocng/donate.c | 39 + .../libc/musl/src/malloc/mallocng/free.c | 143 + .../libc/musl/src/malloc/mallocng/glue.h | 77 + .../libc/musl/src/malloc/mallocng/malloc.c | 387 ++ .../src/malloc/mallocng/malloc_usable_size.c | 12 + .../libc/musl/src/malloc/mallocng/meta.h | 288 + .../libc/musl/src/malloc/mallocng/realloc.c | 51 + .../libc/musl/src/malloc/memalign.c | 7 + .../musl/src/malloc/oldmalloc/aligned_alloc.c | 53 + .../libc/musl/src/malloc/oldmalloc/malloc.c | 529 ++ .../musl/src/malloc/oldmalloc/malloc_impl.h | 39 + .../src/malloc/oldmalloc/malloc_usable_size.c | 9 + .../libc/musl/src/malloc/posix_memalign.c | 11 + .../libc/musl/src/malloc/replaced.c | 4 + vendor/modernc.org/libc/musl/src/math/__cos.c | 71 + .../modernc.org/libc/musl/src/math/__cosdf.c | 35 + .../modernc.org/libc/musl/src/math/__cosl.c | 96 + .../modernc.org/libc/musl/src/math/__expo2.c | 17 + .../modernc.org/libc/musl/src/math/__expo2f.c | 17 + .../libc/musl/src/math/__fpclassify.c | 11 + .../libc/musl/src/math/__fpclassifyf.c | 11 + .../libc/musl/src/math/__fpclassifyl.c | 42 + .../libc/musl/src/math/__invtrigl.c | 63 + .../libc/musl/src/math/__invtrigl.h | 8 + .../libc/musl/src/math/__math_divzero.c | 6 + .../libc/musl/src/math/__math_divzerof.c | 6 + .../libc/musl/src/math/__math_invalid.c | 6 + .../libc/musl/src/math/__math_invalidf.c | 6 + .../libc/musl/src/math/__math_oflow.c | 6 + .../libc/musl/src/math/__math_oflowf.c | 6 + .../libc/musl/src/math/__math_uflow.c | 6 + .../libc/musl/src/math/__math_uflowf.c | 6 + .../libc/musl/src/math/__math_xflow.c | 6 + .../libc/musl/src/math/__math_xflowf.c | 6 + .../libc/musl/src/math/__polevll.c | 93 + .../libc/musl/src/math/__rem_pio2.c | 190 + .../libc/musl/src/math/__rem_pio2_large.c | 442 ++ .../libc/musl/src/math/__rem_pio2f.c | 86 + .../libc/musl/src/math/__rem_pio2l.c | 155 + .../libc/musl/src/math/__signbit.c | 13 + .../libc/musl/src/math/__signbitf.c | 11 + .../libc/musl/src/math/__signbitl.c | 14 + vendor/modernc.org/libc/musl/src/math/__sin.c | 64 + .../modernc.org/libc/musl/src/math/__sindf.c | 36 + .../modernc.org/libc/musl/src/math/__sinl.c | 78 + vendor/modernc.org/libc/musl/src/math/__tan.c | 110 + .../modernc.org/libc/musl/src/math/__tandf.c | 54 + .../modernc.org/libc/musl/src/math/__tanl.c | 143 + .../libc/musl/src/math/aarch64/ceil.c | 7 + .../libc/musl/src/math/aarch64/ceilf.c | 7 + .../libc/musl/src/math/aarch64/fabs.c | 7 + .../libc/musl/src/math/aarch64/fabsf.c | 7 + .../libc/musl/src/math/aarch64/floor.c | 7 + .../libc/musl/src/math/aarch64/floorf.c | 7 + .../libc/musl/src/math/aarch64/fma.c | 7 + .../libc/musl/src/math/aarch64/fmaf.c | 7 + .../libc/musl/src/math/aarch64/fmax.c | 7 + .../libc/musl/src/math/aarch64/fmaxf.c | 7 + .../libc/musl/src/math/aarch64/fmin.c | 7 + .../libc/musl/src/math/aarch64/fminf.c | 7 + .../libc/musl/src/math/aarch64/llrint.c | 10 + .../libc/musl/src/math/aarch64/llrintf.c | 10 + .../libc/musl/src/math/aarch64/llround.c | 8 + .../libc/musl/src/math/aarch64/llroundf.c | 8 + .../libc/musl/src/math/aarch64/lrint.c | 10 + .../libc/musl/src/math/aarch64/lrintf.c | 10 + .../libc/musl/src/math/aarch64/lround.c | 8 + .../libc/musl/src/math/aarch64/lroundf.c | 8 + .../libc/musl/src/math/aarch64/nearbyint.c | 7 + .../libc/musl/src/math/aarch64/nearbyintf.c | 7 + .../libc/musl/src/math/aarch64/rint.c | 7 + .../libc/musl/src/math/aarch64/rintf.c | 7 + .../libc/musl/src/math/aarch64/round.c | 7 + .../libc/musl/src/math/aarch64/roundf.c | 7 + .../libc/musl/src/math/aarch64/sqrt.c | 7 + .../libc/musl/src/math/aarch64/sqrtf.c | 7 + .../libc/musl/src/math/aarch64/trunc.c | 7 + .../libc/musl/src/math/aarch64/truncf.c | 7 + vendor/modernc.org/libc/musl/src/math/acos.c | 101 + vendor/modernc.org/libc/musl/src/math/acosf.c | 71 + vendor/modernc.org/libc/musl/src/math/acosh.c | 24 + .../modernc.org/libc/musl/src/math/acoshf.c | 26 + .../modernc.org/libc/musl/src/math/acoshl.c | 29 + vendor/modernc.org/libc/musl/src/math/acosl.c | 67 + .../modernc.org/libc/musl/src/math/arm/fabs.c | 15 + .../libc/musl/src/math/arm/fabsf.c | 15 + .../modernc.org/libc/musl/src/math/arm/fma.c | 15 + .../modernc.org/libc/musl/src/math/arm/fmaf.c | 15 + .../modernc.org/libc/musl/src/math/arm/sqrt.c | 15 + .../libc/musl/src/math/arm/sqrtf.c | 15 + vendor/modernc.org/libc/musl/src/math/asin.c | 107 + vendor/modernc.org/libc/musl/src/math/asinf.c | 61 + vendor/modernc.org/libc/musl/src/math/asinh.c | 28 + .../modernc.org/libc/musl/src/math/asinhf.c | 28 + .../modernc.org/libc/musl/src/math/asinhl.c | 41 + vendor/modernc.org/libc/musl/src/math/asinl.c | 71 + vendor/modernc.org/libc/musl/src/math/atan.c | 116 + vendor/modernc.org/libc/musl/src/math/atan2.c | 107 + .../modernc.org/libc/musl/src/math/atan2f.c | 83 + .../modernc.org/libc/musl/src/math/atan2l.c | 85 + vendor/modernc.org/libc/musl/src/math/atanf.c | 94 + vendor/modernc.org/libc/musl/src/math/atanh.c | 29 + .../modernc.org/libc/musl/src/math/atanhf.c | 28 + .../modernc.org/libc/musl/src/math/atanhl.c | 35 + vendor/modernc.org/libc/musl/src/math/atanl.c | 184 + vendor/modernc.org/libc/musl/src/math/cbrt.c | 103 + vendor/modernc.org/libc/musl/src/math/cbrtf.c | 66 + vendor/modernc.org/libc/musl/src/math/cbrtl.c | 124 + vendor/modernc.org/libc/musl/src/math/ceil.c | 31 + vendor/modernc.org/libc/musl/src/math/ceilf.c | 27 + vendor/modernc.org/libc/musl/src/math/ceill.c | 34 + .../modernc.org/libc/musl/src/math/copysign.c | 8 + .../libc/musl/src/math/copysignf.c | 10 + .../libc/musl/src/math/copysignl.c | 16 + vendor/modernc.org/libc/musl/src/math/cos.c | 77 + vendor/modernc.org/libc/musl/src/math/cosf.c | 78 + vendor/modernc.org/libc/musl/src/math/cosh.c | 40 + vendor/modernc.org/libc/musl/src/math/coshf.c | 33 + vendor/modernc.org/libc/musl/src/math/coshl.c | 47 + vendor/modernc.org/libc/musl/src/math/cosl.c | 39 + vendor/modernc.org/libc/musl/src/math/erf.c | 273 + vendor/modernc.org/libc/musl/src/math/erff.c | 183 + vendor/modernc.org/libc/musl/src/math/erfl.c | 353 + vendor/modernc.org/libc/musl/src/math/exp.c | 134 + vendor/modernc.org/libc/musl/src/math/exp10.c | 24 + .../modernc.org/libc/musl/src/math/exp10f.c | 22 + .../modernc.org/libc/musl/src/math/exp10l.c | 32 + vendor/modernc.org/libc/musl/src/math/exp2.c | 121 + vendor/modernc.org/libc/musl/src/math/exp2f.c | 69 + .../libc/musl/src/math/exp2f_data.c | 35 + .../libc/musl/src/math/exp2f_data.h | 23 + vendor/modernc.org/libc/musl/src/math/exp2l.c | 619 ++ .../modernc.org/libc/musl/src/math/exp_data.c | 182 + .../modernc.org/libc/musl/src/math/exp_data.h | 26 + vendor/modernc.org/libc/musl/src/math/expf.c | 80 + vendor/modernc.org/libc/musl/src/math/expl.c | 128 + vendor/modernc.org/libc/musl/src/math/expm1.c | 201 + .../modernc.org/libc/musl/src/math/expm1f.c | 111 + .../modernc.org/libc/musl/src/math/expm1l.c | 123 + vendor/modernc.org/libc/musl/src/math/fabs.c | 9 + vendor/modernc.org/libc/musl/src/math/fabsf.c | 9 + vendor/modernc.org/libc/musl/src/math/fabsl.c | 15 + vendor/modernc.org/libc/musl/src/math/fdim.c | 10 + vendor/modernc.org/libc/musl/src/math/fdimf.c | 10 + vendor/modernc.org/libc/musl/src/math/fdiml.c | 18 + .../modernc.org/libc/musl/src/math/finite.c | 7 + .../modernc.org/libc/musl/src/math/finitef.c | 7 + vendor/modernc.org/libc/musl/src/math/floor.c | 31 + .../modernc.org/libc/musl/src/math/floorf.c | 27 + .../modernc.org/libc/musl/src/math/floorl.c | 34 + vendor/modernc.org/libc/musl/src/math/fma.c | 183 + vendor/modernc.org/libc/musl/src/math/fmaf.c | 93 + vendor/modernc.org/libc/musl/src/math/fmal.c | 293 + vendor/modernc.org/libc/musl/src/math/fmax.c | 13 + vendor/modernc.org/libc/musl/src/math/fmaxf.c | 13 + vendor/modernc.org/libc/musl/src/math/fmaxl.c | 21 + vendor/modernc.org/libc/musl/src/math/fmin.c | 13 + vendor/modernc.org/libc/musl/src/math/fminf.c | 13 + vendor/modernc.org/libc/musl/src/math/fminl.c | 21 + vendor/modernc.org/libc/musl/src/math/fmod.c | 68 + vendor/modernc.org/libc/musl/src/math/fmodf.c | 65 + vendor/modernc.org/libc/musl/src/math/fmodl.c | 105 + vendor/modernc.org/libc/musl/src/math/frexp.c | 23 + .../modernc.org/libc/musl/src/math/frexpf.c | 23 + .../modernc.org/libc/musl/src/math/frexpl.c | 29 + vendor/modernc.org/libc/musl/src/math/hypot.c | 67 + .../modernc.org/libc/musl/src/math/hypotf.c | 35 + .../modernc.org/libc/musl/src/math/hypotl.c | 66 + .../libc/musl/src/math/i386/fabs.c | 7 + .../libc/musl/src/math/i386/fabsf.c | 7 + .../libc/musl/src/math/i386/fabsl.c | 7 + .../libc/musl/src/math/i386/fmod.c | 10 + .../libc/musl/src/math/i386/fmodf.c | 10 + .../libc/musl/src/math/i386/fmodl.c | 9 + .../libc/musl/src/math/i386/llrint.c | 8 + .../libc/musl/src/math/i386/llrintf.c | 8 + .../libc/musl/src/math/i386/llrintl.c | 8 + .../libc/musl/src/math/i386/lrint.c | 8 + .../libc/musl/src/math/i386/lrintf.c | 8 + .../libc/musl/src/math/i386/lrintl.c | 8 + .../libc/musl/src/math/i386/remainder.c | 12 + .../libc/musl/src/math/i386/remainderf.c | 12 + .../libc/musl/src/math/i386/remainderl.c | 9 + .../libc/musl/src/math/i386/rint.c | 7 + .../libc/musl/src/math/i386/rintf.c | 7 + .../libc/musl/src/math/i386/rintl.c | 7 + .../libc/musl/src/math/i386/sqrt.c | 15 + .../libc/musl/src/math/i386/sqrtf.c | 12 + .../libc/musl/src/math/i386/sqrtl.c | 7 + vendor/modernc.org/libc/musl/src/math/ilogb.c | 26 + .../modernc.org/libc/musl/src/math/ilogbf.c | 26 + .../modernc.org/libc/musl/src/math/ilogbl.c | 55 + vendor/modernc.org/libc/musl/src/math/j0.c | 375 + vendor/modernc.org/libc/musl/src/math/j0f.c | 314 + vendor/modernc.org/libc/musl/src/math/j1.c | 362 + vendor/modernc.org/libc/musl/src/math/j1f.c | 310 + vendor/modernc.org/libc/musl/src/math/jn.c | 280 + vendor/modernc.org/libc/musl/src/math/jnf.c | 202 + vendor/modernc.org/libc/musl/src/math/ldexp.c | 6 + .../modernc.org/libc/musl/src/math/ldexpf.c | 6 + .../modernc.org/libc/musl/src/math/ldexpl.c | 6 + .../modernc.org/libc/musl/src/math/lgamma.c | 7 + .../modernc.org/libc/musl/src/math/lgamma_r.c | 283 + .../modernc.org/libc/musl/src/math/lgammaf.c | 7 + .../libc/musl/src/math/lgammaf_r.c | 218 + .../modernc.org/libc/musl/src/math/lgammal.c | 353 + .../modernc.org/libc/musl/src/math/llrint.c | 8 + .../modernc.org/libc/musl/src/math/llrintf.c | 8 + .../modernc.org/libc/musl/src/math/llrintl.c | 36 + .../modernc.org/libc/musl/src/math/llround.c | 6 + .../modernc.org/libc/musl/src/math/llroundf.c | 6 + .../modernc.org/libc/musl/src/math/llroundl.c | 6 + vendor/modernc.org/libc/musl/src/math/log.c | 112 + vendor/modernc.org/libc/musl/src/math/log10.c | 101 + .../modernc.org/libc/musl/src/math/log10f.c | 77 + .../modernc.org/libc/musl/src/math/log10l.c | 191 + vendor/modernc.org/libc/musl/src/math/log1p.c | 122 + .../modernc.org/libc/musl/src/math/log1pf.c | 77 + .../modernc.org/libc/musl/src/math/log1pl.c | 177 + vendor/modernc.org/libc/musl/src/math/log2.c | 122 + .../libc/musl/src/math/log2_data.c | 201 + .../libc/musl/src/math/log2_data.h | 28 + vendor/modernc.org/libc/musl/src/math/log2f.c | 72 + .../libc/musl/src/math/log2f_data.c | 33 + .../libc/musl/src/math/log2f_data.h | 19 + vendor/modernc.org/libc/musl/src/math/log2l.c | 182 + .../modernc.org/libc/musl/src/math/log_data.c | 328 + .../modernc.org/libc/musl/src/math/log_data.h | 28 + vendor/modernc.org/libc/musl/src/math/logb.c | 17 + vendor/modernc.org/libc/musl/src/math/logbf.c | 10 + vendor/modernc.org/libc/musl/src/math/logbl.c | 16 + vendor/modernc.org/libc/musl/src/math/logf.c | 71 + .../libc/musl/src/math/logf_data.c | 33 + .../libc/musl/src/math/logf_data.h | 20 + vendor/modernc.org/libc/musl/src/math/logl.c | 175 + vendor/modernc.org/libc/musl/src/math/lrint.c | 72 + .../modernc.org/libc/musl/src/math/lrintf.c | 8 + .../modernc.org/libc/musl/src/math/lrintl.c | 36 + .../modernc.org/libc/musl/src/math/lround.c | 6 + .../modernc.org/libc/musl/src/math/lroundf.c | 6 + .../modernc.org/libc/musl/src/math/lroundl.c | 6 + .../libc/musl/src/math/m68k/sqrtl.c | 15 + .../libc/musl/src/math/mips/fabs.c | 16 + .../libc/musl/src/math/mips/fabsf.c | 16 + .../libc/musl/src/math/mips/sqrt.c | 16 + .../libc/musl/src/math/mips/sqrtf.c | 16 + vendor/modernc.org/libc/musl/src/math/modf.c | 34 + vendor/modernc.org/libc/musl/src/math/modff.c | 34 + vendor/modernc.org/libc/musl/src/math/modfl.c | 53 + vendor/modernc.org/libc/musl/src/math/nan.c | 6 + vendor/modernc.org/libc/musl/src/math/nanf.c | 6 + vendor/modernc.org/libc/musl/src/math/nanl.c | 6 + .../libc/musl/src/math/nearbyint.c | 20 + .../libc/musl/src/math/nearbyintf.c | 18 + .../libc/musl/src/math/nearbyintl.c | 26 + .../libc/musl/src/math/nextafter.c | 31 + .../libc/musl/src/math/nextafterf.c | 30 + .../libc/musl/src/math/nextafterl.c | 75 + .../libc/musl/src/math/nexttoward.c | 42 + .../libc/musl/src/math/nexttowardf.c | 35 + .../libc/musl/src/math/nexttowardl.c | 6 + vendor/modernc.org/libc/musl/src/math/pow.c | 343 + .../modernc.org/libc/musl/src/math/pow_data.c | 180 + .../modernc.org/libc/musl/src/math/pow_data.h | 22 + .../libc/musl/src/math/powerpc/fabs.c | 15 + .../libc/musl/src/math/powerpc/fabsf.c | 15 + .../libc/musl/src/math/powerpc/fma.c | 15 + .../libc/musl/src/math/powerpc/fmaf.c | 15 + .../libc/musl/src/math/powerpc/sqrt.c | 15 + .../libc/musl/src/math/powerpc/sqrtf.c | 15 + .../libc/musl/src/math/powerpc64/ceil.c | 15 + .../libc/musl/src/math/powerpc64/ceilf.c | 15 + .../libc/musl/src/math/powerpc64/fabs.c | 7 + .../libc/musl/src/math/powerpc64/fabsf.c | 7 + .../libc/musl/src/math/powerpc64/floor.c | 15 + .../libc/musl/src/math/powerpc64/floorf.c | 15 + .../libc/musl/src/math/powerpc64/fma.c | 7 + .../libc/musl/src/math/powerpc64/fmaf.c | 7 + .../libc/musl/src/math/powerpc64/fmax.c | 15 + .../libc/musl/src/math/powerpc64/fmaxf.c | 15 + .../libc/musl/src/math/powerpc64/fmin.c | 15 + .../libc/musl/src/math/powerpc64/fminf.c | 15 + .../libc/musl/src/math/powerpc64/lrint.c | 16 + .../libc/musl/src/math/powerpc64/lrintf.c | 16 + .../libc/musl/src/math/powerpc64/lround.c | 18 + .../libc/musl/src/math/powerpc64/lroundf.c | 18 + .../libc/musl/src/math/powerpc64/round.c | 15 + .../libc/musl/src/math/powerpc64/roundf.c | 15 + .../libc/musl/src/math/powerpc64/sqrt.c | 7 + .../libc/musl/src/math/powerpc64/sqrtf.c | 7 + .../libc/musl/src/math/powerpc64/trunc.c | 15 + .../libc/musl/src/math/powerpc64/truncf.c | 15 + vendor/modernc.org/libc/musl/src/math/powf.c | 185 + .../libc/musl/src/math/powf_data.c | 34 + .../libc/musl/src/math/powf_data.h | 26 + vendor/modernc.org/libc/musl/src/math/powl.c | 522 ++ .../libc/musl/src/math/remainder.c | 9 + .../libc/musl/src/math/remainderf.c | 9 + .../libc/musl/src/math/remainderl.c | 15 + .../modernc.org/libc/musl/src/math/remquo.c | 82 + .../modernc.org/libc/musl/src/math/remquof.c | 82 + .../modernc.org/libc/musl/src/math/remquol.c | 124 + vendor/modernc.org/libc/musl/src/math/rint.c | 28 + vendor/modernc.org/libc/musl/src/math/rintf.c | 30 + vendor/modernc.org/libc/musl/src/math/rintl.c | 29 + .../libc/musl/src/math/riscv64/copysign.c | 15 + .../libc/musl/src/math/riscv64/copysignf.c | 15 + .../libc/musl/src/math/riscv64/fabs.c | 15 + .../libc/musl/src/math/riscv64/fabsf.c | 15 + .../libc/musl/src/math/riscv64/fma.c | 15 + .../libc/musl/src/math/riscv64/fmaf.c | 15 + .../libc/musl/src/math/riscv64/fmax.c | 15 + .../libc/musl/src/math/riscv64/fmaxf.c | 15 + .../libc/musl/src/math/riscv64/fmin.c | 15 + .../libc/musl/src/math/riscv64/fminf.c | 15 + .../libc/musl/src/math/riscv64/sqrt.c | 15 + .../libc/musl/src/math/riscv64/sqrtf.c | 15 + vendor/modernc.org/libc/musl/src/math/round.c | 35 + .../modernc.org/libc/musl/src/math/roundf.c | 36 + .../modernc.org/libc/musl/src/math/roundl.c | 37 + .../libc/musl/src/math/s390x/ceil.c | 15 + .../libc/musl/src/math/s390x/ceilf.c | 15 + .../libc/musl/src/math/s390x/ceill.c | 15 + .../libc/musl/src/math/s390x/fabs.c | 15 + .../libc/musl/src/math/s390x/fabsf.c | 15 + .../libc/musl/src/math/s390x/fabsl.c | 15 + .../libc/musl/src/math/s390x/floor.c | 15 + .../libc/musl/src/math/s390x/floorf.c | 15 + .../libc/musl/src/math/s390x/floorl.c | 15 + .../libc/musl/src/math/s390x/fma.c | 7 + .../libc/musl/src/math/s390x/fmaf.c | 7 + .../libc/musl/src/math/s390x/nearbyint.c | 15 + .../libc/musl/src/math/s390x/nearbyintf.c | 15 + .../libc/musl/src/math/s390x/nearbyintl.c | 15 + .../libc/musl/src/math/s390x/rint.c | 15 + .../libc/musl/src/math/s390x/rintf.c | 15 + .../libc/musl/src/math/s390x/rintl.c | 15 + .../libc/musl/src/math/s390x/round.c | 15 + .../libc/musl/src/math/s390x/roundf.c | 15 + .../libc/musl/src/math/s390x/roundl.c | 15 + .../libc/musl/src/math/s390x/sqrt.c | 15 + .../libc/musl/src/math/s390x/sqrtf.c | 15 + .../libc/musl/src/math/s390x/sqrtl.c | 15 + .../libc/musl/src/math/s390x/trunc.c | 15 + .../libc/musl/src/math/s390x/truncf.c | 15 + .../libc/musl/src/math/s390x/truncl.c | 15 + vendor/modernc.org/libc/musl/src/math/scalb.c | 35 + .../modernc.org/libc/musl/src/math/scalbf.c | 32 + .../modernc.org/libc/musl/src/math/scalbln.c | 11 + .../modernc.org/libc/musl/src/math/scalblnf.c | 11 + .../modernc.org/libc/musl/src/math/scalblnl.c | 19 + .../modernc.org/libc/musl/src/math/scalbn.c | 33 + .../modernc.org/libc/musl/src/math/scalbnf.c | 31 + .../modernc.org/libc/musl/src/math/scalbnl.c | 36 + .../modernc.org/libc/musl/src/math/signgam.c | 6 + .../libc/musl/src/math/significand.c | 7 + .../libc/musl/src/math/significandf.c | 7 + vendor/modernc.org/libc/musl/src/math/sin.c | 78 + .../modernc.org/libc/musl/src/math/sincos.c | 69 + .../modernc.org/libc/musl/src/math/sincosf.c | 117 + .../modernc.org/libc/musl/src/math/sincosl.c | 60 + vendor/modernc.org/libc/musl/src/math/sinf.c | 76 + vendor/modernc.org/libc/musl/src/math/sinh.c | 39 + vendor/modernc.org/libc/musl/src/math/sinhf.c | 31 + vendor/modernc.org/libc/musl/src/math/sinhl.c | 43 + vendor/modernc.org/libc/musl/src/math/sinl.c | 41 + vendor/modernc.org/libc/musl/src/math/sqrt.c | 184 + vendor/modernc.org/libc/musl/src/math/sqrtf.c | 83 + vendor/modernc.org/libc/musl/src/math/sqrtl.c | 7 + vendor/modernc.org/libc/musl/src/math/tan.c | 70 + vendor/modernc.org/libc/musl/src/math/tanf.c | 64 + vendor/modernc.org/libc/musl/src/math/tanh.c | 45 + vendor/modernc.org/libc/musl/src/math/tanhf.c | 39 + vendor/modernc.org/libc/musl/src/math/tanhl.c | 48 + vendor/modernc.org/libc/musl/src/math/tanl.c | 29 + .../modernc.org/libc/musl/src/math/tgamma.c | 222 + .../modernc.org/libc/musl/src/math/tgammaf.c | 6 + .../modernc.org/libc/musl/src/math/tgammal.c | 281 + vendor/modernc.org/libc/musl/src/math/trunc.c | 19 + .../modernc.org/libc/musl/src/math/truncf.c | 19 + .../modernc.org/libc/musl/src/math/truncl.c | 34 + .../modernc.org/libc/musl/src/math/x32/fma.c | 23 + .../modernc.org/libc/musl/src/math/x32/fmaf.c | 23 + .../libc/musl/src/math/x86_64/fabs.c | 10 + .../libc/musl/src/math/x86_64/fabsf.c | 10 + .../libc/musl/src/math/x86_64/fabsl.c | 7 + .../libc/musl/src/math/x86_64/fma.c | 23 + .../libc/musl/src/math/x86_64/fmaf.c | 23 + .../libc/musl/src/math/x86_64/fmodl.c | 9 + .../libc/musl/src/math/x86_64/llrint.c | 8 + .../libc/musl/src/math/x86_64/llrintf.c | 8 + .../libc/musl/src/math/x86_64/llrintl.c | 8 + .../libc/musl/src/math/x86_64/lrint.c | 8 + .../libc/musl/src/math/x86_64/lrintf.c | 8 + .../libc/musl/src/math/x86_64/lrintl.c | 8 + .../libc/musl/src/math/x86_64/remainderl.c | 9 + .../libc/musl/src/math/x86_64/remquol.c | 32 + .../libc/musl/src/math/x86_64/rintl.c | 7 + .../libc/musl/src/math/x86_64/sqrt.c | 7 + .../libc/musl/src/math/x86_64/sqrtf.c | 7 + .../libc/musl/src/math/x86_64/sqrtl.c | 7 + vendor/modernc.org/libc/musl/src/misc/a64l.c | 29 + .../modernc.org/libc/musl/src/misc/basename.c | 14 + .../modernc.org/libc/musl/src/misc/dirname.c | 14 + vendor/modernc.org/libc/musl/src/misc/ffs.c | 7 + vendor/modernc.org/libc/musl/src/misc/ffsl.c | 7 + vendor/modernc.org/libc/musl/src/misc/ffsll.c | 7 + .../modernc.org/libc/musl/src/misc/fmtmsg.c | 90 + .../modernc.org/libc/musl/src/misc/forkpty.c | 57 + .../libc/musl/src/misc/get_current_dir_name.c | 15 + .../libc/musl/src/misc/getauxval.c | 15 + .../libc/musl/src/misc/getdomainname.c | 17 + .../libc/musl/src/misc/getentropy.c | 33 + .../libc/musl/src/misc/gethostid.c | 6 + .../modernc.org/libc/musl/src/misc/getopt.c | 105 + .../libc/musl/src/misc/getopt_long.c | 148 + .../libc/musl/src/misc/getpriority.c | 9 + .../libc/musl/src/misc/getresgid.c | 8 + .../libc/musl/src/misc/getresuid.c | 8 + .../libc/musl/src/misc/getrlimit.c | 26 + .../libc/musl/src/misc/getrusage.c | 35 + .../libc/musl/src/misc/getsubopt.c | 23 + .../libc/musl/src/misc/initgroups.c | 11 + vendor/modernc.org/libc/musl/src/misc/ioctl.c | 138 + .../libc/musl/src/misc/issetugid.c | 8 + vendor/modernc.org/libc/musl/src/misc/lockf.c | 32 + .../libc/musl/src/misc/login_tty.c | 14 + .../modernc.org/libc/musl/src/misc/mntent.c | 77 + vendor/modernc.org/libc/musl/src/misc/nftw.c | 142 + .../modernc.org/libc/musl/src/misc/openpty.c | 40 + .../modernc.org/libc/musl/src/misc/ptsname.c | 13 + vendor/modernc.org/libc/musl/src/misc/pty.c | 35 + .../modernc.org/libc/musl/src/misc/realpath.c | 43 + .../libc/musl/src/misc/setdomainname.c | 8 + .../libc/musl/src/misc/setpriority.c | 7 + .../libc/musl/src/misc/setrlimit.c | 50 + .../modernc.org/libc/musl/src/misc/syscall.c | 21 + .../modernc.org/libc/musl/src/misc/syslog.c | 144 + vendor/modernc.org/libc/musl/src/misc/uname.c | 7 + .../modernc.org/libc/musl/src/misc/wordexp.c | 187 + .../modernc.org/libc/musl/src/mman/madvise.c | 9 + .../modernc.org/libc/musl/src/mman/mincore.c | 8 + vendor/modernc.org/libc/musl/src/mman/mlock.c | 11 + .../modernc.org/libc/musl/src/mman/mlockall.c | 7 + vendor/modernc.org/libc/musl/src/mman/mmap.c | 41 + .../modernc.org/libc/musl/src/mman/mprotect.c | 13 + .../modernc.org/libc/musl/src/mman/mremap.c | 32 + vendor/modernc.org/libc/musl/src/mman/msync.c | 7 + .../modernc.org/libc/musl/src/mman/munlock.c | 7 + .../libc/musl/src/mman/munlockall.c | 7 + .../modernc.org/libc/musl/src/mman/munmap.c | 13 + .../libc/musl/src/mman/posix_madvise.c | 9 + .../modernc.org/libc/musl/src/mman/shm_open.c | 43 + .../modernc.org/libc/musl/src/mq/mq_close.c | 7 + .../modernc.org/libc/musl/src/mq/mq_getattr.c | 7 + .../modernc.org/libc/musl/src/mq/mq_notify.c | 73 + vendor/modernc.org/libc/musl/src/mq/mq_open.c | 19 + .../modernc.org/libc/musl/src/mq/mq_receive.c | 6 + vendor/modernc.org/libc/musl/src/mq/mq_send.c | 6 + .../modernc.org/libc/musl/src/mq/mq_setattr.c | 7 + .../libc/musl/src/mq/mq_timedreceive.c | 24 + .../libc/musl/src/mq/mq_timedsend.c | 24 + .../modernc.org/libc/musl/src/mq/mq_unlink.c | 16 + .../libc/musl/src/multibyte/btowc.c | 10 + .../libc/musl/src/multibyte/c16rtomb.c | 35 + .../libc/musl/src/multibyte/c32rtomb.c | 7 + .../libc/musl/src/multibyte/internal.c | 26 + .../libc/musl/src/multibyte/internal.h | 24 + .../libc/musl/src/multibyte/mblen.c | 6 + .../libc/musl/src/multibyte/mbrlen.c | 7 + .../libc/musl/src/multibyte/mbrtoc16.c | 30 + .../libc/musl/src/multibyte/mbrtoc32.c | 13 + .../libc/musl/src/multibyte/mbrtowc.c | 51 + .../libc/musl/src/multibyte/mbsinit.c | 6 + .../libc/musl/src/multibyte/mbsnrtowcs.c | 55 + .../libc/musl/src/multibyte/mbsrtowcs.c | 120 + .../libc/musl/src/multibyte/mbstowcs.c | 7 + .../libc/musl/src/multibyte/mbtowc.c | 47 + .../libc/musl/src/multibyte/wcrtomb.c | 37 + .../libc/musl/src/multibyte/wcsnrtombs.c | 43 + .../libc/musl/src/multibyte/wcsrtombs.c | 55 + .../libc/musl/src/multibyte/wcstombs.c | 8 + .../libc/musl/src/multibyte/wctob.c | 11 + .../libc/musl/src/multibyte/wctomb.c | 8 + .../libc/musl/src/network/accept.c | 7 + .../libc/musl/src/network/accept4.c | 19 + .../modernc.org/libc/musl/src/network/bind.c | 7 + .../libc/musl/src/network/connect.c | 7 + .../libc/musl/src/network/dn_comp.c | 107 + .../libc/musl/src/network/dn_expand.c | 33 + .../libc/musl/src/network/dn_skipname.c | 15 + .../libc/musl/src/network/dns_parse.c | 33 + .../modernc.org/libc/musl/src/network/ent.c | 22 + .../modernc.org/libc/musl/src/network/ether.c | 58 + .../libc/musl/src/network/freeaddrinfo.c | 16 + .../libc/musl/src/network/gai_strerror.c | 25 + .../libc/musl/src/network/getaddrinfo.c | 144 + .../libc/musl/src/network/gethostbyaddr.c | 24 + .../libc/musl/src/network/gethostbyaddr_r.c | 76 + .../libc/musl/src/network/gethostbyname.c | 11 + .../libc/musl/src/network/gethostbyname2.c | 25 + .../libc/musl/src/network/gethostbyname2_r.c | 80 + .../libc/musl/src/network/gethostbyname_r.c | 11 + .../libc/musl/src/network/getifaddrs.c | 216 + .../libc/musl/src/network/getnameinfo.c | 206 + .../libc/musl/src/network/getpeername.c | 7 + .../libc/musl/src/network/getservbyname.c | 12 + .../libc/musl/src/network/getservbyname_r.c | 55 + .../libc/musl/src/network/getservbyport.c | 12 + .../libc/musl/src/network/getservbyport_r.c | 60 + .../libc/musl/src/network/getsockname.c | 7 + .../libc/musl/src/network/getsockopt.c | 41 + .../libc/musl/src/network/h_errno.c | 9 + .../libc/musl/src/network/herror.c | 8 + .../libc/musl/src/network/hstrerror.c | 18 + .../modernc.org/libc/musl/src/network/htonl.c | 8 + .../modernc.org/libc/musl/src/network/htons.c | 8 + .../libc/musl/src/network/if_freenameindex.c | 7 + .../libc/musl/src/network/if_indextoname.c | 23 + .../libc/musl/src/network/if_nameindex.c | 114 + .../libc/musl/src/network/if_nametoindex.c | 18 + .../libc/musl/src/network/in6addr_any.c | 3 + .../libc/musl/src/network/in6addr_loopback.c | 3 + .../libc/musl/src/network/inet_addr.c | 10 + .../libc/musl/src/network/inet_aton.c | 41 + .../libc/musl/src/network/inet_legacy.c | 32 + .../libc/musl/src/network/inet_ntoa.c | 10 + .../libc/musl/src/network/inet_ntop.c | 54 + .../libc/musl/src/network/inet_pton.c | 71 + .../libc/musl/src/network/listen.c | 7 + .../libc/musl/src/network/lookup.h | 55 + .../libc/musl/src/network/lookup_ipliteral.c | 56 + .../libc/musl/src/network/lookup_name.c | 441 ++ .../libc/musl/src/network/lookup_serv.c | 117 + .../libc/musl/src/network/netlink.c | 52 + .../libc/musl/src/network/netlink.h | 94 + .../libc/musl/src/network/netname.c | 12 + .../libc/musl/src/network/ns_parse.c | 171 + .../modernc.org/libc/musl/src/network/ntohl.c | 8 + .../modernc.org/libc/musl/src/network/ntohs.c | 8 + .../modernc.org/libc/musl/src/network/proto.c | 84 + .../modernc.org/libc/musl/src/network/recv.c | 6 + .../libc/musl/src/network/recvfrom.c | 7 + .../libc/musl/src/network/recvmmsg.c | 39 + .../libc/musl/src/network/recvmsg.c | 68 + .../libc/musl/src/network/res_init.c | 6 + .../libc/musl/src/network/res_mkquery.c | 44 + .../libc/musl/src/network/res_msend.c | 188 + .../libc/musl/src/network/res_query.c | 12 + .../libc/musl/src/network/res_querydomain.c | 14 + .../libc/musl/src/network/res_send.c | 9 + .../libc/musl/src/network/res_state.c | 9 + .../libc/musl/src/network/resolvconf.c | 94 + .../modernc.org/libc/musl/src/network/send.c | 6 + .../libc/musl/src/network/sendmmsg.c | 30 + .../libc/musl/src/network/sendmsg.c | 29 + .../libc/musl/src/network/sendto.c | 7 + .../modernc.org/libc/musl/src/network/serv.c | 14 + .../libc/musl/src/network/setsockopt.c | 46 + .../libc/musl/src/network/shutdown.c | 7 + .../libc/musl/src/network/sockatmark.c | 10 + .../libc/musl/src/network/socket.c | 21 + .../libc/musl/src/network/socketpair.c | 25 + .../libc/musl/src/passwd/fgetgrent.c | 12 + .../libc/musl/src/passwd/fgetpwent.c | 12 + .../libc/musl/src/passwd/fgetspent.c | 15 + .../libc/musl/src/passwd/getgr_a.c | 169 + .../libc/musl/src/passwd/getgr_r.c | 49 + .../libc/musl/src/passwd/getgrent.c | 39 + .../libc/musl/src/passwd/getgrent_a.c | 68 + .../libc/musl/src/passwd/getgrouplist.c | 80 + .../libc/musl/src/passwd/getpw_a.c | 142 + .../libc/musl/src/passwd/getpw_r.c | 42 + .../libc/musl/src/passwd/getpwent.c | 37 + .../libc/musl/src/passwd/getpwent_a.c | 54 + .../libc/musl/src/passwd/getspent.c | 14 + .../libc/musl/src/passwd/getspnam.c | 18 + .../libc/musl/src/passwd/getspnam_r.c | 125 + .../libc/musl/src/passwd/lckpwdf.c | 11 + .../modernc.org/libc/musl/src/passwd/nscd.h | 44 + .../libc/musl/src/passwd/nscd_query.c | 107 + .../libc/musl/src/passwd/putgrent.c | 17 + .../libc/musl/src/passwd/putpwent.c | 10 + .../libc/musl/src/passwd/putspent.c | 13 + vendor/modernc.org/libc/musl/src/passwd/pwf.h | 15 + .../libc/musl/src/prng/__rand48_step.c | 14 + .../modernc.org/libc/musl/src/prng/__seed48.c | 3 + .../modernc.org/libc/musl/src/prng/drand48.c | 17 + .../modernc.org/libc/musl/src/prng/lcong48.c | 8 + .../modernc.org/libc/musl/src/prng/lrand48.c | 13 + .../modernc.org/libc/musl/src/prng/mrand48.c | 13 + vendor/modernc.org/libc/musl/src/prng/rand.c | 15 + .../modernc.org/libc/musl/src/prng/rand48.h | 5 + .../modernc.org/libc/musl/src/prng/rand_r.c | 15 + .../modernc.org/libc/musl/src/prng/random.c | 124 + .../modernc.org/libc/musl/src/prng/seed48.c | 11 + .../modernc.org/libc/musl/src/prng/srand48.c | 6 + .../modernc.org/libc/musl/src/process/execl.c | 22 + .../libc/musl/src/process/execle.c | 23 + .../libc/musl/src/process/execlp.c | 22 + .../modernc.org/libc/musl/src/process/execv.c | 8 + .../libc/musl/src/process/execve.c | 8 + .../libc/musl/src/process/execvp.c | 60 + .../modernc.org/libc/musl/src/process/fdop.h | 12 + .../libc/musl/src/process/fexecve.c | 16 + .../modernc.org/libc/musl/src/process/fork.c | 38 + .../libc/musl/src/process/posix_spawn.c | 204 + .../posix_spawn_file_actions_addchdir.c | 18 + .../posix_spawn_file_actions_addclose.c | 16 + .../posix_spawn_file_actions_adddup2.c | 17 + .../posix_spawn_file_actions_addfchdir.c | 17 + .../posix_spawn_file_actions_addopen.c | 20 + .../posix_spawn_file_actions_destroy.c | 14 + .../process/posix_spawn_file_actions_init.c | 7 + .../src/process/posix_spawnattr_destroy.c | 6 + .../src/process/posix_spawnattr_getflags.c | 7 + .../src/process/posix_spawnattr_getpgroup.c | 7 + .../process/posix_spawnattr_getsigdefault.c | 7 + .../src/process/posix_spawnattr_getsigmask.c | 7 + .../musl/src/process/posix_spawnattr_init.c | 7 + .../musl/src/process/posix_spawnattr_sched.c | 25 + .../src/process/posix_spawnattr_setflags.c | 18 + .../src/process/posix_spawnattr_setpgroup.c | 7 + .../process/posix_spawnattr_setsigdefault.c | 7 + .../src/process/posix_spawnattr_setsigmask.c | 7 + .../libc/musl/src/process/posix_spawnp.c | 13 + .../libc/musl/src/process/system.c | 46 + .../modernc.org/libc/musl/src/process/vfork.c | 14 + .../modernc.org/libc/musl/src/process/wait.c | 6 + .../libc/musl/src/process/waitid.c | 7 + .../libc/musl/src/process/waitpid.c | 7 + .../modernc.org/libc/musl/src/regex/fnmatch.c | 321 + vendor/modernc.org/libc/musl/src/regex/glob.c | 311 + .../modernc.org/libc/musl/src/regex/regcomp.c | 2953 ++++++++ .../libc/musl/src/regex/regerror.c | 37 + .../modernc.org/libc/musl/src/regex/regexec.c | 1028 +++ .../modernc.org/libc/musl/src/regex/tre-mem.c | 158 + vendor/modernc.org/libc/musl/src/regex/tre.h | 231 + .../libc/musl/src/sched/affinity.c | 33 + .../libc/musl/src/sched/sched_cpucount.c | 11 + .../musl/src/sched/sched_get_priority_max.c | 12 + .../libc/musl/src/sched/sched_getcpu.c | 42 + .../libc/musl/src/sched/sched_getparam.c | 8 + .../libc/musl/src/sched/sched_getscheduler.c | 8 + .../musl/src/sched/sched_rr_get_interval.c | 21 + .../libc/musl/src/sched/sched_setparam.c | 8 + .../libc/musl/src/sched/sched_setscheduler.c | 8 + .../libc/musl/src/sched/sched_yield.c | 7 + .../libc/musl/src/search/hsearch.c | 153 + .../modernc.org/libc/musl/src/search/insque.c | 32 + .../libc/musl/src/search/lsearch.c | 31 + .../libc/musl/src/search/tdelete.c | 49 + .../libc/musl/src/search/tdestroy.c | 16 + .../modernc.org/libc/musl/src/search/tfind.c | 20 + .../libc/musl/src/search/tsearch.c | 92 + .../libc/musl/src/search/tsearch.h | 13 + .../modernc.org/libc/musl/src/search/twalk.c | 22 + .../modernc.org/libc/musl/src/select/poll.c | 15 + .../libc/musl/src/select/pselect.c | 26 + .../modernc.org/libc/musl/src/select/select.c | 44 + .../libc/musl/src/setjmp/longjmp.c | 0 .../modernc.org/libc/musl/src/setjmp/setjmp.c | 0 .../modernc.org/libc/musl/src/signal/block.c | 44 + .../libc/musl/src/signal/getitimer.c | 18 + .../modernc.org/libc/musl/src/signal/kill.c | 7 + .../modernc.org/libc/musl/src/signal/killpg.c | 11 + .../libc/musl/src/signal/psiginfo.c | 6 + .../libc/musl/src/signal/psignal.c | 27 + .../modernc.org/libc/musl/src/signal/raise.c | 13 + .../libc/musl/src/signal/restore.c | 12 + .../libc/musl/src/signal/setitimer.c | 26 + .../libc/musl/src/signal/sigaction.c | 88 + .../libc/musl/src/signal/sigaddset.c | 13 + .../libc/musl/src/signal/sigaltstack.c | 18 + .../libc/musl/src/signal/sigandset.c | 12 + .../libc/musl/src/signal/sigdelset.c | 13 + .../libc/musl/src/signal/sigemptyset.c | 13 + .../libc/musl/src/signal/sigfillset.c | 18 + .../libc/musl/src/signal/sighold.c | 10 + .../libc/musl/src/signal/sigignore.c | 11 + .../libc/musl/src/signal/siginterrupt.c | 12 + .../libc/musl/src/signal/sigisemptyset.c | 10 + .../libc/musl/src/signal/sigismember.c | 8 + .../libc/musl/src/signal/siglongjmp.c | 9 + .../modernc.org/libc/musl/src/signal/signal.c | 13 + .../libc/musl/src/signal/sigorset.c | 12 + .../libc/musl/src/signal/sigpause.c | 9 + .../libc/musl/src/signal/sigpending.c | 7 + .../libc/musl/src/signal/sigprocmask.c | 10 + .../libc/musl/src/signal/sigqueue.c | 22 + .../libc/musl/src/signal/sigrelse.c | 10 + .../libc/musl/src/signal/sigrtmax.c | 6 + .../libc/musl/src/signal/sigrtmin.c | 6 + .../modernc.org/libc/musl/src/signal/sigset.c | 27 + .../libc/musl/src/signal/sigsetjmp.c | 0 .../libc/musl/src/signal/sigsetjmp_tail.c | 10 + .../libc/musl/src/signal/sigsuspend.c | 7 + .../libc/musl/src/signal/sigtimedwait.c | 32 + .../libc/musl/src/signal/sigwait.c | 10 + .../libc/musl/src/signal/sigwaitinfo.c | 6 + .../libc/musl/src/signal/x32/getitimer.c | 7 + .../libc/musl/src/signal/x32/setitimer.c | 7 + .../modernc.org/libc/musl/src/stat/__xstat.c | 40 + vendor/modernc.org/libc/musl/src/stat/chmod.c | 12 + .../modernc.org/libc/musl/src/stat/fchmod.c | 19 + .../modernc.org/libc/musl/src/stat/fchmodat.c | 38 + vendor/modernc.org/libc/musl/src/stat/fstat.c | 15 + .../modernc.org/libc/musl/src/stat/fstatat.c | 147 + .../modernc.org/libc/musl/src/stat/futimens.c | 6 + .../libc/musl/src/stat/futimesat.c | 22 + .../modernc.org/libc/musl/src/stat/lchmod.c | 8 + vendor/modernc.org/libc/musl/src/stat/lstat.c | 11 + vendor/modernc.org/libc/musl/src/stat/mkdir.c | 12 + .../modernc.org/libc/musl/src/stat/mkdirat.c | 7 + .../modernc.org/libc/musl/src/stat/mkfifo.c | 6 + .../modernc.org/libc/musl/src/stat/mkfifoat.c | 6 + vendor/modernc.org/libc/musl/src/stat/mknod.c | 12 + .../modernc.org/libc/musl/src/stat/mknodat.c | 7 + vendor/modernc.org/libc/musl/src/stat/stat.c | 11 + .../modernc.org/libc/musl/src/stat/statvfs.c | 63 + vendor/modernc.org/libc/musl/src/stat/umask.c | 7 + .../libc/musl/src/stat/utimensat.c | 60 + .../libc/musl/src/stdio/__fclose_ca.c | 6 + .../libc/musl/src/stdio/__fdopen.c | 61 + .../libc/musl/src/stdio/__fmodeflags.c | 16 + .../libc/musl/src/stdio/__fopen_rb_ca.c | 22 + .../libc/musl/src/stdio/__lockfile.c | 23 + .../libc/musl/src/stdio/__overflow.c | 10 + .../libc/musl/src/stdio/__stdio_close.c | 13 + .../libc/musl/src/stdio/__stdio_exit.c | 25 + .../libc/musl/src/stdio/__stdio_read.c | 24 + .../libc/musl/src/stdio/__stdio_seek.c | 7 + .../libc/musl/src/stdio/__stdio_write.c | 34 + .../libc/musl/src/stdio/__stdout_write.c | 11 + .../libc/musl/src/stdio/__toread.c | 20 + .../libc/musl/src/stdio/__towrite.c | 23 + .../modernc.org/libc/musl/src/stdio/__uflow.c | 11 + .../libc/musl/src/stdio/asprintf.c | 13 + .../libc/musl/src/stdio/clearerr.c | 10 + .../modernc.org/libc/musl/src/stdio/dprintf.c | 12 + vendor/modernc.org/libc/musl/src/stdio/ext.c | 57 + vendor/modernc.org/libc/musl/src/stdio/ext2.c | 24 + .../modernc.org/libc/musl/src/stdio/fclose.c | 38 + vendor/modernc.org/libc/musl/src/stdio/feof.c | 14 + .../modernc.org/libc/musl/src/stdio/ferror.c | 14 + .../modernc.org/libc/musl/src/stdio/fflush.c | 47 + .../modernc.org/libc/musl/src/stdio/fgetc.c | 7 + .../modernc.org/libc/musl/src/stdio/fgetln.c | 21 + .../modernc.org/libc/musl/src/stdio/fgetpos.c | 11 + .../modernc.org/libc/musl/src/stdio/fgets.c | 48 + .../modernc.org/libc/musl/src/stdio/fgetwc.c | 68 + .../modernc.org/libc/musl/src/stdio/fgetws.c | 33 + .../modernc.org/libc/musl/src/stdio/fileno.c | 16 + .../libc/musl/src/stdio/flockfile.c | 9 + .../libc/musl/src/stdio/fmemopen.c | 127 + .../modernc.org/libc/musl/src/stdio/fopen.c | 33 + .../libc/musl/src/stdio/fopencookie.c | 135 + .../modernc.org/libc/musl/src/stdio/fprintf.c | 12 + .../modernc.org/libc/musl/src/stdio/fputc.c | 7 + .../modernc.org/libc/musl/src/stdio/fputs.c | 10 + .../modernc.org/libc/musl/src/stdio/fputwc.c | 40 + .../modernc.org/libc/musl/src/stdio/fputws.c | 29 + .../modernc.org/libc/musl/src/stdio/fread.c | 38 + .../modernc.org/libc/musl/src/stdio/freopen.c | 53 + .../modernc.org/libc/musl/src/stdio/fscanf.c | 14 + .../modernc.org/libc/musl/src/stdio/fseek.c | 43 + .../modernc.org/libc/musl/src/stdio/fsetpos.c | 8 + .../modernc.org/libc/musl/src/stdio/ftell.c | 41 + .../libc/musl/src/stdio/ftrylockfile.c | 46 + .../libc/musl/src/stdio/funlockfile.c | 13 + .../modernc.org/libc/musl/src/stdio/fwide.c | 16 + .../libc/musl/src/stdio/fwprintf.c | 13 + .../modernc.org/libc/musl/src/stdio/fwrite.c | 38 + .../modernc.org/libc/musl/src/stdio/fwscanf.c | 15 + vendor/modernc.org/libc/musl/src/stdio/getc.c | 9 + vendor/modernc.org/libc/musl/src/stdio/getc.h | 22 + .../libc/musl/src/stdio/getc_unlocked.c | 9 + .../modernc.org/libc/musl/src/stdio/getchar.c | 7 + .../libc/musl/src/stdio/getchar_unlocked.c | 6 + .../libc/musl/src/stdio/getdelim.c | 81 + .../modernc.org/libc/musl/src/stdio/getline.c | 6 + vendor/modernc.org/libc/musl/src/stdio/gets.c | 15 + vendor/modernc.org/libc/musl/src/stdio/getw.c | 8 + .../modernc.org/libc/musl/src/stdio/getwc.c | 7 + .../libc/musl/src/stdio/getwchar.c | 9 + vendor/modernc.org/libc/musl/src/stdio/ofl.c | 16 + .../modernc.org/libc/musl/src/stdio/ofl_add.c | 11 + .../libc/musl/src/stdio/open_memstream.c | 99 + .../libc/musl/src/stdio/open_wmemstream.c | 102 + .../modernc.org/libc/musl/src/stdio/pclose.c | 13 + .../modernc.org/libc/musl/src/stdio/perror.c | 30 + .../modernc.org/libc/musl/src/stdio/popen.c | 73 + .../modernc.org/libc/musl/src/stdio/printf.c | 12 + vendor/modernc.org/libc/musl/src/stdio/putc.c | 9 + vendor/modernc.org/libc/musl/src/stdio/putc.h | 22 + .../libc/musl/src/stdio/putc_unlocked.c | 9 + .../modernc.org/libc/musl/src/stdio/putchar.c | 7 + .../libc/musl/src/stdio/putchar_unlocked.c | 6 + vendor/modernc.org/libc/musl/src/stdio/puts.c | 10 + vendor/modernc.org/libc/musl/src/stdio/putw.c | 7 + .../modernc.org/libc/musl/src/stdio/putwc.c | 7 + .../libc/musl/src/stdio/putwchar.c | 9 + .../modernc.org/libc/musl/src/stdio/remove.c | 19 + .../modernc.org/libc/musl/src/stdio/rename.c | 14 + .../modernc.org/libc/musl/src/stdio/rewind.c | 9 + .../modernc.org/libc/musl/src/stdio/scanf.c | 14 + .../modernc.org/libc/musl/src/stdio/setbuf.c | 6 + .../libc/musl/src/stdio/setbuffer.c | 7 + .../libc/musl/src/stdio/setlinebuf.c | 7 + .../modernc.org/libc/musl/src/stdio/setvbuf.c | 29 + .../libc/musl/src/stdio/snprintf.c | 13 + .../modernc.org/libc/musl/src/stdio/sprintf.c | 12 + .../modernc.org/libc/musl/src/stdio/sscanf.c | 14 + .../modernc.org/libc/musl/src/stdio/stderr.c | 18 + .../modernc.org/libc/musl/src/stdio/stdin.c | 17 + .../modernc.org/libc/musl/src/stdio/stdout.c | 18 + .../libc/musl/src/stdio/swprintf.c | 13 + .../modernc.org/libc/musl/src/stdio/swscanf.c | 14 + .../modernc.org/libc/musl/src/stdio/tempnam.c | 49 + .../modernc.org/libc/musl/src/stdio/tmpfile.c | 31 + .../modernc.org/libc/musl/src/stdio/tmpnam.c | 29 + .../modernc.org/libc/musl/src/stdio/ungetc.c | 20 + .../modernc.org/libc/musl/src/stdio/ungetwc.c | 35 + .../libc/musl/src/stdio/vasprintf.c | 15 + .../libc/musl/src/stdio/vdprintf.c | 11 + .../libc/musl/src/stdio/vfprintf.c | 696 ++ .../modernc.org/libc/musl/src/stdio/vfscanf.c | 339 + .../libc/musl/src/stdio/vfwprintf.c | 365 + .../libc/musl/src/stdio/vfwscanf.c | 332 + .../modernc.org/libc/musl/src/stdio/vprintf.c | 6 + .../modernc.org/libc/musl/src/stdio/vscanf.c | 9 + .../libc/musl/src/stdio/vsnprintf.c | 55 + .../libc/musl/src/stdio/vsprintf.c | 7 + .../modernc.org/libc/musl/src/stdio/vsscanf.c | 27 + .../libc/musl/src/stdio/vswprintf.c | 60 + .../libc/musl/src/stdio/vswscanf.c | 38 + .../libc/musl/src/stdio/vwprintf.c | 7 + .../modernc.org/libc/musl/src/stdio/vwscanf.c | 10 + .../modernc.org/libc/musl/src/stdio/wprintf.c | 13 + .../modernc.org/libc/musl/src/stdio/wscanf.c | 15 + vendor/modernc.org/libc/musl/src/stdlib/abs.c | 6 + .../modernc.org/libc/musl/src/stdlib/atof.c | 6 + .../modernc.org/libc/musl/src/stdlib/atoi.c | 16 + .../modernc.org/libc/musl/src/stdlib/atol.c | 17 + .../modernc.org/libc/musl/src/stdlib/atoll.c | 17 + .../libc/musl/src/stdlib/bsearch.c | 20 + vendor/modernc.org/libc/musl/src/stdlib/div.c | 6 + .../modernc.org/libc/musl/src/stdlib/ecvt.c | 20 + .../modernc.org/libc/musl/src/stdlib/fcvt.c | 25 + .../modernc.org/libc/musl/src/stdlib/gcvt.c | 9 + .../libc/musl/src/stdlib/imaxabs.c | 6 + .../libc/musl/src/stdlib/imaxdiv.c | 6 + .../modernc.org/libc/musl/src/stdlib/labs.c | 6 + .../modernc.org/libc/musl/src/stdlib/ldiv.c | 6 + .../modernc.org/libc/musl/src/stdlib/llabs.c | 6 + .../modernc.org/libc/musl/src/stdlib/lldiv.c | 6 + .../modernc.org/libc/musl/src/stdlib/qsort.c | 218 + .../modernc.org/libc/musl/src/stdlib/strtod.c | 37 + .../modernc.org/libc/musl/src/stdlib/strtol.c | 56 + .../modernc.org/libc/musl/src/stdlib/wcstod.c | 64 + .../modernc.org/libc/musl/src/stdlib/wcstol.c | 81 + .../modernc.org/libc/musl/src/string/bcmp.c | 8 + .../modernc.org/libc/musl/src/string/bcopy.c | 8 + .../modernc.org/libc/musl/src/string/bzero.c | 8 + .../libc/musl/src/string/explicit_bzero.c | 8 + .../modernc.org/libc/musl/src/string/index.c | 8 + .../libc/musl/src/string/memccpy.c | 34 + .../modernc.org/libc/musl/src/string/memchr.c | 27 + .../modernc.org/libc/musl/src/string/memcmp.c | 8 + .../modernc.org/libc/musl/src/string/memcpy.c | 124 + .../modernc.org/libc/musl/src/string/memmem.c | 149 + .../libc/musl/src/string/memmove.c | 42 + .../libc/musl/src/string/mempcpy.c | 7 + .../libc/musl/src/string/memrchr.c | 11 + .../modernc.org/libc/musl/src/string/memset.c | 90 + .../modernc.org/libc/musl/src/string/rindex.c | 8 + .../modernc.org/libc/musl/src/string/stpcpy.c | 29 + .../libc/musl/src/string/stpncpy.c | 32 + .../libc/musl/src/string/strcasecmp.c | 16 + .../libc/musl/src/string/strcasestr.c | 9 + .../modernc.org/libc/musl/src/string/strcat.c | 7 + .../modernc.org/libc/musl/src/string/strchr.c | 7 + .../libc/musl/src/string/strchrnul.c | 28 + .../modernc.org/libc/musl/src/string/strcmp.c | 7 + .../modernc.org/libc/musl/src/string/strcpy.c | 7 + .../libc/musl/src/string/strcspn.c | 17 + .../modernc.org/libc/musl/src/string/strdup.c | 10 + .../libc/musl/src/string/strerror_r.c | 19 + .../libc/musl/src/string/strlcat.c | 9 + .../libc/musl/src/string/strlcpy.c | 34 + .../modernc.org/libc/musl/src/string/strlen.c | 22 + .../libc/musl/src/string/strncasecmp.c | 17 + .../libc/musl/src/string/strncat.c | 10 + .../libc/musl/src/string/strncmp.c | 9 + .../libc/musl/src/string/strncpy.c | 7 + .../libc/musl/src/string/strndup.c | 12 + .../libc/musl/src/string/strnlen.c | 7 + .../libc/musl/src/string/strpbrk.c | 7 + .../libc/musl/src/string/strrchr.c | 6 + .../modernc.org/libc/musl/src/string/strsep.c | 13 + .../libc/musl/src/string/strsignal.c | 126 + .../modernc.org/libc/musl/src/string/strspn.c | 20 + .../modernc.org/libc/musl/src/string/strstr.c | 154 + .../modernc.org/libc/musl/src/string/strtok.c | 13 + .../libc/musl/src/string/strtok_r.c | 12 + .../libc/musl/src/string/strverscmp.c | 34 + .../modernc.org/libc/musl/src/string/swab.c | 13 + .../modernc.org/libc/musl/src/string/wcpcpy.c | 6 + .../libc/musl/src/string/wcpncpy.c | 6 + .../libc/musl/src/string/wcscasecmp.c | 7 + .../libc/musl/src/string/wcscasecmp_l.c | 6 + .../modernc.org/libc/musl/src/string/wcscat.c | 7 + .../modernc.org/libc/musl/src/string/wcschr.c | 8 + .../modernc.org/libc/musl/src/string/wcscmp.c | 7 + .../modernc.org/libc/musl/src/string/wcscpy.c | 8 + .../libc/musl/src/string/wcscspn.c | 10 + .../modernc.org/libc/musl/src/string/wcsdup.c | 10 + .../modernc.org/libc/musl/src/string/wcslen.c | 8 + .../libc/musl/src/string/wcsncasecmp.c | 9 + .../libc/musl/src/string/wcsncasecmp_l.c | 6 + .../libc/musl/src/string/wcsncat.c | 10 + .../libc/musl/src/string/wcsncmp.c | 7 + .../libc/musl/src/string/wcsncpy.c | 9 + .../libc/musl/src/string/wcsnlen.c | 8 + .../libc/musl/src/string/wcspbrk.c | 7 + .../libc/musl/src/string/wcsrchr.c | 8 + .../modernc.org/libc/musl/src/string/wcsspn.c | 8 + .../modernc.org/libc/musl/src/string/wcsstr.c | 105 + .../modernc.org/libc/musl/src/string/wcstok.c | 12 + .../modernc.org/libc/musl/src/string/wcswcs.c | 6 + .../libc/musl/src/string/wmemchr.c | 7 + .../libc/musl/src/string/wmemcmp.c | 7 + .../libc/musl/src/string/wmemcpy.c | 8 + .../libc/musl/src/string/wmemmove.c | 13 + .../libc/musl/src/string/wmemset.c | 8 + .../libc/musl/src/temp/__randname.c | 18 + .../modernc.org/libc/musl/src/temp/mkdtemp.c | 23 + .../modernc.org/libc/musl/src/temp/mkostemp.c | 9 + .../libc/musl/src/temp/mkostemps.c | 29 + .../modernc.org/libc/musl/src/temp/mkstemp.c | 8 + .../modernc.org/libc/musl/src/temp/mkstemps.c | 9 + .../modernc.org/libc/musl/src/temp/mktemp.c | 30 + .../libc/musl/src/termios/cfgetospeed.c | 13 + .../libc/musl/src/termios/cfmakeraw.c | 13 + .../libc/musl/src/termios/cfsetospeed.c | 22 + .../libc/musl/src/termios/tcdrain.c | 8 + .../libc/musl/src/termios/tcflow.c | 7 + .../libc/musl/src/termios/tcflush.c | 7 + .../libc/musl/src/termios/tcgetattr.c | 9 + .../libc/musl/src/termios/tcgetsid.c | 10 + .../libc/musl/src/termios/tcsendbreak.c | 8 + .../libc/musl/src/termios/tcsetattr.c | 12 + .../modernc.org/libc/musl/src/thread/__lock.c | 62 + .../libc/musl/src/thread/__set_thread_area.c | 10 + .../libc/musl/src/thread/__syscall_cp.c | 20 + .../libc/musl/src/thread/__timedwait.c | 71 + .../libc/musl/src/thread/__tls_get_addr.c | 7 + .../libc/musl/src/thread/__unmapself.c | 24 + .../modernc.org/libc/musl/src/thread/__wait.c | 17 + .../musl/src/thread/arm/__set_thread_area.c | 52 + .../libc/musl/src/thread/call_once.c | 7 + .../modernc.org/libc/musl/src/thread/clone.c | 7 + .../libc/musl/src/thread/cnd_broadcast.c | 9 + .../libc/musl/src/thread/cnd_destroy.c | 6 + .../libc/musl/src/thread/cnd_init.c | 7 + .../libc/musl/src/thread/cnd_signal.c | 9 + .../libc/musl/src/thread/cnd_timedwait.c | 14 + .../libc/musl/src/thread/cnd_wait.c | 9 + .../libc/musl/src/thread/default_attr.c | 4 + .../libc/musl/src/thread/lock_ptc.c | 18 + .../libc/musl/src/thread/mtx_destroy.c | 5 + .../libc/musl/src/thread/mtx_init.c | 10 + .../libc/musl/src/thread/mtx_lock.c | 12 + .../libc/musl/src/thread/mtx_timedlock.c | 13 + .../libc/musl/src/thread/mtx_trylock.c | 15 + .../libc/musl/src/thread/mtx_unlock.c | 10 + .../libc/musl/src/thread/pthread_atfork.c | 49 + .../musl/src/thread/pthread_attr_destroy.c | 6 + .../libc/musl/src/thread/pthread_attr_get.c | 108 + .../libc/musl/src/thread/pthread_attr_init.c | 11 + .../src/thread/pthread_attr_setdetachstate.c | 8 + .../src/thread/pthread_attr_setguardsize.c | 8 + .../src/thread/pthread_attr_setinheritsched.c | 9 + .../src/thread/pthread_attr_setschedparam.c | 7 + .../src/thread/pthread_attr_setschedpolicy.c | 7 + .../musl/src/thread/pthread_attr_setscope.c | 13 + .../musl/src/thread/pthread_attr_setstack.c | 9 + .../src/thread/pthread_attr_setstacksize.c | 9 + .../musl/src/thread/pthread_barrier_destroy.c | 15 + .../musl/src/thread/pthread_barrier_init.c | 8 + .../musl/src/thread/pthread_barrier_wait.c | 111 + .../src/thread/pthread_barrierattr_destroy.c | 6 + .../src/thread/pthread_barrierattr_init.c | 7 + .../thread/pthread_barrierattr_setpshared.c | 8 + .../libc/musl/src/thread/pthread_cancel.c | 101 + .../musl/src/thread/pthread_cleanup_push.c | 20 + .../musl/src/thread/pthread_cond_broadcast.c | 10 + .../musl/src/thread/pthread_cond_destroy.c | 14 + .../libc/musl/src/thread/pthread_cond_init.c | 11 + .../musl/src/thread/pthread_cond_signal.c | 10 + .../musl/src/thread/pthread_cond_timedwait.c | 209 + .../libc/musl/src/thread/pthread_cond_wait.c | 6 + .../src/thread/pthread_condattr_destroy.c | 6 + .../musl/src/thread/pthread_condattr_init.c | 7 + .../src/thread/pthread_condattr_setclock.c | 9 + .../src/thread/pthread_condattr_setpshared.c | 9 + .../libc/musl/src/thread/pthread_create.c | 386 ++ .../libc/musl/src/thread/pthread_detach.c | 14 + .../libc/musl/src/thread/pthread_equal.c | 10 + .../libc/musl/src/thread/pthread_getattr_np.c | 24 + .../musl/src/thread/pthread_getconcurrency.c | 6 + .../musl/src/thread/pthread_getcpuclockid.c | 7 + .../musl/src/thread/pthread_getschedparam.c | 21 + .../musl/src/thread/pthread_getspecific.c | 11 + .../libc/musl/src/thread/pthread_join.c | 40 + .../libc/musl/src/thread/pthread_key_create.c | 91 + .../libc/musl/src/thread/pthread_kill.c | 18 + .../src/thread/pthread_mutex_consistent.c | 14 + .../musl/src/thread/pthread_mutex_destroy.c | 6 + .../src/thread/pthread_mutex_getprioceiling.c | 6 + .../libc/musl/src/thread/pthread_mutex_init.c | 8 + .../libc/musl/src/thread/pthread_mutex_lock.c | 17 + .../src/thread/pthread_mutex_setprioceiling.c | 6 + .../musl/src/thread/pthread_mutex_timedlock.c | 92 + .../musl/src/thread/pthread_mutex_trylock.c | 74 + .../musl/src/thread/pthread_mutex_unlock.c | 52 + .../src/thread/pthread_mutexattr_destroy.c | 6 + .../musl/src/thread/pthread_mutexattr_init.c | 7 + .../thread/pthread_mutexattr_setprotocol.c | 29 + .../src/thread/pthread_mutexattr_setpshared.c | 9 + .../src/thread/pthread_mutexattr_setrobust.c | 25 + .../src/thread/pthread_mutexattr_settype.c | 8 + .../libc/musl/src/thread/pthread_once.c | 50 + .../musl/src/thread/pthread_rwlock_destroy.c | 6 + .../musl/src/thread/pthread_rwlock_init.c | 8 + .../musl/src/thread/pthread_rwlock_rdlock.c | 8 + .../src/thread/pthread_rwlock_timedrdlock.c | 25 + .../src/thread/pthread_rwlock_timedwrlock.c | 25 + .../src/thread/pthread_rwlock_tryrdlock.c | 15 + .../src/thread/pthread_rwlock_trywrlock.c | 9 + .../musl/src/thread/pthread_rwlock_unlock.c | 20 + .../musl/src/thread/pthread_rwlock_wrlock.c | 8 + .../src/thread/pthread_rwlockattr_destroy.c | 6 + .../musl/src/thread/pthread_rwlockattr_init.c | 7 + .../thread/pthread_rwlockattr_setpshared.c | 8 + .../libc/musl/src/thread/pthread_self.c | 10 + .../src/thread/pthread_setattr_default_np.c | 37 + .../musl/src/thread/pthread_setcancelstate.c | 12 + .../musl/src/thread/pthread_setcanceltype.c | 11 + .../musl/src/thread/pthread_setconcurrency.c | 9 + .../libc/musl/src/thread/pthread_setname_np.c | 26 + .../musl/src/thread/pthread_setschedparam.c | 14 + .../musl/src/thread/pthread_setschedprio.c | 14 + .../musl/src/thread/pthread_setspecific.c | 12 + .../libc/musl/src/thread/pthread_sigmask.c | 19 + .../musl/src/thread/pthread_spin_destroy.c | 6 + .../libc/musl/src/thread/pthread_spin_init.c | 6 + .../libc/musl/src/thread/pthread_spin_lock.c | 8 + .../musl/src/thread/pthread_spin_trylock.c | 7 + .../musl/src/thread/pthread_spin_unlock.c | 7 + .../libc/musl/src/thread/pthread_testcancel.c | 14 + .../libc/musl/src/thread/sem_destroy.c | 6 + .../libc/musl/src/thread/sem_getvalue.c | 8 + .../libc/musl/src/thread/sem_init.c | 15 + .../libc/musl/src/thread/sem_open.c | 173 + .../libc/musl/src/thread/sem_post.c | 17 + .../libc/musl/src/thread/sem_timedwait.c | 31 + .../libc/musl/src/thread/sem_trywait.c | 13 + .../libc/musl/src/thread/sem_unlink.c | 7 + .../libc/musl/src/thread/sem_wait.c | 6 + .../musl/src/thread/sh/__set_thread_area.c | 37 + .../libc/musl/src/thread/sh/__unmapself.c | 24 + .../libc/musl/src/thread/synccall.c | 119 + .../libc/musl/src/thread/syscall_cp.c | 0 .../libc/musl/src/thread/thrd_create.c | 12 + .../libc/musl/src/thread/thrd_exit.c | 8 + .../libc/musl/src/thread/thrd_join.c | 11 + .../libc/musl/src/thread/thrd_sleep.c | 14 + .../libc/musl/src/thread/thrd_yield.c | 7 + vendor/modernc.org/libc/musl/src/thread/tls.c | 0 .../libc/musl/src/thread/tss_create.c | 10 + .../libc/musl/src/thread/tss_delete.c | 7 + .../libc/musl/src/thread/tss_set.c | 13 + .../modernc.org/libc/musl/src/thread/vmlock.c | 21 + .../libc/musl/src/time/__map_file.c | 19 + .../libc/musl/src/time/__month_to_secs.c | 10 + .../libc/musl/src/time/__secs_to_tm.c | 82 + .../libc/musl/src/time/__tm_to_secs.c | 24 + vendor/modernc.org/libc/musl/src/time/__tz.c | 422 ++ .../libc/musl/src/time/__year_to_secs.c | 47 + .../modernc.org/libc/musl/src/time/asctime.c | 7 + .../libc/musl/src/time/asctime_r.c | 28 + vendor/modernc.org/libc/musl/src/time/clock.c | 16 + .../libc/musl/src/time/clock_getcpuclockid.c | 14 + .../libc/musl/src/time/clock_getres.c | 21 + .../libc/musl/src/time/clock_gettime.c | 107 + .../libc/musl/src/time/clock_nanosleep.c | 38 + .../libc/musl/src/time/clock_settime.c | 24 + vendor/modernc.org/libc/musl/src/time/ctime.c | 8 + .../modernc.org/libc/musl/src/time/ctime_r.c | 7 + .../modernc.org/libc/musl/src/time/difftime.c | 6 + vendor/modernc.org/libc/musl/src/time/ftime.c | 12 + .../modernc.org/libc/musl/src/time/getdate.c | 46 + .../libc/musl/src/time/gettimeofday.c | 13 + .../modernc.org/libc/musl/src/time/gmtime.c | 8 + .../modernc.org/libc/musl/src/time/gmtime_r.c | 16 + .../libc/musl/src/time/localtime.c | 7 + .../libc/musl/src/time/localtime_r.c | 21 + .../modernc.org/libc/musl/src/time/mktime.c | 28 + .../libc/musl/src/time/nanosleep.c | 7 + .../modernc.org/libc/musl/src/time/strftime.c | 281 + .../modernc.org/libc/musl/src/time/strptime.c | 206 + vendor/modernc.org/libc/musl/src/time/time.c | 10 + .../libc/musl/src/time/time_impl.h | 11 + .../modernc.org/libc/musl/src/time/timegm.c | 18 + .../libc/musl/src/time/timer_create.c | 133 + .../libc/musl/src/time/timer_delete.c | 14 + .../libc/musl/src/time/timer_getoverrun.c | 12 + .../libc/musl/src/time/timer_gettime.c | 28 + .../libc/musl/src/time/timer_settime.c | 37 + vendor/modernc.org/libc/musl/src/time/times.c | 7 + .../libc/musl/src/time/timespec_get.c | 10 + vendor/modernc.org/libc/musl/src/time/utime.c | 11 + .../modernc.org/libc/musl/src/time/wcsftime.c | 71 + .../modernc.org/libc/musl/src/unistd/_exit.c | 7 + .../modernc.org/libc/musl/src/unistd/access.c | 12 + .../modernc.org/libc/musl/src/unistd/acct.c | 8 + .../modernc.org/libc/musl/src/unistd/alarm.c | 10 + .../modernc.org/libc/musl/src/unistd/chdir.c | 7 + .../modernc.org/libc/musl/src/unistd/chown.c | 12 + .../modernc.org/libc/musl/src/unistd/close.c | 18 + .../libc/musl/src/unistd/ctermid.c | 7 + vendor/modernc.org/libc/musl/src/unistd/dup.c | 7 + .../modernc.org/libc/musl/src/unistd/dup2.c | 20 + .../modernc.org/libc/musl/src/unistd/dup3.c | 24 + .../libc/musl/src/unistd/faccessat.c | 56 + .../modernc.org/libc/musl/src/unistd/fchdir.c | 15 + .../modernc.org/libc/musl/src/unistd/fchown.c | 20 + .../libc/musl/src/unistd/fchownat.c | 7 + .../libc/musl/src/unistd/fdatasync.c | 7 + .../modernc.org/libc/musl/src/unistd/fsync.c | 7 + .../libc/musl/src/unistd/ftruncate.c | 9 + .../modernc.org/libc/musl/src/unistd/getcwd.c | 25 + .../libc/musl/src/unistd/getegid.c | 7 + .../libc/musl/src/unistd/geteuid.c | 7 + .../modernc.org/libc/musl/src/unistd/getgid.c | 7 + .../libc/musl/src/unistd/getgroups.c | 7 + .../libc/musl/src/unistd/gethostname.c | 13 + .../libc/musl/src/unistd/getlogin.c | 7 + .../libc/musl/src/unistd/getlogin_r.c | 12 + .../libc/musl/src/unistd/getpgid.c | 7 + .../libc/musl/src/unistd/getpgrp.c | 7 + .../modernc.org/libc/musl/src/unistd/getpid.c | 7 + .../libc/musl/src/unistd/getppid.c | 7 + .../modernc.org/libc/musl/src/unistd/getsid.c | 7 + .../modernc.org/libc/musl/src/unistd/getuid.c | 7 + .../modernc.org/libc/musl/src/unistd/isatty.c | 13 + .../modernc.org/libc/musl/src/unistd/lchown.c | 12 + .../modernc.org/libc/musl/src/unistd/link.c | 12 + .../modernc.org/libc/musl/src/unistd/linkat.c | 7 + .../modernc.org/libc/musl/src/unistd/lseek.c | 15 + .../libc/musl/src/unistd/mipsn32/lseek.c | 20 + .../modernc.org/libc/musl/src/unistd/nice.c | 16 + .../modernc.org/libc/musl/src/unistd/pause.c | 11 + .../modernc.org/libc/musl/src/unistd/pipe.c | 11 + .../modernc.org/libc/musl/src/unistd/pipe2.c | 22 + .../libc/musl/src/unistd/posix_close.c | 6 + .../modernc.org/libc/musl/src/unistd/pread.c | 9 + .../modernc.org/libc/musl/src/unistd/preadv.c | 12 + .../modernc.org/libc/musl/src/unistd/pwrite.c | 9 + .../libc/musl/src/unistd/pwritev.c | 12 + .../modernc.org/libc/musl/src/unistd/read.c | 7 + .../libc/musl/src/unistd/readlink.c | 12 + .../libc/musl/src/unistd/readlinkat.c | 7 + .../modernc.org/libc/musl/src/unistd/readv.c | 7 + .../libc/musl/src/unistd/renameat.c | 11 + .../modernc.org/libc/musl/src/unistd/rmdir.c | 12 + .../libc/musl/src/unistd/setegid.c | 8 + .../libc/musl/src/unistd/seteuid.c | 8 + .../modernc.org/libc/musl/src/unistd/setgid.c | 8 + .../libc/musl/src/unistd/setpgid.c | 7 + .../libc/musl/src/unistd/setpgrp.c | 6 + .../libc/musl/src/unistd/setregid.c | 8 + .../libc/musl/src/unistd/setresgid.c | 9 + .../libc/musl/src/unistd/setresuid.c | 9 + .../libc/musl/src/unistd/setreuid.c | 8 + .../modernc.org/libc/musl/src/unistd/setsid.c | 7 + .../modernc.org/libc/musl/src/unistd/setuid.c | 8 + .../modernc.org/libc/musl/src/unistd/setxid.c | 39 + .../modernc.org/libc/musl/src/unistd/sleep.c | 10 + .../libc/musl/src/unistd/symlink.c | 12 + .../libc/musl/src/unistd/symlinkat.c | 7 + .../modernc.org/libc/musl/src/unistd/sync.c | 7 + .../libc/musl/src/unistd/tcgetpgrp.c | 11 + .../libc/musl/src/unistd/tcsetpgrp.c | 9 + .../libc/musl/src/unistd/truncate.c | 9 + .../libc/musl/src/unistd/ttyname.c | 14 + .../libc/musl/src/unistd/ttyname_r.c | 28 + .../modernc.org/libc/musl/src/unistd/ualarm.c | 13 + .../modernc.org/libc/musl/src/unistd/unlink.c | 12 + .../libc/musl/src/unistd/unlinkat.c | 7 + .../modernc.org/libc/musl/src/unistd/usleep.c | 12 + .../modernc.org/libc/musl/src/unistd/write.c | 7 + .../modernc.org/libc/musl/src/unistd/writev.c | 7 + .../libc/musl/src/unistd/x32/lseek.c | 15 + vendor/modernc.org/libc/netbsd/ctype_.c | 160 + vendor/modernc.org/libc/netbsd/ctype_.cpp.c | 2233 ++++++ vendor/modernc.org/libc/netbsd/ctype_local.h | 54 + .../libc/testdata/memgrind/badfree.c | 15 + .../libc/testdata/memgrind/doublefree.c | 16 + .../modernc.org/libc/testdata/memgrind/leak.c | 13 + walletdatabase/migrations/bindata.go | 33 +- 2372 files changed, 131316 insertions(+), 11510 deletions(-) create mode 100644 _assets/generate_handlers/generate_handlers.go create mode 100644 _assets/generate_handlers/generate_handlers_template.txt create mode 100644 protocol/messenger_handlers.go create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.h create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.c create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.h create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.h create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.c create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.h create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/main_impl.h create mode 100644 vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/tests_impl.h create mode 100644 vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_regexp/sqlite3_mod_regexp.c create mode 100644 vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_vtable/picojson.h create mode 100644 vendor/modernc.org/libc/freebsd/mblocal.h create mode 100644 vendor/modernc.org/libc/freebsd/setlocale.h create mode 100644 vendor/modernc.org/libc/freebsd/table.c create mode 100644 vendor/modernc.org/libc/freebsd/table.cpp.c create mode 100644 vendor/modernc.org/libc/freebsd/xlocale_private.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/fp_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/aarch64/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/ioctl_fix.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/arm/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/dirent.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/io.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/ioctl_fix.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/ipc.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/kd.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/link.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/poll.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/resource.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/soundcard.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/bits/vt.h create mode 100644 vendor/modernc.org/libc/musl/arch/generic/fp_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/io.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/i386/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/m68k/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/microblaze/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/poll.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/resource.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/ipc.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/poll.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/resource.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/mips64/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/poll.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/resource.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/mipsn32/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/or1k/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/ipc.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/errno.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/ipc.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/termios.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/powerpc64/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/riscv64/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/ioctl_fix.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/link.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/s390x/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/hwcap.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/ipcstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/sh/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/io.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/ioctl_fix.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/ipc.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/msg.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/shm.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/socket.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/statfs.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/x32/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/atomic_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/fenv.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/float.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/io.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/limits.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/mman.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/posix.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/reg.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/sem.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/signal.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/stat.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/stdint.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/bits/user.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/crt_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/kstat.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/pthread_arch.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/reloc.h create mode 100644 vendor/modernc.org/libc/musl/arch/x86_64/syscall_arch.h create mode 100644 vendor/modernc.org/libc/musl/compat/time32/__xstat.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/adjtime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/adjtimex_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/aio_suspend_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/clock_adjtime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/clock_getres_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/clock_gettime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/clock_nanosleep_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/clock_settime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/cnd_timedwait_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/ctime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/ctime32_r.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/difftime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/fstat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/fstatat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/ftime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/futimens_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/futimes_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/futimesat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/getitimer_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/getrusage_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/gettimeofday_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/gmtime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/gmtime32_r.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/localtime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/localtime32_r.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/lstat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/lutimes_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/mktime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/mq_timedreceive_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/mq_timedsend_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/mtx_timedlock_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/nanosleep_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/ppoll_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pselect_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pthread_cond_timedwait_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pthread_mutex_timedlock_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedrdlock_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedwrlock_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/pthread_timedjoin_np_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/recvmmsg_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/sched_rr_get_interval_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/select_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/sem_timedwait_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/semtimedop_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/setitimer_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/settimeofday_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/sigtimedwait_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/stat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/stime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/thrd_sleep_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/time32.h create mode 100644 vendor/modernc.org/libc/musl/compat/time32/time32gm.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/timer_gettime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/timer_settime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/timerfd_gettime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/timerfd_settime32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/timespec_get_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/utime_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/utimensat_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/utimes_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/wait3_time32.c create mode 100644 vendor/modernc.org/libc/musl/compat/time32/wait4_time32.c create mode 100644 vendor/modernc.org/libc/musl/copyright.c create mode 100644 vendor/modernc.org/libc/musl/crt/Scrt1.c create mode 100644 vendor/modernc.org/libc/musl/crt/crt1.c create mode 100644 vendor/modernc.org/libc/musl/crt/crti.c create mode 100644 vendor/modernc.org/libc/musl/crt/crtn.c create mode 100644 vendor/modernc.org/libc/musl/crt/rcrt1.c create mode 100644 vendor/modernc.org/libc/musl/include/aio.h create mode 100644 vendor/modernc.org/libc/musl/include/alloca.h create mode 100644 vendor/modernc.org/libc/musl/include/ar.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/ftp.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/inet.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/nameser.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/nameser_compat.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/telnet.h create mode 100644 vendor/modernc.org/libc/musl/include/arpa/tftp.h create mode 100644 vendor/modernc.org/libc/musl/include/assert.h create mode 100644 vendor/modernc.org/libc/musl/include/byteswap.h create mode 100644 vendor/modernc.org/libc/musl/include/complex.h create mode 100644 vendor/modernc.org/libc/musl/include/cpio.h create mode 100644 vendor/modernc.org/libc/musl/include/crypt.h create mode 100644 vendor/modernc.org/libc/musl/include/ctype.h create mode 100644 vendor/modernc.org/libc/musl/include/dirent.h create mode 100644 vendor/modernc.org/libc/musl/include/dlfcn.h create mode 100644 vendor/modernc.org/libc/musl/include/elf.h create mode 100644 vendor/modernc.org/libc/musl/include/endian.h create mode 100644 vendor/modernc.org/libc/musl/include/err.h create mode 100644 vendor/modernc.org/libc/musl/include/errno.h create mode 100644 vendor/modernc.org/libc/musl/include/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/include/features.h create mode 100644 vendor/modernc.org/libc/musl/include/fenv.h create mode 100644 vendor/modernc.org/libc/musl/include/float.h create mode 100644 vendor/modernc.org/libc/musl/include/fmtmsg.h create mode 100644 vendor/modernc.org/libc/musl/include/fnmatch.h create mode 100644 vendor/modernc.org/libc/musl/include/ftw.h create mode 100644 vendor/modernc.org/libc/musl/include/getopt.h create mode 100644 vendor/modernc.org/libc/musl/include/glob.h create mode 100644 vendor/modernc.org/libc/musl/include/grp.h create mode 100644 vendor/modernc.org/libc/musl/include/iconv.h create mode 100644 vendor/modernc.org/libc/musl/include/ifaddrs.h create mode 100644 vendor/modernc.org/libc/musl/include/inttypes.h create mode 100644 vendor/modernc.org/libc/musl/include/iso646.h create mode 100644 vendor/modernc.org/libc/musl/include/langinfo.h create mode 100644 vendor/modernc.org/libc/musl/include/lastlog.h create mode 100644 vendor/modernc.org/libc/musl/include/libgen.h create mode 100644 vendor/modernc.org/libc/musl/include/libintl.h create mode 100644 vendor/modernc.org/libc/musl/include/limits.h create mode 100644 vendor/modernc.org/libc/musl/include/link.h create mode 100644 vendor/modernc.org/libc/musl/include/locale.h create mode 100644 vendor/modernc.org/libc/musl/include/malloc.h create mode 100644 vendor/modernc.org/libc/musl/include/math.h create mode 100644 vendor/modernc.org/libc/musl/include/memory.h create mode 100644 vendor/modernc.org/libc/musl/include/mntent.h create mode 100644 vendor/modernc.org/libc/musl/include/monetary.h create mode 100644 vendor/modernc.org/libc/musl/include/mqueue.h create mode 100644 vendor/modernc.org/libc/musl/include/net/ethernet.h create mode 100644 vendor/modernc.org/libc/musl/include/net/if.h create mode 100644 vendor/modernc.org/libc/musl/include/net/if_arp.h create mode 100644 vendor/modernc.org/libc/musl/include/net/route.h create mode 100644 vendor/modernc.org/libc/musl/include/netdb.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/ether.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/icmp6.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/if_ether.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/igmp.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/in.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/in_systm.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/ip.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/ip6.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/ip_icmp.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/tcp.h create mode 100644 vendor/modernc.org/libc/musl/include/netinet/udp.h create mode 100644 vendor/modernc.org/libc/musl/include/netpacket/packet.h create mode 100644 vendor/modernc.org/libc/musl/include/nl_types.h create mode 100644 vendor/modernc.org/libc/musl/include/paths.h create mode 100644 vendor/modernc.org/libc/musl/include/poll.h create mode 100644 vendor/modernc.org/libc/musl/include/pthread.h create mode 100644 vendor/modernc.org/libc/musl/include/pty.h create mode 100644 vendor/modernc.org/libc/musl/include/pwd.h create mode 100644 vendor/modernc.org/libc/musl/include/regex.h create mode 100644 vendor/modernc.org/libc/musl/include/resolv.h create mode 100644 vendor/modernc.org/libc/musl/include/sched.h create mode 100644 vendor/modernc.org/libc/musl/include/scsi/scsi.h create mode 100644 vendor/modernc.org/libc/musl/include/scsi/scsi_ioctl.h create mode 100644 vendor/modernc.org/libc/musl/include/scsi/sg.h create mode 100644 vendor/modernc.org/libc/musl/include/search.h create mode 100644 vendor/modernc.org/libc/musl/include/semaphore.h create mode 100644 vendor/modernc.org/libc/musl/include/setjmp.h create mode 100644 vendor/modernc.org/libc/musl/include/shadow.h create mode 100644 vendor/modernc.org/libc/musl/include/signal.h create mode 100644 vendor/modernc.org/libc/musl/include/spawn.h create mode 100644 vendor/modernc.org/libc/musl/include/stdalign.h create mode 100644 vendor/modernc.org/libc/musl/include/stdarg.h create mode 100644 vendor/modernc.org/libc/musl/include/stdbool.h create mode 100644 vendor/modernc.org/libc/musl/include/stdc-predef.h create mode 100644 vendor/modernc.org/libc/musl/include/stddef.h create mode 100644 vendor/modernc.org/libc/musl/include/stdint.h create mode 100644 vendor/modernc.org/libc/musl/include/stdio.h create mode 100644 vendor/modernc.org/libc/musl/include/stdio_ext.h create mode 100644 vendor/modernc.org/libc/musl/include/stdlib.h create mode 100644 vendor/modernc.org/libc/musl/include/stdnoreturn.h create mode 100644 vendor/modernc.org/libc/musl/include/string.h create mode 100644 vendor/modernc.org/libc/musl/include/strings.h create mode 100644 vendor/modernc.org/libc/musl/include/stropts.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/acct.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/auxv.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/cachectl.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/dir.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/epoll.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/errno.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/eventfd.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/fanotify.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/fcntl.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/file.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/fsuid.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/inotify.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/io.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/ioctl.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/ipc.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/kd.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/klog.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/membarrier.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/mman.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/mount.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/msg.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/mtio.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/param.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/personality.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/poll.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/prctl.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/procfs.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/ptrace.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/quota.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/random.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/reboot.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/reg.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/resource.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/select.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/sem.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/sendfile.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/shm.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/signal.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/signalfd.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/socket.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/soundcard.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/stat.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/statfs.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/statvfs.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/stropts.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/swap.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/syscall.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/sysinfo.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/syslog.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/sysmacros.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/termios.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/time.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/timeb.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/timerfd.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/times.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/timex.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/ttydefaults.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/types.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/ucontext.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/uio.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/un.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/user.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/utsname.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/vfs.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/vt.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/wait.h create mode 100644 vendor/modernc.org/libc/musl/include/sys/xattr.h create mode 100644 vendor/modernc.org/libc/musl/include/syscall.h create mode 100644 vendor/modernc.org/libc/musl/include/sysexits.h create mode 100644 vendor/modernc.org/libc/musl/include/syslog.h create mode 100644 vendor/modernc.org/libc/musl/include/tar.h create mode 100644 vendor/modernc.org/libc/musl/include/termios.h create mode 100644 vendor/modernc.org/libc/musl/include/tgmath.h create mode 100644 vendor/modernc.org/libc/musl/include/threads.h create mode 100644 vendor/modernc.org/libc/musl/include/time.h create mode 100644 vendor/modernc.org/libc/musl/include/uchar.h create mode 100644 vendor/modernc.org/libc/musl/include/ucontext.h create mode 100644 vendor/modernc.org/libc/musl/include/ulimit.h create mode 100644 vendor/modernc.org/libc/musl/include/unistd.h create mode 100644 vendor/modernc.org/libc/musl/include/utime.h create mode 100644 vendor/modernc.org/libc/musl/include/utmp.h create mode 100644 vendor/modernc.org/libc/musl/include/utmpx.h create mode 100644 vendor/modernc.org/libc/musl/include/values.h create mode 100644 vendor/modernc.org/libc/musl/include/wait.h create mode 100644 vendor/modernc.org/libc/musl/include/wchar.h create mode 100644 vendor/modernc.org/libc/musl/include/wctype.h create mode 100644 vendor/modernc.org/libc/musl/include/wordexp.h create mode 100644 vendor/modernc.org/libc/musl/ldso/dlstart.c create mode 100644 vendor/modernc.org/libc/musl/ldso/dynlink.c create mode 100644 vendor/modernc.org/libc/musl/src/aio/aio.c create mode 100644 vendor/modernc.org/libc/musl/src/aio/aio_suspend.c create mode 100644 vendor/modernc.org/libc/musl/src/aio/lio_listio.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/__cexp.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/__cexpf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cabs.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cabsl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacos.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacosf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacosh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacoshf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacoshl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cacosl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/carg.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cargf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cargl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casin.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casinf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casinh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casinhf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casinhl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/casinl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catan.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catanf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catanh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catanhf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catanhl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/catanl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccos.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccosf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccosh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccoshf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccoshl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ccosl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cexp.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cexpf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cexpl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cimag.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cimagf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cimagl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/clog.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/clogf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/clogl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/conj.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/conjf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/conjl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cpow.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cpowf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cpowl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cproj.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cprojf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/cprojl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/creal.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/crealf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/creall.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csin.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csinf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csinh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csinhf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csinhl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csinl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/csqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctan.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctanf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctanh.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctanhf.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctanhl.c create mode 100644 vendor/modernc.org/libc/musl/src/complex/ctanl.c create mode 100644 vendor/modernc.org/libc/musl/src/conf/confstr.c create mode 100644 vendor/modernc.org/libc/musl/src/conf/fpathconf.c create mode 100644 vendor/modernc.org/libc/musl/src/conf/legacy.c create mode 100644 vendor/modernc.org/libc/musl/src/conf/pathconf.c create mode 100644 vendor/modernc.org/libc/musl/src/conf/sysconf.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_blowfish.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_des.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_des.h create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_md5.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_r.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_sha256.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/crypt_sha512.c create mode 100644 vendor/modernc.org/libc/musl/src/crypt/encrypt.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/__ctype_b_loc.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/__ctype_get_mb_cur_max.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/__ctype_tolower_loc.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/__ctype_toupper_loc.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/alpha.h create mode 100644 vendor/modernc.org/libc/musl/src/ctype/casemap.h create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isalnum.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isalpha.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isascii.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isblank.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iscntrl.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isdigit.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isgraph.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/islower.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isprint.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/ispunct.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isspace.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isupper.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswalnum.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswalpha.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswblank.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswcntrl.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswctype.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswdigit.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswgraph.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswlower.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswprint.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswpunct.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswspace.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswupper.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/iswxdigit.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/isxdigit.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/nonspacing.h create mode 100644 vendor/modernc.org/libc/musl/src/ctype/punct.h create mode 100644 vendor/modernc.org/libc/musl/src/ctype/toascii.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/tolower.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/toupper.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/towctrans.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/wcswidth.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/wctrans.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/wcwidth.c create mode 100644 vendor/modernc.org/libc/musl/src/ctype/wide.h create mode 100644 vendor/modernc.org/libc/musl/src/dirent/__dirent.h create mode 100644 vendor/modernc.org/libc/musl/src/dirent/alphasort.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/closedir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/dirfd.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/fdopendir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/opendir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/readdir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/readdir_r.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/rewinddir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/scandir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/seekdir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/telldir.c create mode 100644 vendor/modernc.org/libc/musl/src/dirent/versionsort.c create mode 100644 vendor/modernc.org/libc/musl/src/env/__environ.c create mode 100644 vendor/modernc.org/libc/musl/src/env/__init_tls.c create mode 100644 vendor/modernc.org/libc/musl/src/env/__libc_start_main.c create mode 100644 vendor/modernc.org/libc/musl/src/env/__reset_tls.c create mode 100644 vendor/modernc.org/libc/musl/src/env/__stack_chk_fail.c create mode 100644 vendor/modernc.org/libc/musl/src/env/clearenv.c create mode 100644 vendor/modernc.org/libc/musl/src/env/getenv.c create mode 100644 vendor/modernc.org/libc/musl/src/env/putenv.c create mode 100644 vendor/modernc.org/libc/musl/src/env/secure_getenv.c create mode 100644 vendor/modernc.org/libc/musl/src/env/setenv.c create mode 100644 vendor/modernc.org/libc/musl/src/env/unsetenv.c create mode 100644 vendor/modernc.org/libc/musl/src/errno/__errno_location.c create mode 100644 vendor/modernc.org/libc/musl/src/errno/__strerror.h create mode 100644 vendor/modernc.org/libc/musl/src/errno/strerror.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/_Exit.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/abort.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/arm/__aeabi_atexit.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/assert.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/at_quick_exit.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/atexit.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/exit.c create mode 100644 vendor/modernc.org/libc/musl/src/exit/quick_exit.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/creat.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/fcntl.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/open.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/openat.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/posix_fadvise.c create mode 100644 vendor/modernc.org/libc/musl/src/fcntl/posix_fallocate.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/__flt_rounds.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/arm/fenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/fegetexceptflag.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/feholdexcept.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/fenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/fesetexceptflag.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/fesetround.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/feupdateenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/m68k/fenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/mips/fenv-sf.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/mips64/fenv-sf.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/mipsn32/fenv-sf.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/powerpc/fenv-sf.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/powerpc64/fenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/riscv64/fenv-sf.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/s390x/fenv.c create mode 100644 vendor/modernc.org/libc/musl/src/fenv/sh/fenv-nofpu.c create mode 100644 vendor/modernc.org/libc/musl/src/include/arpa/inet.h create mode 100644 vendor/modernc.org/libc/musl/src/include/crypt.h create mode 100644 vendor/modernc.org/libc/musl/src/include/errno.h create mode 100644 vendor/modernc.org/libc/musl/src/include/features.h create mode 100644 vendor/modernc.org/libc/musl/src/include/langinfo.h create mode 100644 vendor/modernc.org/libc/musl/src/include/pthread.h create mode 100644 vendor/modernc.org/libc/musl/src/include/resolv.h create mode 100644 vendor/modernc.org/libc/musl/src/include/signal.h create mode 100644 vendor/modernc.org/libc/musl/src/include/stdio.h create mode 100644 vendor/modernc.org/libc/musl/src/include/stdlib.h create mode 100644 vendor/modernc.org/libc/musl/src/include/string.h create mode 100644 vendor/modernc.org/libc/musl/src/include/sys/auxv.h create mode 100644 vendor/modernc.org/libc/musl/src/include/sys/membarrier.h create mode 100644 vendor/modernc.org/libc/musl/src/include/sys/mman.h create mode 100644 vendor/modernc.org/libc/musl/src/include/sys/sysinfo.h create mode 100644 vendor/modernc.org/libc/musl/src/include/sys/time.h create mode 100644 vendor/modernc.org/libc/musl/src/include/time.h create mode 100644 vendor/modernc.org/libc/musl/src/include/unistd.h create mode 100644 vendor/modernc.org/libc/musl/src/include/wchar.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/atomic.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/complex_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/defsysinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/dynlink.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/fdpic_crt.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/floatscan.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/floatscan.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/futex.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/intscan.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/intscan.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/ksigaction.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/libc.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/libc.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/libm.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/locale_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/lock.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/procfdname.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/pthread_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/sh/__shcall.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/shgetc.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/shgetc.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/stdio_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/syscall.h create mode 100644 vendor/modernc.org/libc/musl/src/internal/syscall_ret.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/vdso.c create mode 100644 vendor/modernc.org/libc/musl/src/internal/version.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/ftok.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/ipc.h create mode 100644 vendor/modernc.org/libc/musl/src/ipc/msgctl.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/msgget.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/msgrcv.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/msgsnd.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/semctl.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/semget.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/semop.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/semtimedop.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/shmat.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/shmctl.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/shmdt.c create mode 100644 vendor/modernc.org/libc/musl/src/ipc/shmget.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/__dlsym.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/arm/find_exidx.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dl_iterate_phdr.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dladdr.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dlclose.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dlerror.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dlinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dlopen.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/dlsym.c create mode 100644 vendor/modernc.org/libc/musl/src/ldso/tlsdesc.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/cuserid.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/daemon.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/err.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/euidaccess.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/ftw.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/futimes.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/getdtablesize.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/getloadavg.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/getpagesize.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/getpass.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/getusershell.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/isastream.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/lutimes.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/ulimit.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/utmpx.c create mode 100644 vendor/modernc.org/libc/musl/src/legacy/valloc.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/adjtime.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/adjtimex.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/arch_prctl.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/brk.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/cache.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/cap.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/chroot.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/clock_adjtime.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/clone.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/copy_file_range.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/epoll.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/eventfd.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/fallocate.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/fanotify.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/flock.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/getdents.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/getrandom.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/inotify.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/ioperm.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/iopl.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/klogctl.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/membarrier.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/memfd_create.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/mlock2.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/module.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/mount.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/name_to_handle_at.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/open_by_handle_at.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/personality.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/pivot_root.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/ppoll.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/prctl.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/prlimit.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/process_vm.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/ptrace.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/quotactl.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/readahead.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/reboot.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/remap_file_pages.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/sbrk.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/sendfile.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/setfsgid.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/setfsuid.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/setgroups.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/sethostname.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/setns.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/settimeofday.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/signalfd.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/splice.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/stime.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/swap.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/sync_file_range.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/syncfs.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/sysinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/tee.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/timerfd.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/unshare.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/utimes.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/vhangup.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/vmsplice.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/wait3.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/wait4.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/x32/sysinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/linux/xattr.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/__lctrans.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/__mo_lookup.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/big5.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/bind_textdomain_codeset.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/c_locale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/catclose.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/catgets.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/catopen.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/codepages.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/dcngettext.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/duplocale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/freelocale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/gb18030.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/hkscs.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/iconv.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/iconv_close.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/jis0208.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/ksc.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/langinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/legacychars.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/locale_map.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/localeconv.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/newlocale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/pleval.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/pleval.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/revjis.h create mode 100644 vendor/modernc.org/libc/musl/src/locale/setlocale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/strcoll.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/strfmon.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/strxfrm.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/textdomain.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/uselocale.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/wcscoll.c create mode 100644 vendor/modernc.org/libc/musl/src/locale/wcsxfrm.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/calloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/lite_malloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/aligned_alloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/donate.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/free.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/glue.h create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc_usable_size.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/meta.h create mode 100644 vendor/modernc.org/libc/musl/src/malloc/mallocng/realloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/memalign.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/oldmalloc/aligned_alloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/posix_memalign.c create mode 100644 vendor/modernc.org/libc/musl/src/malloc/replaced.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__cos.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__cosdf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__cosl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__expo2.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__expo2f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__fpclassify.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__fpclassifyf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__fpclassifyl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__invtrigl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__invtrigl.h create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_divzero.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_divzerof.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_invalid.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_invalidf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_oflow.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_oflowf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_uflow.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_uflowf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_xflow.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__math_xflowf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__polevll.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__rem_pio2.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__rem_pio2_large.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__rem_pio2f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__rem_pio2l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__signbit.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__signbitf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__signbitl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__sin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__sindf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__sinl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__tan.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__tandf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/__tanl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/ceil.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/ceilf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/floor.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/floorf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fmax.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fmaxf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fmin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/fminf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/llrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/llrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/llround.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/llroundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/lrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/lrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/lround.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/lroundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/nearbyint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/nearbyintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/rint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/rintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/round.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/roundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/trunc.c create mode 100644 vendor/modernc.org/libc/musl/src/math/aarch64/truncf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acos.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acosf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acosh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acoshf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acoshl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/acosl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/arm/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asinf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asinh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asinhf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asinhl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/asinl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atan.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atan2.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atan2f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atan2l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atanf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atanh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atanhf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atanhl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/atanl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cbrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cbrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cbrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ceil.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ceilf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ceill.c create mode 100644 vendor/modernc.org/libc/musl/src/math/copysign.c create mode 100644 vendor/modernc.org/libc/musl/src/math/copysignf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/copysignl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cos.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cosf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cosh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/coshf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/coshl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/cosl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/erf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/erff.c create mode 100644 vendor/modernc.org/libc/musl/src/math/erfl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp10.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp10f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp10l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp2.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp2f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp2f_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp2f_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/exp2l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/exp_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/expf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/expl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/expm1.c create mode 100644 vendor/modernc.org/libc/musl/src/math/expm1f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/expm1l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fabsl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fdim.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fdimf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fdiml.c create mode 100644 vendor/modernc.org/libc/musl/src/math/finite.c create mode 100644 vendor/modernc.org/libc/musl/src/math/finitef.c create mode 100644 vendor/modernc.org/libc/musl/src/math/floor.c create mode 100644 vendor/modernc.org/libc/musl/src/math/floorf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/floorl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmal.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmax.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmaxf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmaxl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fminf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fminl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmod.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmodf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/fmodl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/frexp.c create mode 100644 vendor/modernc.org/libc/musl/src/math/frexpf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/frexpl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/hypot.c create mode 100644 vendor/modernc.org/libc/musl/src/math/hypotf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/hypotl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fabsl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fmod.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fmodf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/fmodl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/llrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/llrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/llrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/lrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/lrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/lrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/remainder.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/remainderf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/remainderl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/rint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/rintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/rintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/i386/sqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ilogb.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ilogbf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ilogbl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/j0.c create mode 100644 vendor/modernc.org/libc/musl/src/math/j0f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/j1.c create mode 100644 vendor/modernc.org/libc/musl/src/math/j1f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/jn.c create mode 100644 vendor/modernc.org/libc/musl/src/math/jnf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ldexp.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ldexpf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/ldexpl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lgamma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lgamma_r.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lgammaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lgammaf_r.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lgammal.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llround.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llroundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/llroundl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log10.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log10f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log10l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log1p.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log1pf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log1pl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log2.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log2_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log2_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/log2f.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log2f_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log2f_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/log2l.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/log_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/logb.c create mode 100644 vendor/modernc.org/libc/musl/src/math/logbf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/logbl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/logf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/logf_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/logf_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/logl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lround.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lroundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/lroundl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/m68k/sqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/mips/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/mips/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/mips/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/mips/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/modf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/modff.c create mode 100644 vendor/modernc.org/libc/musl/src/math/modfl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nan.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nanf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nanl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nearbyint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nearbyintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nearbyintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nextafter.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nextafterf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nextafterl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nexttoward.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nexttowardf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/nexttowardl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/pow.c create mode 100644 vendor/modernc.org/libc/musl/src/math/pow_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/pow_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/ceil.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/ceilf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/floor.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/floorf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fmax.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fmaxf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fmin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/fminf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/lrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/lrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/lround.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/lroundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/round.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/roundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/trunc.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powerpc64/truncf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powf_data.c create mode 100644 vendor/modernc.org/libc/musl/src/math/powf_data.h create mode 100644 vendor/modernc.org/libc/musl/src/math/powl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remainder.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remainderf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remainderl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remquo.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remquof.c create mode 100644 vendor/modernc.org/libc/musl/src/math/remquol.c create mode 100644 vendor/modernc.org/libc/musl/src/math/rint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/rintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/rintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/copysign.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/copysignf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fmax.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fmaxf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fmin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/fminf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/riscv64/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/round.c create mode 100644 vendor/modernc.org/libc/musl/src/math/roundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/roundl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/ceil.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/ceilf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/ceill.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/fabsl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/floor.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/floorf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/floorl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/nearbyint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/nearbyintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/nearbyintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/rint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/rintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/rintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/round.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/roundf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/roundl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/sqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/trunc.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/truncf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/s390x/truncl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalb.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalbf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalbln.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalblnf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalblnl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalbn.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalbnf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/scalbnl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/signgam.c create mode 100644 vendor/modernc.org/libc/musl/src/math/significand.c create mode 100644 vendor/modernc.org/libc/musl/src/math/significandf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sin.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sincos.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sincosf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sincosl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sinf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sinh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sinhf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sinhl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sinl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/sqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tan.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tanf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tanh.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tanhf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tanhl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tanl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tgamma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tgammaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/tgammal.c create mode 100644 vendor/modernc.org/libc/musl/src/math/trunc.c create mode 100644 vendor/modernc.org/libc/musl/src/math/truncf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/truncl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x32/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x32/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fabs.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fabsf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fabsl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fma.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fmaf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/fmodl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/llrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/llrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/llrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/lrint.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/lrintf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/lrintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/remainderl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/remquol.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/rintl.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/sqrt.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/sqrtf.c create mode 100644 vendor/modernc.org/libc/musl/src/math/x86_64/sqrtl.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/a64l.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/basename.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/dirname.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/ffs.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/ffsl.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/ffsll.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/fmtmsg.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/forkpty.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/get_current_dir_name.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getauxval.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getdomainname.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getentropy.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/gethostid.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getopt.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getopt_long.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getpriority.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getresgid.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getresuid.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getrlimit.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getrusage.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/getsubopt.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/initgroups.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/ioctl.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/issetugid.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/lockf.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/login_tty.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/mntent.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/nftw.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/openpty.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/ptsname.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/pty.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/realpath.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/setdomainname.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/setpriority.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/setrlimit.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/syscall.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/syslog.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/uname.c create mode 100644 vendor/modernc.org/libc/musl/src/misc/wordexp.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/madvise.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mincore.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mlock.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mlockall.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mmap.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mprotect.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/mremap.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/msync.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/munlock.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/munlockall.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/munmap.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/posix_madvise.c create mode 100644 vendor/modernc.org/libc/musl/src/mman/shm_open.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_close.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_getattr.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_notify.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_open.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_receive.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_send.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_setattr.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_timedreceive.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_timedsend.c create mode 100644 vendor/modernc.org/libc/musl/src/mq/mq_unlink.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/btowc.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/c16rtomb.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/c32rtomb.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/internal.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/internal.h create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mblen.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbrlen.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbrtoc16.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbrtoc32.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbrtowc.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbsinit.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbsnrtowcs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbsrtowcs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbstowcs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/mbtowc.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wcrtomb.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wcsnrtombs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wcsrtombs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wcstombs.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wctob.c create mode 100644 vendor/modernc.org/libc/musl/src/multibyte/wctomb.c create mode 100644 vendor/modernc.org/libc/musl/src/network/accept.c create mode 100644 vendor/modernc.org/libc/musl/src/network/accept4.c create mode 100644 vendor/modernc.org/libc/musl/src/network/bind.c create mode 100644 vendor/modernc.org/libc/musl/src/network/connect.c create mode 100644 vendor/modernc.org/libc/musl/src/network/dn_comp.c create mode 100644 vendor/modernc.org/libc/musl/src/network/dn_expand.c create mode 100644 vendor/modernc.org/libc/musl/src/network/dn_skipname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/dns_parse.c create mode 100644 vendor/modernc.org/libc/musl/src/network/ent.c create mode 100644 vendor/modernc.org/libc/musl/src/network/ether.c create mode 100644 vendor/modernc.org/libc/musl/src/network/freeaddrinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gai_strerror.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getaddrinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyaddr.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyaddr_r.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyname2.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyname2_r.c create mode 100644 vendor/modernc.org/libc/musl/src/network/gethostbyname_r.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getifaddrs.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getnameinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getpeername.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getservbyname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getservbyname_r.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getservbyport.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getservbyport_r.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getsockname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/getsockopt.c create mode 100644 vendor/modernc.org/libc/musl/src/network/h_errno.c create mode 100644 vendor/modernc.org/libc/musl/src/network/herror.c create mode 100644 vendor/modernc.org/libc/musl/src/network/hstrerror.c create mode 100644 vendor/modernc.org/libc/musl/src/network/htonl.c create mode 100644 vendor/modernc.org/libc/musl/src/network/htons.c create mode 100644 vendor/modernc.org/libc/musl/src/network/if_freenameindex.c create mode 100644 vendor/modernc.org/libc/musl/src/network/if_indextoname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/if_nameindex.c create mode 100644 vendor/modernc.org/libc/musl/src/network/if_nametoindex.c create mode 100644 vendor/modernc.org/libc/musl/src/network/in6addr_any.c create mode 100644 vendor/modernc.org/libc/musl/src/network/in6addr_loopback.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_addr.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_aton.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_legacy.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_ntoa.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_ntop.c create mode 100644 vendor/modernc.org/libc/musl/src/network/inet_pton.c create mode 100644 vendor/modernc.org/libc/musl/src/network/listen.c create mode 100644 vendor/modernc.org/libc/musl/src/network/lookup.h create mode 100644 vendor/modernc.org/libc/musl/src/network/lookup_ipliteral.c create mode 100644 vendor/modernc.org/libc/musl/src/network/lookup_name.c create mode 100644 vendor/modernc.org/libc/musl/src/network/lookup_serv.c create mode 100644 vendor/modernc.org/libc/musl/src/network/netlink.c create mode 100644 vendor/modernc.org/libc/musl/src/network/netlink.h create mode 100644 vendor/modernc.org/libc/musl/src/network/netname.c create mode 100644 vendor/modernc.org/libc/musl/src/network/ns_parse.c create mode 100644 vendor/modernc.org/libc/musl/src/network/ntohl.c create mode 100644 vendor/modernc.org/libc/musl/src/network/ntohs.c create mode 100644 vendor/modernc.org/libc/musl/src/network/proto.c create mode 100644 vendor/modernc.org/libc/musl/src/network/recv.c create mode 100644 vendor/modernc.org/libc/musl/src/network/recvfrom.c create mode 100644 vendor/modernc.org/libc/musl/src/network/recvmmsg.c create mode 100644 vendor/modernc.org/libc/musl/src/network/recvmsg.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_init.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_mkquery.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_msend.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_query.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_querydomain.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_send.c create mode 100644 vendor/modernc.org/libc/musl/src/network/res_state.c create mode 100644 vendor/modernc.org/libc/musl/src/network/resolvconf.c create mode 100644 vendor/modernc.org/libc/musl/src/network/send.c create mode 100644 vendor/modernc.org/libc/musl/src/network/sendmmsg.c create mode 100644 vendor/modernc.org/libc/musl/src/network/sendmsg.c create mode 100644 vendor/modernc.org/libc/musl/src/network/sendto.c create mode 100644 vendor/modernc.org/libc/musl/src/network/serv.c create mode 100644 vendor/modernc.org/libc/musl/src/network/setsockopt.c create mode 100644 vendor/modernc.org/libc/musl/src/network/shutdown.c create mode 100644 vendor/modernc.org/libc/musl/src/network/sockatmark.c create mode 100644 vendor/modernc.org/libc/musl/src/network/socket.c create mode 100644 vendor/modernc.org/libc/musl/src/network/socketpair.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/fgetgrent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/fgetpwent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/fgetspent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getgr_a.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getgr_r.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getgrent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getgrent_a.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getgrouplist.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getpw_a.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getpw_r.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getpwent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getpwent_a.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getspent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getspnam.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/getspnam_r.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/lckpwdf.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/nscd.h create mode 100644 vendor/modernc.org/libc/musl/src/passwd/nscd_query.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/putgrent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/putpwent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/putspent.c create mode 100644 vendor/modernc.org/libc/musl/src/passwd/pwf.h create mode 100644 vendor/modernc.org/libc/musl/src/prng/__rand48_step.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/__seed48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/drand48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/lcong48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/lrand48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/mrand48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/rand.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/rand48.h create mode 100644 vendor/modernc.org/libc/musl/src/prng/rand_r.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/random.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/seed48.c create mode 100644 vendor/modernc.org/libc/musl/src/prng/srand48.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execl.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execle.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execlp.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execv.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execve.c create mode 100644 vendor/modernc.org/libc/musl/src/process/execvp.c create mode 100644 vendor/modernc.org/libc/musl/src/process/fdop.h create mode 100644 vendor/modernc.org/libc/musl/src/process/fexecve.c create mode 100644 vendor/modernc.org/libc/musl/src/process/fork.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addchdir.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addclose.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_adddup2.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addfchdir.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addopen.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_init.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getflags.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getpgroup.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigdefault.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigmask.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_sched.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setflags.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setpgroup.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigdefault.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigmask.c create mode 100644 vendor/modernc.org/libc/musl/src/process/posix_spawnp.c create mode 100644 vendor/modernc.org/libc/musl/src/process/system.c create mode 100644 vendor/modernc.org/libc/musl/src/process/vfork.c create mode 100644 vendor/modernc.org/libc/musl/src/process/wait.c create mode 100644 vendor/modernc.org/libc/musl/src/process/waitid.c create mode 100644 vendor/modernc.org/libc/musl/src/process/waitpid.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/fnmatch.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/glob.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/regcomp.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/regerror.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/regexec.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/tre-mem.c create mode 100644 vendor/modernc.org/libc/musl/src/regex/tre.h create mode 100644 vendor/modernc.org/libc/musl/src/sched/affinity.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_cpucount.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_get_priority_max.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_getcpu.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_getparam.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_getscheduler.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_rr_get_interval.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_setparam.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_setscheduler.c create mode 100644 vendor/modernc.org/libc/musl/src/sched/sched_yield.c create mode 100644 vendor/modernc.org/libc/musl/src/search/hsearch.c create mode 100644 vendor/modernc.org/libc/musl/src/search/insque.c create mode 100644 vendor/modernc.org/libc/musl/src/search/lsearch.c create mode 100644 vendor/modernc.org/libc/musl/src/search/tdelete.c create mode 100644 vendor/modernc.org/libc/musl/src/search/tdestroy.c create mode 100644 vendor/modernc.org/libc/musl/src/search/tfind.c create mode 100644 vendor/modernc.org/libc/musl/src/search/tsearch.c create mode 100644 vendor/modernc.org/libc/musl/src/search/tsearch.h create mode 100644 vendor/modernc.org/libc/musl/src/search/twalk.c create mode 100644 vendor/modernc.org/libc/musl/src/select/poll.c create mode 100644 vendor/modernc.org/libc/musl/src/select/pselect.c create mode 100644 vendor/modernc.org/libc/musl/src/select/select.c create mode 100644 vendor/modernc.org/libc/musl/src/setjmp/longjmp.c create mode 100644 vendor/modernc.org/libc/musl/src/setjmp/setjmp.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/block.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/getitimer.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/kill.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/killpg.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/psiginfo.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/psignal.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/raise.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/restore.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/setitimer.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigaction.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigaddset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigaltstack.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigandset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigdelset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigemptyset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigfillset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sighold.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigignore.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/siginterrupt.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigisemptyset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigismember.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/siglongjmp.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/signal.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigorset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigpause.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigpending.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigprocmask.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigqueue.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigrelse.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigrtmax.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigrtmin.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigset.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigsetjmp.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigsetjmp_tail.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigsuspend.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigtimedwait.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigwait.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/sigwaitinfo.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/x32/getitimer.c create mode 100644 vendor/modernc.org/libc/musl/src/signal/x32/setitimer.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/__xstat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/chmod.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/fchmod.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/fchmodat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/fstat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/fstatat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/futimens.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/futimesat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/lchmod.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/lstat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mkdir.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mkdirat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mkfifo.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mkfifoat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mknod.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/mknodat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/stat.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/statvfs.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/umask.c create mode 100644 vendor/modernc.org/libc/musl/src/stat/utimensat.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__fclose_ca.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__fdopen.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__fmodeflags.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__fopen_rb_ca.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__lockfile.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__overflow.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdio_close.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdio_exit.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdio_read.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdio_seek.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdio_write.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__stdout_write.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__toread.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__towrite.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/__uflow.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/asprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/clearerr.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/dprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ext.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ext2.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fclose.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/feof.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ferror.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fflush.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgetc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgetln.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgetpos.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgets.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgetwc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fgetws.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fileno.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/flockfile.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fmemopen.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fopen.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fopencookie.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fputc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fputs.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fputwc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fputws.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fread.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/freopen.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fseek.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fsetpos.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ftell.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ftrylockfile.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/funlockfile.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fwide.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fwprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fwrite.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/fwscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getc.h create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getc_unlocked.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getchar.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getchar_unlocked.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getdelim.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getline.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/gets.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getw.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getwc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/getwchar.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ofl.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ofl_add.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/open_memstream.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/open_wmemstream.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/pclose.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/perror.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/popen.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/printf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putc.h create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putc_unlocked.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putchar.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putchar_unlocked.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/puts.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putw.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putwc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/putwchar.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/remove.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/rename.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/rewind.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/scanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/setbuf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/setbuffer.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/setlinebuf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/setvbuf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/snprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/sprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/sscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/stderr.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/stdin.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/stdout.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/swprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/swscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/tempnam.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/tmpfile.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/tmpnam.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ungetc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/ungetwc.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vasprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vdprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vfprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vfscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vfwprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vfwscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vsnprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vsprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vsscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vswprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vswscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vwprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/vwscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/wprintf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdio/wscanf.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/abs.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/atof.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/atoi.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/atol.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/atoll.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/bsearch.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/div.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/ecvt.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/fcvt.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/gcvt.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/imaxabs.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/imaxdiv.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/labs.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/ldiv.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/llabs.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/lldiv.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/qsort.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/strtod.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/strtol.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/wcstod.c create mode 100644 vendor/modernc.org/libc/musl/src/stdlib/wcstol.c create mode 100644 vendor/modernc.org/libc/musl/src/string/bcmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/bcopy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/bzero.c create mode 100644 vendor/modernc.org/libc/musl/src/string/explicit_bzero.c create mode 100644 vendor/modernc.org/libc/musl/src/string/index.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memccpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memcmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memmem.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memmove.c create mode 100644 vendor/modernc.org/libc/musl/src/string/mempcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memrchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/memset.c create mode 100644 vendor/modernc.org/libc/musl/src/string/rindex.c create mode 100644 vendor/modernc.org/libc/musl/src/string/stpcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/stpncpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcasecmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcasestr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcat.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strchrnul.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strcspn.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strdup.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strerror_r.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strlcat.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strlcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strlen.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strncasecmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strncat.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strncmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strncpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strndup.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strnlen.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strpbrk.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strrchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strsep.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strsignal.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strspn.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strstr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strtok.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strtok_r.c create mode 100644 vendor/modernc.org/libc/musl/src/string/strverscmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/swab.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcpcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcpncpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscasecmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscasecmp_l.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscat.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcschr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcscspn.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsdup.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcslen.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsncasecmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsncasecmp_l.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsncat.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsncmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsncpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsnlen.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcspbrk.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsrchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsspn.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcsstr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcstok.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wcswcs.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wmemchr.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wmemcmp.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wmemcpy.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wmemmove.c create mode 100644 vendor/modernc.org/libc/musl/src/string/wmemset.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/__randname.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mkdtemp.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mkostemp.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mkostemps.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mkstemp.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mkstemps.c create mode 100644 vendor/modernc.org/libc/musl/src/temp/mktemp.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/cfgetospeed.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/cfmakeraw.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/cfsetospeed.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcdrain.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcflow.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcflush.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcgetattr.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcgetsid.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcsendbreak.c create mode 100644 vendor/modernc.org/libc/musl/src/termios/tcsetattr.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__lock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__set_thread_area.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__syscall_cp.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__timedwait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__tls_get_addr.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__unmapself.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/__wait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/arm/__set_thread_area.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/call_once.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/clone.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_broadcast.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_signal.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_timedwait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/cnd_wait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/default_attr.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/lock_ptc.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_lock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_timedlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_trylock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/mtx_unlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_atfork.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_get.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setdetachstate.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setguardsize.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setinheritsched.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedparam.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedpolicy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setscope.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstack.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstacksize.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrier_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrier_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrier_wait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_setpshared.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cancel.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cleanup_push.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_broadcast.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_signal.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_timedwait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_cond_wait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_condattr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_condattr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setclock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setpshared.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_create.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_detach.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_equal.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_getattr_np.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_getconcurrency.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_getcpuclockid.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_getschedparam.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_getspecific.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_join.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_key_create.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_kill.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_consistent.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_getprioceiling.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_lock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_setprioceiling.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_timedlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_trylock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutex_unlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setprotocol.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setpshared.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setrobust.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_settype.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_once.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_rdlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedrdlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedwrlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_tryrdlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_trywrlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_unlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_wrlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_setpshared.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_self.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setattr_default_np.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setcancelstate.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setcanceltype.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setconcurrency.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setname_np.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setschedparam.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setschedprio.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_setspecific.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_sigmask.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_spin_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_spin_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_spin_lock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_spin_trylock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_spin_unlock.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/pthread_testcancel.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_destroy.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_getvalue.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_init.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_open.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_post.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_timedwait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_trywait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_unlink.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sem_wait.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sh/__set_thread_area.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/sh/__unmapself.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/synccall.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/syscall_cp.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/thrd_create.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/thrd_exit.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/thrd_join.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/thrd_sleep.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/thrd_yield.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/tls.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/tss_create.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/tss_delete.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/tss_set.c create mode 100644 vendor/modernc.org/libc/musl/src/thread/vmlock.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__map_file.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__month_to_secs.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__secs_to_tm.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__tm_to_secs.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__tz.c create mode 100644 vendor/modernc.org/libc/musl/src/time/__year_to_secs.c create mode 100644 vendor/modernc.org/libc/musl/src/time/asctime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/asctime_r.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock_getcpuclockid.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock_getres.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock_gettime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock_nanosleep.c create mode 100644 vendor/modernc.org/libc/musl/src/time/clock_settime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/ctime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/ctime_r.c create mode 100644 vendor/modernc.org/libc/musl/src/time/difftime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/ftime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/getdate.c create mode 100644 vendor/modernc.org/libc/musl/src/time/gettimeofday.c create mode 100644 vendor/modernc.org/libc/musl/src/time/gmtime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/gmtime_r.c create mode 100644 vendor/modernc.org/libc/musl/src/time/localtime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/localtime_r.c create mode 100644 vendor/modernc.org/libc/musl/src/time/mktime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/nanosleep.c create mode 100644 vendor/modernc.org/libc/musl/src/time/strftime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/strptime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/time.c create mode 100644 vendor/modernc.org/libc/musl/src/time/time_impl.h create mode 100644 vendor/modernc.org/libc/musl/src/time/timegm.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timer_create.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timer_delete.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timer_getoverrun.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timer_gettime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timer_settime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/times.c create mode 100644 vendor/modernc.org/libc/musl/src/time/timespec_get.c create mode 100644 vendor/modernc.org/libc/musl/src/time/utime.c create mode 100644 vendor/modernc.org/libc/musl/src/time/wcsftime.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/_exit.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/access.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/acct.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/alarm.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/chdir.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/chown.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/close.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/ctermid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/dup.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/dup2.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/dup3.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/faccessat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/fchdir.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/fchown.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/fchownat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/fdatasync.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/fsync.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/ftruncate.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getcwd.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getegid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/geteuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getgid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getgroups.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/gethostname.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getlogin.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getlogin_r.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getpgid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getpgrp.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getpid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getppid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getsid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/getuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/isatty.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/lchown.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/link.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/linkat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/lseek.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/mipsn32/lseek.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/nice.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pause.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pipe.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pipe2.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/posix_close.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pread.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/preadv.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pwrite.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/pwritev.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/read.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/readlink.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/readlinkat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/readv.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/renameat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/rmdir.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setegid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/seteuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setgid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setpgid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setpgrp.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setregid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setresgid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setresuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setreuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setsid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setuid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/setxid.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/sleep.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/symlink.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/symlinkat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/sync.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/tcgetpgrp.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/tcsetpgrp.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/truncate.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/ttyname.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/ttyname_r.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/ualarm.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/unlink.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/unlinkat.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/usleep.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/write.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/writev.c create mode 100644 vendor/modernc.org/libc/musl/src/unistd/x32/lseek.c create mode 100644 vendor/modernc.org/libc/netbsd/ctype_.c create mode 100644 vendor/modernc.org/libc/netbsd/ctype_.cpp.c create mode 100644 vendor/modernc.org/libc/netbsd/ctype_local.h create mode 100644 vendor/modernc.org/libc/testdata/memgrind/badfree.c create mode 100644 vendor/modernc.org/libc/testdata/memgrind/doublefree.c create mode 100644 vendor/modernc.org/libc/testdata/memgrind/leak.c diff --git a/Makefile b/Makefile index bed364e86..3f16efa05 100644 --- a/Makefile +++ b/Makefile @@ -274,7 +274,7 @@ install-xtools: ##@install Install Miscellaneous Go Tools GO111MODULE=on go install golang.org/x/tools/go/packages/...@v0.1.5 generate: ##@other Regenerate assets and other auto-generated stuff - go generate ./static ./static/mailserver_db_migrations ./t ./multiaccounts/... ./appdatabase/... ./protocol/... ./walletdatabase/... + go generate ./static ./static/mailserver_db_migrations ./t ./multiaccounts/... ./appdatabase/... ./protocol/... ./walletdatabase/... ./_assets/generate_handlers prepare-release: clean-release mkdir -p $(RELEASE_DIR) @@ -319,7 +319,7 @@ test-unit: ##@tests Run unit and integration tests for file in $(UNIT_TEST_PACKAGES); do \ set -e; \ path=$$(echo $$file | cut -d\/ -f 4-); \ - go test -tags '$(BUILD_TAGS)' -timeout 20m -v -failfast $$file $(gotest_extraflags) | \ + go test -tags '$(BUILD_TAGS)' -timeout 30m -v -failfast $$file $(gotest_extraflags) | \ go-junit-report -iocopy -out $${path}/report.xml; \ done diff --git a/_assets/ci/Jenkinsfile b/_assets/ci/Jenkinsfile index 3c8cb0728..06c55c487 100644 --- a/_assets/ci/Jenkinsfile +++ b/_assets/ci/Jenkinsfile @@ -18,7 +18,7 @@ pipeline { options { /* Prevent Jenkins jobs from running forever */ - timeout(time: 30, unit: 'MINUTES') + timeout(time: 40, unit: 'MINUTES') disableConcurrentBuilds() /* Go requires a certain directory structure */ checkoutToSubdirectory('src/github.com/status-im/status-go') diff --git a/_assets/ci/Jenkinsfile.tests b/_assets/ci/Jenkinsfile.tests index cec8d7940..e90078491 100644 --- a/_assets/ci/Jenkinsfile.tests +++ b/_assets/ci/Jenkinsfile.tests @@ -14,7 +14,7 @@ pipeline { options { timestamps() /* Prevent Jenkins jobs from running forever */ - timeout(time: 30, unit: 'MINUTES') + timeout(time: 40, unit: 'MINUTES') disableConcurrentBuilds() /* manage how many builds we keep */ buildDiscarder(logRotator( diff --git a/_assets/generate_handlers/generate_handlers.go b/_assets/generate_handlers/generate_handlers.go new file mode 100644 index 000000000..9ed0d4ca9 --- /dev/null +++ b/_assets/generate_handlers/generate_handlers.go @@ -0,0 +1,126 @@ +//go:generate go run generate_handlers.go + +package main + +import ( + "fmt" + "io/ioutil" + "os" + "regexp" + "strings" + "text/template" +) + +// EnumType defines the type of the protobuf enum +type EnumType struct { + Name string + Values []string +} + +// MethodInfo holds information about a method +type MethodInfo struct { + ProtobufName string + MethodName string + EnumValue string + ProcessRaw bool + SyncMessage bool +} + +func main() { + inputFile := "../../protocol/protobuf/application_metadata_message.proto" + outputFile := "../../protocol/messenger_handlers.go" + templateFile := "./generate_handlers_template.txt" + enumName := "Type" + + // Load the protobuf file + content, err := ioutil.ReadFile(inputFile) + if err != nil { + fmt.Println("Error:", err) + os.Exit(1) + } + + templateFileContent, err := os.ReadFile(templateFile) + if err != nil { + fmt.Println("Failed to read template:", err) + os.Exit(1) + } + + // Extract enum values + enum := extractEnum(content, enumName) + + // Prepare method information + var methodInfos []MethodInfo + for _, value := range enum.Values { + protobufName := toCamelCase(value) + if protobufName == "Unknown" || strings.HasPrefix(value, "DEPRECATED") { + continue + } + methodName := "handle" + protobufName + "Protobuf" + + info := MethodInfo{MethodName: methodName, ProtobufName: protobufName, EnumValue: value} + + if strings.HasPrefix(value, "SYNC_") { + info.SyncMessage = true + } + + if protobufName == "PushNotificationRegistration" { + info.ProcessRaw = true + } + + methodInfos = append(methodInfos, info) + } + + // Generate code + templateCode := string(templateFileContent) + + tmpl, err := template.New("handlers").Parse(templateCode) + if err != nil { + fmt.Println("Error:", err) + os.Exit(1) + } + + output, err := os.Create(outputFile) + if err != nil { + fmt.Println("Error:", err) + os.Exit(1) + } + defer output.Close() + + err = tmpl.Execute(output, methodInfos) + if err != nil { + fmt.Println("Error:", err) + os.Exit(1) + } + + fmt.Printf("Generated handlers in %s for %s enum.\n", outputFile, enumName) +} + +func extractEnum(content []byte, enumName string) EnumType { + enumPattern := fmt.Sprintf(`enum\s+%s\s*{([^}]+)}`, enumName) + re := regexp.MustCompile(enumPattern) + match := re.FindStringSubmatch(string(content)) + + if len(match) != 2 { + fmt.Println("Enum not found") + os.Exit(1) + } + + valuesPattern := `(?m)^\s*([A-Z_0-9]+)\s*=\s*\d+;` + re = regexp.MustCompile(valuesPattern) + valueMatches := re.FindAllStringSubmatch(match[1], -1) + + values := make([]string, len(valueMatches)) + for i, match := range valueMatches { + values[i] = strings.TrimSpace(match[1]) + } + + return EnumType{Name: enumName, Values: values} +} + +func toCamelCase(s string) string { + words := strings.Split(strings.ToLower(s), "_") + for i, word := range words { + words[i] = strings.Title(word) + } + return strings.Join(words, "") +} diff --git a/_assets/generate_handlers/generate_handlers_template.txt b/_assets/generate_handlers/generate_handlers_template.txt new file mode 100644 index 000000000..e335f226e --- /dev/null +++ b/_assets/generate_handlers/generate_handlers_template.txt @@ -0,0 +1,57 @@ +//nolint +// Code generated by generate_handlers.go. DO NOT EDIT. +// source: geneate_handlers.go + +package protocol + +import ( + "errors" + + "github.com/golang/protobuf/proto" + "go.uber.org/zap" + + "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/protocol/transport" + v1protocol "github.com/status-im/status-go/protocol/v1" +) + +func (m *Messenger) dispatchToHandler(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + switch msg.Type { + {{ range .}} + case protobuf.ApplicationMetadataMessage_{{.EnumValue}}: + return m.{{.MethodName}}(messageState, protoBytes, msg, filter) + {{ end }} + default: + m.logger.Info("protobuf type not found", zap.String("type", string(msg.Type))) + return errors.New("protobuf type not found") + } + return nil +} + +{{ range . }} +func (m *Messenger) {{.MethodName}}(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling {{ .ProtobufName}}") + {{ if .SyncMessage }} + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + {{ end }} + + {{ if .ProcessRaw }} + return m.Handle{{.ProtobufName}}(messageState, protoBytes, msg) + {{ else }} + p := &protobuf.{{.ProtobufName}}{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.Handle{{.ProtobufName}}(messageState, p, msg) + {{ end }} +} + +{{ end }} diff --git a/appdatabase/migrations/bindata.go b/appdatabase/migrations/bindata.go index 1e1e40cd5..613070692 100644 --- a/appdatabase/migrations/bindata.go +++ b/appdatabase/migrations/bindata.go @@ -96,7 +96,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -106,7 +105,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -114,7 +113,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -170,7 +169,7 @@ func _1640111208_dummyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}} return a, nil } @@ -190,7 +189,7 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}} return a, nil } @@ -210,7 +209,7 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}} return a, nil } @@ -230,7 +229,7 @@ func _1644188994_recent_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}} return a, nil } @@ -250,7 +249,7 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}} return a, nil } @@ -270,7 +269,7 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}} return a, nil } @@ -290,7 +289,7 @@ func _1647278782_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}} return a, nil } @@ -310,7 +309,7 @@ func _1647862838_reset_last_backupUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xe3, 0xd5, 0xf6, 0x5f, 0xfe, 0x65, 0xfa, 0x1d, 0x88, 0xf8, 0x5f, 0x24, 0x71, 0x34, 0x68, 0x96, 0x2a, 0x60, 0x87, 0x15, 0x82, 0x4d, 0x8a, 0x59, 0x3d, 0x1f, 0xd8, 0x56, 0xd4, 0xfb, 0xda}} return a, nil } @@ -330,7 +329,7 @@ func _1647871652_add_settings_sync_clock_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0x58, 0xec, 0x85, 0x90, 0xfa, 0x30, 0x98, 0x98, 0x9a, 0xa6, 0xa8, 0x96, 0x2b, 0x38, 0x93, 0xf3, 0xae, 0x46, 0x74, 0xa4, 0x41, 0x62, 0x9b, 0x2, 0x86, 0xbf, 0xe5, 0x2a, 0xce, 0xe2, 0xc0}} return a, nil } @@ -350,7 +349,7 @@ func _1647880168_add_torrent_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x92, 0x22, 0x37, 0x96, 0xf3, 0xb5, 0x5b, 0x27, 0xd0, 0x7d, 0x43, 0x5, 0x4e, 0x9d, 0xe2, 0x49, 0xbe, 0x86, 0x31, 0xa1, 0x89, 0xff, 0xd6, 0x51, 0xe0, 0x9c, 0xb, 0xda, 0xfc, 0xf2, 0x93}} return a, nil } @@ -370,7 +369,7 @@ func _1647882837_add_communities_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbd, 0x87, 0x78, 0x99, 0xd9, 0x5d, 0xbd, 0xf7, 0x57, 0x9c, 0xca, 0x97, 0xbd, 0xb3, 0xe9, 0xb5, 0x89, 0x31, 0x3f, 0xf6, 0x5c, 0x13, 0xb, 0xc3, 0x54, 0x93, 0x18, 0x40, 0x7, 0x82, 0xfe, 0x7e}} return a, nil } @@ -390,7 +389,7 @@ func _1647956635_add_waku_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xe, 0xe1, 0xdc, 0xda, 0x2e, 0x89, 0x8d, 0xdc, 0x2a, 0x1c, 0x13, 0xa1, 0xfc, 0xfe, 0xf, 0xb2, 0xb9, 0x85, 0xc8, 0x45, 0xd6, 0xd1, 0x7, 0x5c, 0xa3, 0x8, 0x47, 0x44, 0x6d, 0x96, 0xe0}} return a, nil } @@ -410,7 +409,7 @@ func _1648554928_network_testUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0xc5, 0x7f, 0x87, 0xf3, 0x2c, 0xf7, 0xbb, 0xd3, 0x3a, 0x4e, 0x76, 0x88, 0xca, 0xaf, 0x73, 0xce, 0x8f, 0xa1, 0xf6, 0x3d, 0x4d, 0xed, 0x6f, 0x49, 0xf2, 0xfe, 0x56, 0x2a, 0x60, 0x68, 0xca}} return a, nil } @@ -430,7 +429,7 @@ func _1649174829_add_visitble_tokenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x22, 0xc0, 0x2b, 0x3f, 0x4f, 0x3d, 0x5e, 0x4c, 0x68, 0x7c, 0xd0, 0x15, 0x36, 0x9f, 0xec, 0xa1, 0x2a, 0x7b, 0xb4, 0xe3, 0xc6, 0xc9, 0xb4, 0x81, 0x50, 0x4a, 0x11, 0x3b, 0x35, 0x7, 0xcf}} return a, nil } @@ -450,7 +449,7 @@ func _1649882262_add_derived_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xb9, 0x44, 0x4d, 0x85, 0x8d, 0x7f, 0xb4, 0xae, 0x4f, 0x5c, 0x66, 0x64, 0xb6, 0xe2, 0xe, 0x3d, 0xad, 0x9d, 0x8, 0x4f, 0xab, 0x6e, 0xa8, 0x7d, 0x76, 0x3, 0xad, 0x96, 0x1, 0xee, 0x5c}} return a, nil } @@ -470,7 +469,7 @@ func _1650612625_add_community_message_archive_hashes_tableUpSql() (*asset, erro return nil, err } - info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x31, 0xb3, 0x75, 0x23, 0xe2, 0x45, 0xe, 0x47, 0x1b, 0x35, 0xa5, 0x6e, 0x83, 0x4e, 0x64, 0x7d, 0xd7, 0xa2, 0xda, 0xe9, 0x53, 0xf1, 0x16, 0x86, 0x2c, 0x57, 0xad, 0xfa, 0xca, 0x39, 0xde}} return a, nil } @@ -490,7 +489,7 @@ func _1650616788_add_communities_archives_info_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x4f, 0x80, 0x45, 0xb9, 0xd9, 0x15, 0xe2, 0x78, 0xd0, 0xcb, 0x71, 0xc1, 0x1b, 0xb7, 0x1b, 0x1b, 0x97, 0xfe, 0x47, 0x53, 0x3c, 0x62, 0xbc, 0xdd, 0x3a, 0x94, 0x1a, 0xc, 0x48, 0x76, 0xe}} return a, nil } @@ -510,7 +509,7 @@ func _1652715604_add_clock_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xd9, 0x8d, 0x73, 0xc9, 0xef, 0xfa, 0xb1, 0x4b, 0xa5, 0xf3, 0x5, 0x19, 0x26, 0x46, 0xf8, 0x47, 0x93, 0xdb, 0xac, 0x2, 0xef, 0xf9, 0x71, 0x56, 0x83, 0xe6, 0x2d, 0xb0, 0xd7, 0x83, 0x5c}} return a, nil } @@ -530,7 +529,7 @@ func _1653037334_add_notifications_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xc4, 0x65, 0xac, 0xa, 0xf2, 0xef, 0xb6, 0x39, 0x3c, 0xc5, 0xb1, 0xb2, 0x9c, 0x86, 0x58, 0xe0, 0x38, 0xcb, 0x57, 0x3c, 0x76, 0x73, 0x87, 0x79, 0x4e, 0xf6, 0xed, 0xb0, 0x8e, 0x9e, 0xa}} return a, nil } @@ -550,7 +549,7 @@ func _1654702119_add_mutual_contact_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x66, 0x67, 0x50, 0xfe, 0xd7, 0xe3, 0x29, 0x8b, 0xff, 0x9d, 0x5a, 0x87, 0xa7, 0x99, 0x6e, 0xd6, 0xcd, 0x2e, 0xbb, 0x17, 0xdf, 0x7f, 0xf7, 0xa3, 0xfa, 0x32, 0x7c, 0x2d, 0x92, 0xc8, 0x74}} return a, nil } @@ -570,7 +569,7 @@ func _1655375270_add_clock_field_to_communities_settings_tableUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xc5, 0xc0, 0xf9, 0x84, 0x53, 0xdf, 0x83, 0xcf, 0xb6, 0x40, 0x6d, 0xf5, 0xdc, 0x77, 0x37, 0xb7, 0xe3, 0xa, 0x75, 0xe7, 0x6, 0x11, 0xca, 0x2b, 0x51, 0x92, 0xdd, 0x7d, 0xdb, 0xc3, 0xf5}} return a, nil } @@ -590,7 +589,7 @@ func _1655385721_drop_networks_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xa7, 0x20, 0xbb, 0x67, 0x21, 0xe, 0xc6, 0xc8, 0x21, 0x74, 0xe0, 0xce, 0xc8, 0xe2, 0x2, 0xb4, 0xea, 0xf0, 0xe5, 0xc4, 0x4d, 0xdd, 0xd4, 0x52, 0x31, 0xa9, 0x3d, 0xcd, 0xd8, 0x9b, 0xab}} return a, nil } @@ -610,7 +609,7 @@ func _1655385724_networks_chaincolor_shortnameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0xe7, 0x84, 0xbb, 0x5f, 0xd2, 0x2c, 0x42, 0x88, 0x62, 0x52, 0xb6, 0x58, 0x31, 0xac, 0xc, 0x96, 0x2b, 0x1b, 0xe5, 0x4e, 0x9a, 0x3a, 0xf6, 0xf6, 0xfc, 0xa9, 0x1a, 0x35, 0x62, 0x28, 0x88}} return a, nil } @@ -630,7 +629,7 @@ func _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe7, 0x9a, 0xbd, 0x9a, 0xc9, 0xf, 0xdf, 0x90, 0x0, 0x5d, 0xea, 0x6e, 0x7d, 0x51, 0x95, 0xcd, 0x90, 0xd3, 0x1a, 0x36, 0x6c, 0xf4, 0xbd, 0xa7, 0x6b, 0xbf, 0xe5, 0xdb, 0xa3, 0x88, 0xe3, 0x50}} return a, nil } @@ -650,7 +649,7 @@ func _1655462032_create_bookmarks_deleted_at_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x8e, 0x20, 0x6b, 0x14, 0x9e, 0xcd, 0x97, 0xd3, 0xfe, 0x62, 0x3, 0x26, 0x59, 0x1, 0x6c, 0x99, 0xef, 0x6d, 0x21, 0xd4, 0xb5, 0xa3, 0xf4, 0x39, 0x40, 0x54, 0x6, 0xd, 0x60, 0x13, 0x38}} return a, nil } @@ -670,7 +669,7 @@ func _1657617291_add_multi_transactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x86, 0xb0, 0x4e, 0x8c, 0x4, 0x82, 0xb4, 0x43, 0xaa, 0xd0, 0x16, 0xdd, 0xcb, 0x88, 0x81, 0xac, 0x4, 0x34, 0x1a, 0x8f, 0x2e, 0xc5, 0x69, 0xb, 0xf0, 0x17, 0xf7, 0xe3, 0x9, 0xe, 0x54, 0xe0}} return a, nil } @@ -690,7 +689,7 @@ func _1660134042_add_social_links_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x73, 0xb6, 0xe7, 0x3f, 0xaa, 0x39, 0x9a, 0x56, 0x56, 0x31, 0xf1, 0x8e, 0x26, 0x23, 0x1, 0xe4, 0xfa, 0x98, 0xfe, 0x78, 0x87, 0x20, 0xcb, 0x52, 0xf4, 0x38, 0x7f, 0xc4, 0x1c, 0x4, 0x22}} return a, nil } @@ -710,7 +709,7 @@ func _1660134060_settings_bioUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x25, 0xa0, 0xa6, 0x47, 0xff, 0xbc, 0x2a, 0x0, 0xff, 0x59, 0x4b, 0xb0, 0xc9, 0x4e, 0x15, 0xe4, 0xd9, 0xda, 0xeb, 0xfe, 0x55, 0x98, 0xc3, 0x9d, 0x96, 0xe7, 0xf, 0xd1, 0x5c, 0x93, 0x73}} return a, nil } @@ -730,7 +729,7 @@ func _1660134070_add_wakuv2_storeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xe6, 0xc3, 0x9, 0xef, 0xdc, 0xae, 0x49, 0x30, 0x78, 0x54, 0xd6, 0xdb, 0xbf, 0xc0, 0x8e, 0x25, 0x8f, 0xfc, 0x67, 0x80, 0x39, 0x37, 0xd4, 0x86, 0xc1, 0x85, 0xc8, 0x99, 0xc4, 0x59, 0xd4}} return a, nil } @@ -750,7 +749,7 @@ func _1660134072_waku2_store_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xeb, 0xb4, 0xa0, 0xa1, 0x2b, 0xcb, 0x4c, 0x3c, 0xc6, 0xd0, 0xe8, 0x96, 0xe3, 0x96, 0xf1, 0x4f, 0x1f, 0xe0, 0xe7, 0x1f, 0x85, 0xa3, 0xe, 0xf7, 0x52, 0x56, 0x63, 0x2b, 0xb0, 0x87, 0x7b}} return a, nil } @@ -770,7 +769,7 @@ func _1662365868_add_key_uid_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0xd8, 0x2f, 0x2f, 0x3b, 0xa8, 0xbd, 0x6d, 0xf6, 0x87, 0x7e, 0xd2, 0xf1, 0xa2, 0xf7, 0x81, 0x6a, 0x23, 0x10, 0xbc, 0xbf, 0x5b, 0xe7, 0x2b, 0x9c, 0xa9, 0x8a, 0x18, 0xbb, 0xd0, 0x86, 0x91}} return a, nil } @@ -790,7 +789,7 @@ func _1662447680_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x25, 0xa9, 0xc7, 0x63, 0x27, 0x97, 0x35, 0x5f, 0x6b, 0xab, 0x26, 0xcb, 0xf9, 0xbd, 0x5e, 0xac, 0x3, 0xa0, 0x5e, 0xb9, 0x71, 0xa3, 0x1f, 0xb3, 0x4f, 0x7f, 0x79, 0x28, 0x48, 0xbe, 0xc}} return a, nil } @@ -810,7 +809,7 @@ func _1662460056_move_favourites_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xa2, 0x8c, 0xa3, 0xec, 0xad, 0xdf, 0xc3, 0x48, 0x5, 0x9b, 0x50, 0x25, 0x59, 0xae, 0x7d, 0xee, 0x58, 0xd2, 0x41, 0x27, 0xf2, 0x22, 0x2e, 0x9a, 0xb9, 0x4a, 0xcc, 0x38, 0x6e, 0x3a, 0xb2}} return a, nil } @@ -830,7 +829,7 @@ func _1662738097_add_base_fee_transactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xfb, 0x10, 0xae, 0xfc, 0x77, 0x70, 0x98, 0x6f, 0xec, 0xaa, 0xcd, 0x7, 0xc7, 0x74, 0x23, 0xc, 0xd5, 0x1e, 0x82, 0xdd, 0xfe, 0xff, 0x3b, 0xd2, 0x49, 0x10, 0x5b, 0x30, 0xc, 0x2d, 0xb0}} return a, nil } @@ -850,7 +849,7 @@ func _1662972194_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x76, 0xf2, 0x86, 0xe1, 0x7e, 0xe9, 0x47, 0x32, 0x48, 0xd5, 0x6b, 0xe5, 0xd, 0xab, 0xb7, 0xf1, 0xd4, 0xf1, 0xad, 0x38, 0xa6, 0x11, 0xe7, 0xce, 0x5c, 0x11, 0x11, 0xf, 0x47, 0xb2, 0x4}} return a, nil } @@ -870,7 +869,7 @@ func _1664392661_add_third_party_id_to_waku_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x67, 0x66, 0x9e, 0x66, 0x74, 0xce, 0x1c, 0xb, 0x1b, 0x9d, 0xd5, 0xfc, 0x65, 0xe, 0x83, 0x90, 0x4c, 0x61, 0x4e, 0x6b, 0xe7, 0x86, 0xbe, 0x36, 0x4f, 0x91, 0x36, 0x4, 0x47, 0x7b, 0x82}} return a, nil } @@ -890,7 +889,7 @@ func _1664783660_add_sync_info_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x67, 0x7c, 0x3a, 0x95, 0x4e, 0x55, 0xb2, 0xbd, 0xb4, 0x18, 0x93, 0xc1, 0xcf, 0x9f, 0x12, 0xbb, 0x49, 0x8a, 0x2a, 0x6a, 0x2a, 0x7f, 0xad, 0x44, 0xc3, 0xf, 0x3a, 0x79, 0x18, 0xb9, 0x4c, 0x64}} return a, nil } @@ -910,7 +909,7 @@ func _1668109917_wakunodesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xaa, 0x9e, 0x2, 0x66, 0x85, 0x69, 0xa8, 0xd9, 0xe2, 0x4b, 0x8d, 0x2a, 0x9c, 0xdf, 0xd2, 0xef, 0x64, 0x58, 0xe3, 0xa6, 0xe7, 0xc1, 0xd1, 0xc8, 0x9c, 0xc0, 0x2c, 0x1, 0xa8, 0x7b, 0x81}} return a, nil } @@ -930,7 +929,7 @@ func _1670249678_display_name_to_settings_sync_clock_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0x18, 0xdc, 0xc4, 0x1f, 0x79, 0x22, 0x16, 0x4d, 0xdf, 0x6c, 0x66, 0xd5, 0xa4, 0x88, 0x5d, 0x5, 0x37, 0xa7, 0x41, 0x5, 0x50, 0xae, 0x12, 0xfa, 0x7e, 0x89, 0x24, 0x5c, 0xae, 0x30, 0xfc}} return a, nil } @@ -950,7 +949,7 @@ func _1670836810_add_imported_flag_to_community_archive_hashesUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0xf, 0xf0, 0xbd, 0xfe, 0x63, 0x25, 0x8f, 0x5e, 0x46, 0x4b, 0x45, 0x31, 0x8b, 0x3e, 0xd8, 0x6b, 0x5d, 0x9d, 0x6d, 0x10, 0x9a, 0x87, 0x4b, 0x18, 0xc6, 0x39, 0x81, 0x6e, 0xe4, 0x75, 0xfb}} return a, nil } @@ -970,7 +969,7 @@ func _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x8b, 0x4b, 0xd6, 0xd8, 0xe2, 0x3d, 0xf7, 0x6b, 0xcd, 0x1e, 0x70, 0x9, 0x2e, 0x35, 0x4, 0x61, 0xc3, 0xb5, 0x9d, 0xc5, 0x27, 0x21, 0xa, 0x5a, 0xd6, 0x3e, 0xa6, 0x24, 0xa2, 0x12, 0xdf}} return a, nil } @@ -990,7 +989,7 @@ func _1672933930_switcher_cardUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0xba, 0xdc, 0xbb, 0x40, 0x4, 0xf2, 0x10, 0xdf, 0xb4, 0xd2, 0x80, 0x8a, 0x74, 0x4d, 0xf6, 0xbc, 0x50, 0x7, 0xd, 0x22, 0x7f, 0xc4, 0xaf, 0xaa, 0xde, 0xdc, 0x71, 0xe9, 0x42, 0x98, 0x36}} return a, nil } @@ -1010,7 +1009,7 @@ func _1674056187_add_price_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x79, 0x6a, 0x9b, 0x28, 0xd1, 0x22, 0xf0, 0x84, 0x76, 0x40, 0x39, 0x49, 0x15, 0x5d, 0xaa, 0xfd, 0x11, 0xff, 0x13, 0x27, 0x42, 0x12, 0xfa, 0x82, 0xe6, 0x7a, 0xf0, 0x5e, 0x1f, 0xe3, 0xba}} return a, nil } @@ -1030,7 +1029,7 @@ func _1674136690_ens_usernamesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x7a, 0xf3, 0xa8, 0x88, 0x99, 0xd6, 0x9c, 0x69, 0x48, 0x3c, 0x10, 0xda, 0x72, 0xdc, 0x14, 0xd, 0x6e, 0x8c, 0x82, 0x92, 0x2d, 0x2c, 0xee, 0x4c, 0x70, 0xa4, 0xdc, 0x5c, 0x5, 0x2, 0xc3}} return a, nil } @@ -1050,7 +1049,7 @@ func _1674232431_add_balance_historyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0xb5, 0x18, 0xca, 0x4a, 0x93, 0xbb, 0x6f, 0xa4, 0xee, 0xe4, 0x3e, 0xff, 0x6a, 0x4b, 0xe2, 0xe1, 0x61, 0x28, 0xee, 0xc5, 0x26, 0x57, 0x61, 0x5e, 0x6d, 0x44, 0x1e, 0x85, 0x43, 0x70, 0xa2}} return a, nil } @@ -1070,7 +1069,7 @@ func _1676368933_keypairs_to_keycardsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x93, 0x27, 0x2, 0xf0, 0x37, 0x81, 0x65, 0xa4, 0xb3, 0x5b, 0x60, 0x36, 0x95, 0xfc, 0x81, 0xf0, 0x3b, 0x7c, 0xc3, 0x2c, 0x85, 0xbd, 0x38, 0x46, 0xa4, 0x95, 0x4a, 0x6, 0x3e, 0x74, 0xd5}} return a, nil } @@ -1090,7 +1089,7 @@ func _1676951398_add_currency_format_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xa3, 0x76, 0x35, 0xca, 0xf, 0xe8, 0xdf, 0xd9, 0x61, 0xf9, 0xed, 0xfc, 0x6d, 0xf5, 0xe, 0x11, 0x88, 0xbd, 0x14, 0x92, 0xc6, 0x57, 0x53, 0xe, 0xcd, 0x52, 0xf4, 0xa9, 0xb1, 0xdd, 0xfd}} return a, nil } @@ -1110,7 +1109,7 @@ func _1676968196_keycards_add_clock_columnUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xf, 0x1c, 0x28, 0x41, 0x57, 0x57, 0x6c, 0xe, 0x75, 0x6b, 0x75, 0x12, 0x0, 0x18, 0x1e, 0x88, 0x1e, 0x45, 0xe0, 0x32, 0xb9, 0xd4, 0xd9, 0x2e, 0xc8, 0xb, 0x80, 0x6, 0x51, 0x3d, 0x28}} return a, nil } @@ -1130,7 +1129,7 @@ func _1676968197_add_fallback_rpc_to_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6a, 0xc6, 0x45, 0xfa, 0x62, 0x84, 0x74, 0x6d, 0x7c, 0xd7, 0x1d, 0x79, 0xb6, 0x38, 0x43, 0xa8, 0x8, 0x6b, 0x75, 0x3d, 0x9, 0x2, 0xc5, 0x9f, 0xbb, 0x45, 0x56, 0x4c, 0x4e, 0x17, 0x89}} return a, nil } @@ -1150,7 +1149,7 @@ func _1677674090_add_chains_ens_istest_to_saved_addressesUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0x2d, 0xa4, 0x1b, 0xf6, 0x6a, 0x13, 0x7b, 0xe, 0x59, 0xcd, 0xe2, 0x4e, 0x81, 0x99, 0xc4, 0x33, 0x84, 0xde, 0x66, 0xca, 0xac, 0x2f, 0x5, 0x90, 0xac, 0xfd, 0x4e, 0xfc, 0x55, 0x44, 0xe5}} return a, nil } @@ -1170,7 +1169,7 @@ func _1677681143_accounts_table_type_column_updateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xc4, 0x6, 0x42, 0x50, 0x1d, 0xf4, 0x48, 0x55, 0xbc, 0xa2, 0x19, 0xdd, 0xad, 0xc8, 0xc, 0xa7, 0x30, 0xb6, 0xaf, 0xe, 0x2b, 0xaa, 0x2a, 0xa4, 0xe1, 0xb9, 0x41, 0x23, 0x66, 0xd3, 0x3}} return a, nil } @@ -1190,7 +1189,7 @@ func _1678264207_accounts_table_new_columns_addedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xd4, 0xf3, 0x35, 0xef, 0x5c, 0x19, 0x3c, 0x15, 0x90, 0x60, 0xbd, 0x1f, 0x81, 0xf0, 0x86, 0x73, 0x89, 0xa0, 0x70, 0xf2, 0x46, 0xae, 0xea, 0xd0, 0xc6, 0x9e, 0x55, 0x4a, 0x54, 0x62, 0xbb}} return a, nil } @@ -1210,7 +1209,7 @@ func _1680770368_add_bio_to_settings_sync_clock_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x52, 0xf6, 0x3f, 0xaa, 0xd, 0xa0, 0xee, 0xe8, 0xe6, 0x16, 0x21, 0x80, 0x61, 0xe4, 0x7a, 0x4e, 0x37, 0x8d, 0x30, 0x51, 0x20, 0x4d, 0x15, 0x47, 0xfb, 0x6, 0xa1, 0xce, 0xc8, 0x27, 0x5a}} return a, nil } @@ -1230,7 +1229,7 @@ func _1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x74, 0x81, 0x7d, 0x9e, 0x77, 0xb6, 0xfe, 0xe3, 0xcb, 0x48, 0xe5, 0x5f, 0x39, 0x23, 0xa1, 0x7d, 0x53, 0x22, 0xe8, 0x96, 0x15, 0x8a, 0x1e, 0x8e, 0xbc, 0xe2, 0x1d, 0xc4, 0xc2, 0x56, 0x34}} return a, nil } @@ -1250,7 +1249,7 @@ func _1681392602_9d_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xa, 0x90, 0x29, 0x7f, 0x76, 0x98, 0xa7, 0x71, 0x80, 0x5a, 0x2f, 0xbe, 0x23, 0x9a, 0xd4, 0xf4, 0x39, 0x19, 0xd3, 0xa5, 0x34, 0x6e, 0x67, 0x6a, 0xbe, 0x8a, 0xad, 0x21, 0xc7, 0xba, 0x88}} return a, nil } @@ -1270,7 +1269,7 @@ func _1681762078_default_sync_period_9dUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xd9, 0x26, 0xfc, 0xa9, 0x45, 0xc1, 0x81, 0xa8, 0xe2, 0x2c, 0xe9, 0x3c, 0xea, 0x1d, 0x37, 0x11, 0x45, 0x8c, 0x6c, 0xbc, 0xc2, 0x6, 0x69, 0x2, 0x75, 0x29, 0x40, 0x9f, 0xc5, 0xbb, 0x36}} return a, nil } @@ -1290,7 +1289,7 @@ func _1681780680_add_clock_to_social_links_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0x11, 0xf5, 0x41, 0xe5, 0x5a, 0xf4, 0xe3, 0xf3, 0x14, 0x87, 0x28, 0xd8, 0xf0, 0x52, 0x31, 0x8, 0xd5, 0xbb, 0xf4, 0xff, 0x55, 0x5f, 0x42, 0x90, 0xcb, 0xf7, 0x46, 0x2, 0x6, 0xbe, 0x42}} return a, nil } @@ -1310,7 +1309,7 @@ func _1682073779_settings_table_remove_latest_derived_path_columnUpSql() (*asset return nil, err } - info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x36, 0x2, 0x41, 0xd, 0x5c, 0xd1, 0x92, 0x85, 0x6d, 0x84, 0xff, 0x67, 0xa7, 0x4c, 0x67, 0xa4, 0xef, 0x52, 0x69, 0x1f, 0x22, 0x25, 0x92, 0xc, 0xb3, 0x89, 0x50, 0x91, 0xc, 0x49, 0xf9}} return a, nil } @@ -1330,7 +1329,7 @@ func _1682146075_add_created_at_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0xfe, 0x35, 0x9c, 0x6b, 0xdf, 0x67, 0x18, 0x16, 0xe4, 0xc9, 0xd4, 0x77, 0x7c, 0x4, 0xe2, 0x6c, 0x41, 0xd9, 0x53, 0x97, 0xfe, 0x5, 0xa3, 0x23, 0xce, 0x82, 0xad, 0x92, 0x5e, 0xd7, 0x7d}} return a, nil } @@ -1350,7 +1349,7 @@ func _1682393575_sync_ens_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0xea, 0xcb, 0x4d, 0x71, 0x5a, 0x49, 0x19, 0x8b, 0xef, 0x66, 0x27, 0x33, 0x89, 0xb0, 0xe, 0x37, 0x1b, 0x41, 0x8, 0x12, 0xcc, 0x56, 0xd8, 0x1b, 0xf, 0xf8, 0x50, 0x4b, 0x93, 0xf1, 0x29}} return a, nil } @@ -1370,7 +1369,7 @@ func _1683457503_add_blocks_ranges_sequential_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683457503_add_blocks_ranges_sequential_table.up.sql", size: 263, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1683457503_add_blocks_ranges_sequential_table.up.sql", size: 263, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x57, 0x2e, 0x0, 0x6a, 0x6e, 0xd7, 0xeb, 0xe6, 0x66, 0x79, 0x32, 0x22, 0x82, 0x92, 0xf4, 0xc9, 0xf1, 0x58, 0x1a, 0x45, 0x60, 0x77, 0x50, 0xe7, 0x54, 0x4a, 0xc0, 0x42, 0x3a, 0x4f, 0x35}} return a, nil } @@ -1390,7 +1389,7 @@ func _1683627613_accounts_and_keycards_improvementsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683627613_accounts_and_keycards_improvements.up.sql", size: 3640, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1683627613_accounts_and_keycards_improvements.up.sql", size: 3640, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xbe, 0x62, 0xf5, 0x9, 0x42, 0x8c, 0x8f, 0xa8, 0x45, 0xe7, 0x36, 0xc9, 0xde, 0xf4, 0xe2, 0xfd, 0xc4, 0x8, 0xd0, 0xa3, 0x8, 0x64, 0xe2, 0x56, 0xcc, 0xa7, 0x6d, 0xc5, 0xcc, 0x82, 0x2c}} return a, nil } @@ -1410,7 +1409,7 @@ func _1685041348_settings_table_add_latest_derived_path_columnUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1685041348_settings_table_add_latest_derived_path_column.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685041348_settings_table_add_latest_derived_path_column.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xd4, 0x1b, 0xbf, 0x8, 0xf9, 0xd4, 0xb0, 0xa0, 0x6, 0x5b, 0xfb, 0x7e, 0xff, 0xfa, 0xbf, 0xcc, 0x64, 0x47, 0x81, 0x8b, 0x5e, 0x17, 0x6a, 0xa7, 0xa4, 0x35, 0x8f, 0x30, 0x4f, 0xd9, 0xd}} return a, nil } @@ -1430,7 +1429,7 @@ func _1685440989_update_color_id_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685440989_update_color_id_accounts.up.sql", size: 918, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685440989_update_color_id_accounts.up.sql", size: 918, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x2e, 0x51, 0x1d, 0x2d, 0x16, 0x84, 0xd6, 0xe8, 0xbc, 0x20, 0x53, 0x47, 0xb8, 0x40, 0x21, 0x52, 0x5c, 0xd9, 0xbb, 0xea, 0xe2, 0xa5, 0x77, 0xc8, 0x35, 0x4c, 0xe0, 0x9d, 0x42, 0x44, 0x50}} return a, nil } @@ -1450,7 +1449,7 @@ func _1685463947_add_to_asset_to_multitransactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685463947_add_to_asset_to_multitransaction.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685463947_add_to_asset_to_multitransaction.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd3, 0x66, 0x15, 0x10, 0xfa, 0x66, 0x81, 0x68, 0xd9, 0xb4, 0x93, 0x9e, 0x11, 0xed, 0x1d, 0x16, 0x9d, 0x5a, 0xf8, 0xd7, 0x8, 0xea, 0x7a, 0xaf, 0xe4, 0xb3, 0x22, 0x19, 0xca, 0xff, 0x75, 0x7c}} return a, nil } @@ -1470,7 +1469,7 @@ func _1685880973_add_profile_links_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685880973_add_profile_links_settings_table.up.sql", size: 1656, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685880973_add_profile_links_settings_table.up.sql", size: 1656, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x13, 0x23, 0x7b, 0x1e, 0x82, 0x61, 0xcc, 0x76, 0xd6, 0xc7, 0x42, 0x6e, 0x69, 0x21, 0x1b, 0xfd, 0x7d, 0xda, 0xd7, 0xb7, 0xc7, 0xd3, 0x22, 0x63, 0xfe, 0xc6, 0xd3, 0xdf, 0xc8, 0x5f, 0x50, 0xcc}} return a, nil } @@ -1490,7 +1489,7 @@ func _1686041510_add_idx_transfers_blkno_loadedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686041510_add_idx_transfers_blkno_loaded.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1686041510_add_idx_transfers_blkno_loaded.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe2, 0x5d, 0x7e, 0x43, 0x14, 0x3c, 0x50, 0x44, 0x25, 0xd0, 0xe1, 0x75, 0xba, 0x61, 0x7b, 0x68, 0x2e, 0x43, 0x74, 0x1d, 0x10, 0x61, 0x8e, 0x45, 0xe6, 0x25, 0x78, 0x81, 0x68, 0x6, 0x24, 0x5b}} return a, nil } @@ -1510,7 +1509,7 @@ func _1686048341_transfers_receipt_json_blob_outUpSqlDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x6c, 0xd9, 0x76, 0x83, 0x64, 0xf0, 0xf2, 0x74, 0x97, 0xca, 0xd7, 0xaa, 0x4, 0x74, 0x7c, 0x34, 0x56, 0x88, 0x10, 0xa9, 0x4d, 0x1d, 0x8e, 0x85, 0xc3, 0x66, 0x1, 0x2b, 0x30, 0x90, 0xf4}} return a, nil } @@ -1530,7 +1529,7 @@ func _1686048341_transfers_receipt_json_blob_outUpSqlUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql", size: 1500, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql", size: 1500, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xcd, 0xe3, 0xa6, 0x8c, 0x53, 0x51, 0xe6, 0x3c, 0x64, 0xcb, 0x3, 0x3, 0xb, 0x4d, 0x52, 0xa5, 0x1c, 0xcc, 0xe1, 0x23, 0x94, 0x14, 0x79, 0xd7, 0x56, 0x58, 0xef, 0xcc, 0x1a, 0x6, 0xa4}} return a, nil } @@ -1550,7 +1549,7 @@ func _1686825075_cleanup_token_addressUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686825075_cleanup_token_address.up.sql", size: 273, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1686825075_cleanup_token_address.up.sql", size: 273, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x14, 0x72, 0x10, 0xec, 0x97, 0xc9, 0x3a, 0xdb, 0x39, 0x33, 0xc9, 0x6, 0x92, 0xbe, 0xe4, 0xc2, 0x5c, 0xb6, 0xaa, 0xe5, 0x25, 0x21, 0x4d, 0x74, 0x18, 0x94, 0xc, 0x33, 0x2f, 0xa4, 0x9, 0x99}} return a, nil } @@ -1570,7 +1569,7 @@ func _1687193315_transfers_extract_from_to_addressDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x6c, 0xd9, 0x76, 0x83, 0x64, 0xf0, 0xf2, 0x74, 0x97, 0xca, 0xd7, 0xaa, 0x4, 0x74, 0x7c, 0x34, 0x56, 0x88, 0x10, 0xa9, 0x4d, 0x1d, 0x8e, 0x85, 0xc3, 0x66, 0x1, 0x2b, 0x30, 0x90, 0xf4}} return a, nil } @@ -1590,7 +1589,7 @@ func _1687193315_transfers_extract_from_to_addressUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.up.sql", size: 499, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.up.sql", size: 499, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xef, 0xf4, 0x66, 0xac, 0x3a, 0xa6, 0xe3, 0x26, 0x43, 0x53, 0xe, 0xd8, 0xfe, 0xf2, 0xaa, 0x20, 0x8, 0x4e, 0x52, 0x49, 0x37, 0xbf, 0x46, 0xbf, 0x53, 0xa7, 0xcf, 0x27, 0x23, 0xab, 0x99}} return a, nil } @@ -1610,7 +1609,7 @@ func _1687249080_add_position_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687249080_add_position_accounts.up..sql", size: 2053, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687249080_add_position_accounts.up..sql", size: 2053, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf3, 0x47, 0x9f, 0xb4, 0xe3, 0xc, 0x35, 0x15, 0x74, 0xc3, 0x72, 0x57, 0x9f, 0x3b, 0xc9, 0xd5, 0x9b, 0x31, 0xef, 0xd6, 0x21, 0xc4, 0x27, 0x8e, 0x37, 0xd5, 0x5, 0xdb, 0x3d, 0xcf, 0x37, 0xbb}} return a, nil } @@ -1630,7 +1629,7 @@ func _1687269871_add_device_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687269871_add_device_name.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687269871_add_device_name.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x61, 0xf2, 0xf9, 0x78, 0x57, 0xc3, 0x57, 0xdb, 0x37, 0xe, 0x7, 0x15, 0xde, 0x5a, 0x2a, 0xb5, 0x86, 0xb8, 0x5, 0x48, 0x68, 0x2a, 0xb, 0x7c, 0xd, 0x60, 0xba, 0x67, 0x30, 0x2d, 0xa3}} return a, nil } @@ -1650,7 +1649,7 @@ func _1687506642_include_watch_only_account_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687506642_include_watch_only_account_setting.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687506642_include_watch_only_account_setting.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xa0, 0x61, 0xf8, 0xb9, 0x15, 0x22, 0x9a, 0xca, 0x9b, 0x89, 0x96, 0x90, 0x47, 0x56, 0xf3, 0x21, 0xf6, 0xbd, 0xd1, 0xa1, 0x8f, 0xa8, 0x34, 0xc3, 0x54, 0x86, 0x69, 0x14, 0x96, 0xdb, 0xbb}} return a, nil } @@ -1670,7 +1669,7 @@ func _1688022264_add_include_watch_only_account_to_settings_sync_clockUpSql() (* return nil, err } - info := bindataFileInfo{name: "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0xa2, 0x31, 0xcc, 0x3d, 0x59, 0x1b, 0x26, 0x5b, 0x78, 0xd, 0x6a, 0x75, 0x2a, 0xe0, 0x2, 0x21, 0x28, 0x8c, 0x92, 0x24, 0x98, 0x86, 0xdd, 0x2, 0x53, 0xe8, 0xf6, 0xc2, 0x7d, 0x57, 0x13}} return a, nil } @@ -1690,7 +1689,7 @@ func _1688054680_add_columns_to_multitransactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1688054680_add_columns_to_multitransaction.up.sql", size: 342, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1688054680_add_columns_to_multitransaction.up.sql", size: 342, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0xbb, 0x88, 0xde, 0x98, 0x9e, 0xa8, 0xc0, 0xf7, 0x2b, 0xc4, 0x33, 0x77, 0xf5, 0x58, 0x46, 0x52, 0xc6, 0xc2, 0x27, 0x1d, 0x8, 0xc9, 0x83, 0xb6, 0x16, 0x31, 0x99, 0x15, 0xcb, 0xb1, 0x40}} return a, nil } @@ -1710,7 +1709,7 @@ func _1688636552_keycards_table_columns_updateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1688636552_keycards_table_columns_update.up.sql", size: 1051, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1688636552_keycards_table_columns_update.up.sql", size: 1051, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x82, 0x37, 0x82, 0xae, 0x44, 0x7f, 0x4d, 0xb5, 0x50, 0x1b, 0x5f, 0x2b, 0xaa, 0xb1, 0x3, 0x97, 0xba, 0x8b, 0xea, 0x30, 0x5, 0xa4, 0x1a, 0x2c, 0x7, 0x63, 0x89, 0x43, 0x12, 0xb6, 0xb7}} return a, nil } @@ -1730,7 +1729,7 @@ func _1689248269_add_related_chain_id_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689248269_add_related_chain_id_networks.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689248269_add_related_chain_id_networks.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0xad, 0xde, 0xb5, 0xc7, 0x60, 0x1a, 0x99, 0x7d, 0x51, 0x74, 0x43, 0x60, 0x17, 0x54, 0x82, 0xb6, 0xc6, 0x96, 0x1c, 0x43, 0x74, 0x6, 0x15, 0xd6, 0xa4, 0x2a, 0xd2, 0x1c, 0xeb, 0xdc, 0xb4}} return a, nil } @@ -1750,7 +1749,7 @@ func _1689340211_index_filter_columnsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689340211_index_filter_columns.up.sql", size: 633, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689340211_index_filter_columns.up.sql", size: 633, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x83, 0xc8, 0x1, 0x8b, 0x85, 0x2b, 0xa7, 0x46, 0xfe, 0xe9, 0x9c, 0xaf, 0xec, 0x10, 0xe5, 0xec, 0x23, 0xd3, 0xf, 0xee, 0xad, 0xfb, 0xf1, 0xc7, 0xc, 0xbc, 0x14, 0xac, 0xf8, 0x3b, 0x5a, 0x9e}} return a, nil } @@ -1770,7 +1769,7 @@ func _1689498471_make_wallet_accounts_positions_non_negativeUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1689498471_make_wallet_accounts_positions_non_negative.up.sql", size: 1617, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689498471_make_wallet_accounts_positions_non_negative.up.sql", size: 1617, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x8d, 0xfc, 0x64, 0x78, 0x7a, 0x55, 0x38, 0xc9, 0x1e, 0x71, 0x25, 0xe2, 0x81, 0xc8, 0x3b, 0x1d, 0xf, 0xe7, 0x1f, 0x67, 0xbf, 0x6, 0xf1, 0x6a, 0x56, 0xf, 0x30, 0xb1, 0xc5, 0xca, 0x19}} return a, nil } @@ -1790,7 +1789,7 @@ func _1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql() (*asset return nil, err } - info := bindataFileInfo{name: "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0xfb, 0x7b, 0x9a, 0xee, 0xa4, 0x1f, 0x54, 0x81, 0x9c, 0x66, 0xd1, 0xde, 0x2d, 0xee, 0x8f, 0xb0, 0xc, 0x8, 0xb7, 0x1f, 0x5f, 0x28, 0x42, 0x75, 0x3, 0x19, 0xfb, 0xb5, 0x53, 0xa2, 0xcc}} return a, nil } @@ -1810,7 +1809,7 @@ func _1690225863_add_collectibles_ownership_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1690225863_add_collectibles_ownership_cache.up.sql", size: 327, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1690225863_add_collectibles_ownership_cache.up.sql", size: 327, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x2d, 0xfa, 0x52, 0x54, 0x3e, 0x6e, 0x50, 0x7a, 0xe0, 0x4d, 0xd1, 0x5b, 0x3a, 0xc7, 0xb6, 0x67, 0xe8, 0x82, 0xf0, 0xc4, 0xb5, 0xcc, 0x3b, 0xbf, 0x89, 0xe0, 0x1b, 0xbc, 0xa4, 0xa9, 0x68}} return a, nil } @@ -1830,7 +1829,7 @@ func _1690734354_add_preferred_chain_idsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1690734354_add_preferred_chain_ids.up.sql", size: 189, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1690734354_add_preferred_chain_ids.up.sql", size: 189, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xb4, 0x32, 0x89, 0xa1, 0xed, 0x19, 0x61, 0x1a, 0xdf, 0x72, 0x4c, 0x28, 0x5f, 0x87, 0x72, 0x33, 0xad, 0x9a, 0xc6, 0xaf, 0x6b, 0xaf, 0xa9, 0x70, 0xc7, 0x8a, 0x42, 0xe2, 0xac, 0x15, 0x2a}} return a, nil } @@ -1850,7 +1849,7 @@ func _1691173699_add_collectibles_and_collections_data_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1691173699_add_collectibles_and_collections_data_cache.up.sql", size: 1811, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1691173699_add_collectibles_and_collections_data_cache.up.sql", size: 1811, mode: os.FileMode(0644), modTime: time.Unix(1691595393, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x0, 0xf2, 0xaa, 0xa9, 0x56, 0x92, 0xb7, 0x3c, 0xd8, 0xbf, 0x4c, 0x42, 0x90, 0xdd, 0xb3, 0xb8, 0xca, 0x4a, 0xa1, 0x91, 0x29, 0x5, 0xf6, 0xb0, 0x75, 0x82, 0x98, 0x7e, 0x6d, 0x74, 0x15, 0xc3}} return a, nil } @@ -1870,7 +1869,7 @@ func _1691753758_move_wallet_tables_to_wallet_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753758_move_wallet_tables_to_wallet_db.up.sql", size: 603, mode: os.FileMode(0644), modTime: time.Unix(1692367626, 0)} + info := bindataFileInfo{name: "1691753758_move_wallet_tables_to_wallet_db.up.sql", size: 603, mode: os.FileMode(0644), modTime: time.Unix(1692687412, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x7f, 0xd9, 0x6f, 0x91, 0x37, 0x7a, 0x8f, 0xf4, 0xd6, 0xec, 0xd4, 0xb9, 0x8e, 0xc5, 0xeb, 0x1a, 0xfa, 0xd1, 0x4, 0x1, 0xff, 0x51, 0x23, 0xc, 0x96, 0xf2, 0x3c, 0x12, 0xa7, 0xf7, 0x33}} return a, nil } @@ -1890,7 +1889,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -1986,190 +1985,109 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "1640111208_dummy.up.sql": _1640111208_dummyUpSql, - - "1642666031_add_removed_clock_to_bookmarks.up.sql": _1642666031_add_removed_clock_to_bookmarksUpSql, - - "1643644541_gif_api_key_setting.up.sql": _1643644541_gif_api_key_settingUpSql, - - "1644188994_recent_stickers.up.sql": _1644188994_recent_stickersUpSql, - - "1646659233_add_address_to_dapp_permisssion.up.sql": _1646659233_add_address_to_dapp_permisssionUpSql, - - "1646841105_add_emoji_account.up.sql": _1646841105_add_emoji_accountUpSql, - - "1647278782_display_name.up.sql": _1647278782_display_nameUpSql, - - "1647862838_reset_last_backup.up.sql": _1647862838_reset_last_backupUpSql, - - "1647871652_add_settings_sync_clock_table.up.sql": _1647871652_add_settings_sync_clock_tableUpSql, - - "1647880168_add_torrent_config.up.sql": _1647880168_add_torrent_configUpSql, - - "1647882837_add_communities_settings_table.up.sql": _1647882837_add_communities_settings_tableUpSql, - - "1647956635_add_waku_messages_table.up.sql": _1647956635_add_waku_messages_tableUpSql, - - "1648554928_network_test.up.sql": _1648554928_network_testUpSql, - - "1649174829_add_visitble_token.up.sql": _1649174829_add_visitble_tokenUpSql, - - "1649882262_add_derived_from_accounts.up.sql": _1649882262_add_derived_from_accountsUpSql, - - "1650612625_add_community_message_archive_hashes_table.up.sql": _1650612625_add_community_message_archive_hashes_tableUpSql, - - "1650616788_add_communities_archives_info_table.up.sql": _1650616788_add_communities_archives_info_tableUpSql, - - "1652715604_add_clock_accounts.up.sql": _1652715604_add_clock_accountsUpSql, - - "1653037334_add_notifications_settings_table.up.sql": _1653037334_add_notifications_settings_tableUpSql, - - "1654702119_add_mutual_contact_settings.up.sql": _1654702119_add_mutual_contact_settingsUpSql, - - "1655375270_add_clock_field_to_communities_settings_table.up.sql": _1655375270_add_clock_field_to_communities_settings_tableUpSql, - - "1655385721_drop_networks_config.up.sql": _1655385721_drop_networks_configUpSql, - - "1655385724_networks_chainColor_shortName.up.sql": _1655385724_networks_chaincolor_shortnameUpSql, - - "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql": _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql, - - "1655462032_create_bookmarks_deleted_at_index.up.sql": _1655462032_create_bookmarks_deleted_at_indexUpSql, - - "1657617291_add_multi_transactions_table.up.sql": _1657617291_add_multi_transactions_tableUpSql, - - "1660134042_add_social_links_settings_table.up.sql": _1660134042_add_social_links_settings_tableUpSql, - - "1660134060_settings_bio.up.sql": _1660134060_settings_bioUpSql, - - "1660134070_add_wakuv2_store.up.sql": _1660134070_add_wakuv2_storeUpSql, - - "1660134072_waku2_store_messages.up.sql": _1660134072_waku2_store_messagesUpSql, - - "1662365868_add_key_uid_accounts.up.sql": _1662365868_add_key_uid_accountsUpSql, - - "1662447680_add_keypairs_table.up.sql": _1662447680_add_keypairs_tableUpSql, - - "1662460056_move_favourites_to_saved_addresses.up.sql": _1662460056_move_favourites_to_saved_addressesUpSql, - - "1662738097_add_base_fee_transaction.up.sql": _1662738097_add_base_fee_transactionUpSql, - - "1662972194_add_keypairs_table.up.sql": _1662972194_add_keypairs_tableUpSql, - - "1664392661_add_third_party_id_to_waku_messages.up.sql": _1664392661_add_third_party_id_to_waku_messagesUpSql, - - "1664783660_add_sync_info_to_saved_addresses.up.sql": _1664783660_add_sync_info_to_saved_addressesUpSql, - - "1668109917_wakunodes.up.sql": _1668109917_wakunodesUpSql, - - "1670249678_display_name_to_settings_sync_clock_table.up.sql": _1670249678_display_name_to_settings_sync_clock_tableUpSql, - - "1670836810_add_imported_flag_to_community_archive_hashes.up.sql": _1670836810_add_imported_flag_to_community_archive_hashesUpSql, - - "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql": _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql, - - "1672933930_switcher_card.up.sql": _1672933930_switcher_cardUpSql, - - "1674056187_add_price_cache.up.sql": _1674056187_add_price_cacheUpSql, - - "1674136690_ens_usernames.up.sql": _1674136690_ens_usernamesUpSql, - - "1674232431_add_balance_history.up.sql": _1674232431_add_balance_historyUpSql, - - "1676368933_keypairs_to_keycards.up.sql": _1676368933_keypairs_to_keycardsUpSql, - - "1676951398_add_currency_format_cache.up.sql": _1676951398_add_currency_format_cacheUpSql, - - "1676968196_keycards_add_clock_column.up.sql": _1676968196_keycards_add_clock_columnUpSql, - - "1676968197_add_fallback_rpc_to_networks.up.sql": _1676968197_add_fallback_rpc_to_networksUpSql, - - "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": _1677674090_add_chains_ens_istest_to_saved_addressesUpSql, - - "1677681143_accounts_table_type_column_update.up.sql": _1677681143_accounts_table_type_column_updateUpSql, - - "1678264207_accounts_table_new_columns_added.up.sql": _1678264207_accounts_table_new_columns_addedUpSql, - - "1680770368_add_bio_to_settings_sync_clock_table.up.sql": _1680770368_add_bio_to_settings_sync_clock_tableUpSql, - - "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql": _1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql, - - "1681392602_9d_sync_period.up.sql": _1681392602_9d_sync_periodUpSql, - - "1681762078_default_sync_period_9d.up.sql": _1681762078_default_sync_period_9dUpSql, - - "1681780680_add_clock_to_social_links_settings.up.sql": _1681780680_add_clock_to_social_links_settingsUpSql, - - "1682073779_settings_table_remove_latest_derived_path_column.up.sql": _1682073779_settings_table_remove_latest_derived_path_columnUpSql, - - "1682146075_add_created_at_to_saved_addresses.up.sql": _1682146075_add_created_at_to_saved_addressesUpSql, - - "1682393575_sync_ens_name.up.sql": _1682393575_sync_ens_nameUpSql, - - "1683457503_add_blocks_ranges_sequential_table.up.sql": _1683457503_add_blocks_ranges_sequential_tableUpSql, - - "1683627613_accounts_and_keycards_improvements.up.sql": _1683627613_accounts_and_keycards_improvementsUpSql, - - "1685041348_settings_table_add_latest_derived_path_column.up.sql": _1685041348_settings_table_add_latest_derived_path_columnUpSql, - - "1685440989_update_color_id_accounts.up.sql": _1685440989_update_color_id_accountsUpSql, - - "1685463947_add_to_asset_to_multitransaction.up.sql": _1685463947_add_to_asset_to_multitransactionUpSql, - - "1685880973_add_profile_links_settings_table.up.sql": _1685880973_add_profile_links_settings_tableUpSql, - - "1686041510_add_idx_transfers_blkno_loaded.up.sql": _1686041510_add_idx_transfers_blkno_loadedUpSql, - - "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql": _1686048341_transfers_receipt_json_blob_outUpSqlDownSql, - - "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql": _1686048341_transfers_receipt_json_blob_outUpSqlUpSql, - - "1686825075_cleanup_token_address.up.sql": _1686825075_cleanup_token_addressUpSql, - - "1687193315_transfers_extract_from_to_address.down.sql": _1687193315_transfers_extract_from_to_addressDownSql, - - "1687193315_transfers_extract_from_to_address.up.sql": _1687193315_transfers_extract_from_to_addressUpSql, - - "1687249080_add_position_accounts.up..sql": _1687249080_add_position_accountsUpSql, - - "1687269871_add_device_name.up.sql": _1687269871_add_device_nameUpSql, - - "1687506642_include_watch_only_account_setting.up.sql": _1687506642_include_watch_only_account_settingUpSql, - + "1640111208_dummy.up.sql": _1640111208_dummyUpSql, + "1642666031_add_removed_clock_to_bookmarks.up.sql": _1642666031_add_removed_clock_to_bookmarksUpSql, + "1643644541_gif_api_key_setting.up.sql": _1643644541_gif_api_key_settingUpSql, + "1644188994_recent_stickers.up.sql": _1644188994_recent_stickersUpSql, + "1646659233_add_address_to_dapp_permisssion.up.sql": _1646659233_add_address_to_dapp_permisssionUpSql, + "1646841105_add_emoji_account.up.sql": _1646841105_add_emoji_accountUpSql, + "1647278782_display_name.up.sql": _1647278782_display_nameUpSql, + "1647862838_reset_last_backup.up.sql": _1647862838_reset_last_backupUpSql, + "1647871652_add_settings_sync_clock_table.up.sql": _1647871652_add_settings_sync_clock_tableUpSql, + "1647880168_add_torrent_config.up.sql": _1647880168_add_torrent_configUpSql, + "1647882837_add_communities_settings_table.up.sql": _1647882837_add_communities_settings_tableUpSql, + "1647956635_add_waku_messages_table.up.sql": _1647956635_add_waku_messages_tableUpSql, + "1648554928_network_test.up.sql": _1648554928_network_testUpSql, + "1649174829_add_visitble_token.up.sql": _1649174829_add_visitble_tokenUpSql, + "1649882262_add_derived_from_accounts.up.sql": _1649882262_add_derived_from_accountsUpSql, + "1650612625_add_community_message_archive_hashes_table.up.sql": _1650612625_add_community_message_archive_hashes_tableUpSql, + "1650616788_add_communities_archives_info_table.up.sql": _1650616788_add_communities_archives_info_tableUpSql, + "1652715604_add_clock_accounts.up.sql": _1652715604_add_clock_accountsUpSql, + "1653037334_add_notifications_settings_table.up.sql": _1653037334_add_notifications_settings_tableUpSql, + "1654702119_add_mutual_contact_settings.up.sql": _1654702119_add_mutual_contact_settingsUpSql, + "1655375270_add_clock_field_to_communities_settings_table.up.sql": _1655375270_add_clock_field_to_communities_settings_tableUpSql, + "1655385721_drop_networks_config.up.sql": _1655385721_drop_networks_configUpSql, + "1655385724_networks_chainColor_shortName.up.sql": _1655385724_networks_chaincolor_shortnameUpSql, + "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql": _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql, + "1655462032_create_bookmarks_deleted_at_index.up.sql": _1655462032_create_bookmarks_deleted_at_indexUpSql, + "1657617291_add_multi_transactions_table.up.sql": _1657617291_add_multi_transactions_tableUpSql, + "1660134042_add_social_links_settings_table.up.sql": _1660134042_add_social_links_settings_tableUpSql, + "1660134060_settings_bio.up.sql": _1660134060_settings_bioUpSql, + "1660134070_add_wakuv2_store.up.sql": _1660134070_add_wakuv2_storeUpSql, + "1660134072_waku2_store_messages.up.sql": _1660134072_waku2_store_messagesUpSql, + "1662365868_add_key_uid_accounts.up.sql": _1662365868_add_key_uid_accountsUpSql, + "1662447680_add_keypairs_table.up.sql": _1662447680_add_keypairs_tableUpSql, + "1662460056_move_favourites_to_saved_addresses.up.sql": _1662460056_move_favourites_to_saved_addressesUpSql, + "1662738097_add_base_fee_transaction.up.sql": _1662738097_add_base_fee_transactionUpSql, + "1662972194_add_keypairs_table.up.sql": _1662972194_add_keypairs_tableUpSql, + "1664392661_add_third_party_id_to_waku_messages.up.sql": _1664392661_add_third_party_id_to_waku_messagesUpSql, + "1664783660_add_sync_info_to_saved_addresses.up.sql": _1664783660_add_sync_info_to_saved_addressesUpSql, + "1668109917_wakunodes.up.sql": _1668109917_wakunodesUpSql, + "1670249678_display_name_to_settings_sync_clock_table.up.sql": _1670249678_display_name_to_settings_sync_clock_tableUpSql, + "1670836810_add_imported_flag_to_community_archive_hashes.up.sql": _1670836810_add_imported_flag_to_community_archive_hashesUpSql, + "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql": _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql, + "1672933930_switcher_card.up.sql": _1672933930_switcher_cardUpSql, + "1674056187_add_price_cache.up.sql": _1674056187_add_price_cacheUpSql, + "1674136690_ens_usernames.up.sql": _1674136690_ens_usernamesUpSql, + "1674232431_add_balance_history.up.sql": _1674232431_add_balance_historyUpSql, + "1676368933_keypairs_to_keycards.up.sql": _1676368933_keypairs_to_keycardsUpSql, + "1676951398_add_currency_format_cache.up.sql": _1676951398_add_currency_format_cacheUpSql, + "1676968196_keycards_add_clock_column.up.sql": _1676968196_keycards_add_clock_columnUpSql, + "1676968197_add_fallback_rpc_to_networks.up.sql": _1676968197_add_fallback_rpc_to_networksUpSql, + "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": _1677674090_add_chains_ens_istest_to_saved_addressesUpSql, + "1677681143_accounts_table_type_column_update.up.sql": _1677681143_accounts_table_type_column_updateUpSql, + "1678264207_accounts_table_new_columns_added.up.sql": _1678264207_accounts_table_new_columns_addedUpSql, + "1680770368_add_bio_to_settings_sync_clock_table.up.sql": _1680770368_add_bio_to_settings_sync_clock_tableUpSql, + "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql": _1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql, + "1681392602_9d_sync_period.up.sql": _1681392602_9d_sync_periodUpSql, + "1681762078_default_sync_period_9d.up.sql": _1681762078_default_sync_period_9dUpSql, + "1681780680_add_clock_to_social_links_settings.up.sql": _1681780680_add_clock_to_social_links_settingsUpSql, + "1682073779_settings_table_remove_latest_derived_path_column.up.sql": _1682073779_settings_table_remove_latest_derived_path_columnUpSql, + "1682146075_add_created_at_to_saved_addresses.up.sql": _1682146075_add_created_at_to_saved_addressesUpSql, + "1682393575_sync_ens_name.up.sql": _1682393575_sync_ens_nameUpSql, + "1683457503_add_blocks_ranges_sequential_table.up.sql": _1683457503_add_blocks_ranges_sequential_tableUpSql, + "1683627613_accounts_and_keycards_improvements.up.sql": _1683627613_accounts_and_keycards_improvementsUpSql, + "1685041348_settings_table_add_latest_derived_path_column.up.sql": _1685041348_settings_table_add_latest_derived_path_columnUpSql, + "1685440989_update_color_id_accounts.up.sql": _1685440989_update_color_id_accountsUpSql, + "1685463947_add_to_asset_to_multitransaction.up.sql": _1685463947_add_to_asset_to_multitransactionUpSql, + "1685880973_add_profile_links_settings_table.up.sql": _1685880973_add_profile_links_settings_tableUpSql, + "1686041510_add_idx_transfers_blkno_loaded.up.sql": _1686041510_add_idx_transfers_blkno_loadedUpSql, + "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql": _1686048341_transfers_receipt_json_blob_outUpSqlDownSql, + "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql": _1686048341_transfers_receipt_json_blob_outUpSqlUpSql, + "1686825075_cleanup_token_address.up.sql": _1686825075_cleanup_token_addressUpSql, + "1687193315_transfers_extract_from_to_address.down.sql": _1687193315_transfers_extract_from_to_addressDownSql, + "1687193315_transfers_extract_from_to_address.up.sql": _1687193315_transfers_extract_from_to_addressUpSql, + "1687249080_add_position_accounts.up..sql": _1687249080_add_position_accountsUpSql, + "1687269871_add_device_name.up.sql": _1687269871_add_device_nameUpSql, + "1687506642_include_watch_only_account_setting.up.sql": _1687506642_include_watch_only_account_settingUpSql, "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql": _1688022264_add_include_watch_only_account_to_settings_sync_clockUpSql, - - "1688054680_add_columns_to_multitransaction.up.sql": _1688054680_add_columns_to_multitransactionUpSql, - - "1688636552_keycards_table_columns_update.up.sql": _1688636552_keycards_table_columns_updateUpSql, - - "1689248269_add_related_chain_id_networks.up.sql": _1689248269_add_related_chain_id_networksUpSql, - - "1689340211_index_filter_columns.up.sql": _1689340211_index_filter_columnsUpSql, - - "1689498471_make_wallet_accounts_positions_non_negative.up.sql": _1689498471_make_wallet_accounts_positions_non_negativeUpSql, - - "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql": _1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql, - - "1690225863_add_collectibles_ownership_cache.up.sql": _1690225863_add_collectibles_ownership_cacheUpSql, - - "1690734354_add_preferred_chain_ids.up.sql": _1690734354_add_preferred_chain_idsUpSql, - - "1691173699_add_collectibles_and_collections_data_cache.up.sql": _1691173699_add_collectibles_and_collections_data_cacheUpSql, - - "1691753758_move_wallet_tables_to_wallet_db.up.sql": _1691753758_move_wallet_tables_to_wallet_dbUpSql, - + "1688054680_add_columns_to_multitransaction.up.sql": _1688054680_add_columns_to_multitransactionUpSql, + "1688636552_keycards_table_columns_update.up.sql": _1688636552_keycards_table_columns_updateUpSql, + "1689248269_add_related_chain_id_networks.up.sql": _1689248269_add_related_chain_id_networksUpSql, + "1689340211_index_filter_columns.up.sql": _1689340211_index_filter_columnsUpSql, + "1689498471_make_wallet_accounts_positions_non_negative.up.sql": _1689498471_make_wallet_accounts_positions_non_negativeUpSql, + "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql": _1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql, + "1690225863_add_collectibles_ownership_cache.up.sql": _1690225863_add_collectibles_ownership_cacheUpSql, + "1690734354_add_preferred_chain_ids.up.sql": _1690734354_add_preferred_chain_idsUpSql, + "1691173699_add_collectibles_and_collections_data_cache.up.sql": _1691173699_add_collectibles_and_collections_data_cacheUpSql, + "1691753758_move_wallet_tables_to_wallet_db.up.sql": _1691753758_move_wallet_tables_to_wallet_dbUpSql, "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -2202,93 +2120,93 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1640111208_dummy.up.sql": &bintree{_1640111208_dummyUpSql, map[string]*bintree{}}, - "1642666031_add_removed_clock_to_bookmarks.up.sql": &bintree{_1642666031_add_removed_clock_to_bookmarksUpSql, map[string]*bintree{}}, - "1643644541_gif_api_key_setting.up.sql": &bintree{_1643644541_gif_api_key_settingUpSql, map[string]*bintree{}}, - "1644188994_recent_stickers.up.sql": &bintree{_1644188994_recent_stickersUpSql, map[string]*bintree{}}, - "1646659233_add_address_to_dapp_permisssion.up.sql": &bintree{_1646659233_add_address_to_dapp_permisssionUpSql, map[string]*bintree{}}, - "1646841105_add_emoji_account.up.sql": &bintree{_1646841105_add_emoji_accountUpSql, map[string]*bintree{}}, - "1647278782_display_name.up.sql": &bintree{_1647278782_display_nameUpSql, map[string]*bintree{}}, - "1647862838_reset_last_backup.up.sql": &bintree{_1647862838_reset_last_backupUpSql, map[string]*bintree{}}, - "1647871652_add_settings_sync_clock_table.up.sql": &bintree{_1647871652_add_settings_sync_clock_tableUpSql, map[string]*bintree{}}, - "1647880168_add_torrent_config.up.sql": &bintree{_1647880168_add_torrent_configUpSql, map[string]*bintree{}}, - "1647882837_add_communities_settings_table.up.sql": &bintree{_1647882837_add_communities_settings_tableUpSql, map[string]*bintree{}}, - "1647956635_add_waku_messages_table.up.sql": &bintree{_1647956635_add_waku_messages_tableUpSql, map[string]*bintree{}}, - "1648554928_network_test.up.sql": &bintree{_1648554928_network_testUpSql, map[string]*bintree{}}, - "1649174829_add_visitble_token.up.sql": &bintree{_1649174829_add_visitble_tokenUpSql, map[string]*bintree{}}, - "1649882262_add_derived_from_accounts.up.sql": &bintree{_1649882262_add_derived_from_accountsUpSql, map[string]*bintree{}}, - "1650612625_add_community_message_archive_hashes_table.up.sql": &bintree{_1650612625_add_community_message_archive_hashes_tableUpSql, map[string]*bintree{}}, - "1650616788_add_communities_archives_info_table.up.sql": &bintree{_1650616788_add_communities_archives_info_tableUpSql, map[string]*bintree{}}, - "1652715604_add_clock_accounts.up.sql": &bintree{_1652715604_add_clock_accountsUpSql, map[string]*bintree{}}, - "1653037334_add_notifications_settings_table.up.sql": &bintree{_1653037334_add_notifications_settings_tableUpSql, map[string]*bintree{}}, - "1654702119_add_mutual_contact_settings.up.sql": &bintree{_1654702119_add_mutual_contact_settingsUpSql, map[string]*bintree{}}, - "1655375270_add_clock_field_to_communities_settings_table.up.sql": &bintree{_1655375270_add_clock_field_to_communities_settings_tableUpSql, map[string]*bintree{}}, - "1655385721_drop_networks_config.up.sql": &bintree{_1655385721_drop_networks_configUpSql, map[string]*bintree{}}, - "1655385724_networks_chainColor_shortName.up.sql": &bintree{_1655385724_networks_chaincolor_shortnameUpSql, map[string]*bintree{}}, - "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql": &bintree{_1655456688_add_deleted_at_field_to_bookmarks_tableUpSql, map[string]*bintree{}}, - "1655462032_create_bookmarks_deleted_at_index.up.sql": &bintree{_1655462032_create_bookmarks_deleted_at_indexUpSql, map[string]*bintree{}}, - "1657617291_add_multi_transactions_table.up.sql": &bintree{_1657617291_add_multi_transactions_tableUpSql, map[string]*bintree{}}, - "1660134042_add_social_links_settings_table.up.sql": &bintree{_1660134042_add_social_links_settings_tableUpSql, map[string]*bintree{}}, - "1660134060_settings_bio.up.sql": &bintree{_1660134060_settings_bioUpSql, map[string]*bintree{}}, - "1660134070_add_wakuv2_store.up.sql": &bintree{_1660134070_add_wakuv2_storeUpSql, map[string]*bintree{}}, - "1660134072_waku2_store_messages.up.sql": &bintree{_1660134072_waku2_store_messagesUpSql, map[string]*bintree{}}, - "1662365868_add_key_uid_accounts.up.sql": &bintree{_1662365868_add_key_uid_accountsUpSql, map[string]*bintree{}}, - "1662447680_add_keypairs_table.up.sql": &bintree{_1662447680_add_keypairs_tableUpSql, map[string]*bintree{}}, - "1662460056_move_favourites_to_saved_addresses.up.sql": &bintree{_1662460056_move_favourites_to_saved_addressesUpSql, map[string]*bintree{}}, - "1662738097_add_base_fee_transaction.up.sql": &bintree{_1662738097_add_base_fee_transactionUpSql, map[string]*bintree{}}, - "1662972194_add_keypairs_table.up.sql": &bintree{_1662972194_add_keypairs_tableUpSql, map[string]*bintree{}}, - "1664392661_add_third_party_id_to_waku_messages.up.sql": &bintree{_1664392661_add_third_party_id_to_waku_messagesUpSql, map[string]*bintree{}}, - "1664783660_add_sync_info_to_saved_addresses.up.sql": &bintree{_1664783660_add_sync_info_to_saved_addressesUpSql, map[string]*bintree{}}, - "1668109917_wakunodes.up.sql": &bintree{_1668109917_wakunodesUpSql, map[string]*bintree{}}, - "1670249678_display_name_to_settings_sync_clock_table.up.sql": &bintree{_1670249678_display_name_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, - "1670836810_add_imported_flag_to_community_archive_hashes.up.sql": &bintree{_1670836810_add_imported_flag_to_community_archive_hashesUpSql, map[string]*bintree{}}, - "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql": &bintree{_1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql, map[string]*bintree{}}, - "1672933930_switcher_card.up.sql": &bintree{_1672933930_switcher_cardUpSql, map[string]*bintree{}}, - "1674056187_add_price_cache.up.sql": &bintree{_1674056187_add_price_cacheUpSql, map[string]*bintree{}}, - "1674136690_ens_usernames.up.sql": &bintree{_1674136690_ens_usernamesUpSql, map[string]*bintree{}}, - "1674232431_add_balance_history.up.sql": &bintree{_1674232431_add_balance_historyUpSql, map[string]*bintree{}}, - "1676368933_keypairs_to_keycards.up.sql": &bintree{_1676368933_keypairs_to_keycardsUpSql, map[string]*bintree{}}, - "1676951398_add_currency_format_cache.up.sql": &bintree{_1676951398_add_currency_format_cacheUpSql, map[string]*bintree{}}, - "1676968196_keycards_add_clock_column.up.sql": &bintree{_1676968196_keycards_add_clock_columnUpSql, map[string]*bintree{}}, - "1676968197_add_fallback_rpc_to_networks.up.sql": &bintree{_1676968197_add_fallback_rpc_to_networksUpSql, map[string]*bintree{}}, - "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": &bintree{_1677674090_add_chains_ens_istest_to_saved_addressesUpSql, map[string]*bintree{}}, - "1677681143_accounts_table_type_column_update.up.sql": &bintree{_1677681143_accounts_table_type_column_updateUpSql, map[string]*bintree{}}, - "1678264207_accounts_table_new_columns_added.up.sql": &bintree{_1678264207_accounts_table_new_columns_addedUpSql, map[string]*bintree{}}, - "1680770368_add_bio_to_settings_sync_clock_table.up.sql": &bintree{_1680770368_add_bio_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, - "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql": &bintree{_1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, - "1681392602_9d_sync_period.up.sql": &bintree{_1681392602_9d_sync_periodUpSql, map[string]*bintree{}}, - "1681762078_default_sync_period_9d.up.sql": &bintree{_1681762078_default_sync_period_9dUpSql, map[string]*bintree{}}, - "1681780680_add_clock_to_social_links_settings.up.sql": &bintree{_1681780680_add_clock_to_social_links_settingsUpSql, map[string]*bintree{}}, - "1682073779_settings_table_remove_latest_derived_path_column.up.sql": &bintree{_1682073779_settings_table_remove_latest_derived_path_columnUpSql, map[string]*bintree{}}, - "1682146075_add_created_at_to_saved_addresses.up.sql": &bintree{_1682146075_add_created_at_to_saved_addressesUpSql, map[string]*bintree{}}, - "1682393575_sync_ens_name.up.sql": &bintree{_1682393575_sync_ens_nameUpSql, map[string]*bintree{}}, - "1683457503_add_blocks_ranges_sequential_table.up.sql": &bintree{_1683457503_add_blocks_ranges_sequential_tableUpSql, map[string]*bintree{}}, - "1683627613_accounts_and_keycards_improvements.up.sql": &bintree{_1683627613_accounts_and_keycards_improvementsUpSql, map[string]*bintree{}}, - "1685041348_settings_table_add_latest_derived_path_column.up.sql": &bintree{_1685041348_settings_table_add_latest_derived_path_columnUpSql, map[string]*bintree{}}, - "1685440989_update_color_id_accounts.up.sql": &bintree{_1685440989_update_color_id_accountsUpSql, map[string]*bintree{}}, - "1685463947_add_to_asset_to_multitransaction.up.sql": &bintree{_1685463947_add_to_asset_to_multitransactionUpSql, map[string]*bintree{}}, - "1685880973_add_profile_links_settings_table.up.sql": &bintree{_1685880973_add_profile_links_settings_tableUpSql, map[string]*bintree{}}, - "1686041510_add_idx_transfers_blkno_loaded.up.sql": &bintree{_1686041510_add_idx_transfers_blkno_loadedUpSql, map[string]*bintree{}}, - "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql": &bintree{_1686048341_transfers_receipt_json_blob_outUpSqlDownSql, map[string]*bintree{}}, - "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql": &bintree{_1686048341_transfers_receipt_json_blob_outUpSqlUpSql, map[string]*bintree{}}, - "1686825075_cleanup_token_address.up.sql": &bintree{_1686825075_cleanup_token_addressUpSql, map[string]*bintree{}}, - "1687193315_transfers_extract_from_to_address.down.sql": &bintree{_1687193315_transfers_extract_from_to_addressDownSql, map[string]*bintree{}}, - "1687193315_transfers_extract_from_to_address.up.sql": &bintree{_1687193315_transfers_extract_from_to_addressUpSql, map[string]*bintree{}}, - "1687249080_add_position_accounts.up..sql": &bintree{_1687249080_add_position_accountsUpSql, map[string]*bintree{}}, - "1687269871_add_device_name.up.sql": &bintree{_1687269871_add_device_nameUpSql, map[string]*bintree{}}, - "1687506642_include_watch_only_account_setting.up.sql": &bintree{_1687506642_include_watch_only_account_settingUpSql, map[string]*bintree{}}, - "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql": &bintree{_1688022264_add_include_watch_only_account_to_settings_sync_clockUpSql, map[string]*bintree{}}, - "1688054680_add_columns_to_multitransaction.up.sql": &bintree{_1688054680_add_columns_to_multitransactionUpSql, map[string]*bintree{}}, - "1688636552_keycards_table_columns_update.up.sql": &bintree{_1688636552_keycards_table_columns_updateUpSql, map[string]*bintree{}}, - "1689248269_add_related_chain_id_networks.up.sql": &bintree{_1689248269_add_related_chain_id_networksUpSql, map[string]*bintree{}}, - "1689340211_index_filter_columns.up.sql": &bintree{_1689340211_index_filter_columnsUpSql, map[string]*bintree{}}, - "1689498471_make_wallet_accounts_positions_non_negative.up.sql": &bintree{_1689498471_make_wallet_accounts_positions_non_negativeUpSql, map[string]*bintree{}}, - "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql": &bintree{_1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql, map[string]*bintree{}}, - "1690225863_add_collectibles_ownership_cache.up.sql": &bintree{_1690225863_add_collectibles_ownership_cacheUpSql, map[string]*bintree{}}, - "1690734354_add_preferred_chain_ids.up.sql": &bintree{_1690734354_add_preferred_chain_idsUpSql, map[string]*bintree{}}, - "1691173699_add_collectibles_and_collections_data_cache.up.sql": &bintree{_1691173699_add_collectibles_and_collections_data_cacheUpSql, map[string]*bintree{}}, - "1691753758_move_wallet_tables_to_wallet_db.up.sql": &bintree{_1691753758_move_wallet_tables_to_wallet_dbUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1640111208_dummy.up.sql": {_1640111208_dummyUpSql, map[string]*bintree{}}, + "1642666031_add_removed_clock_to_bookmarks.up.sql": {_1642666031_add_removed_clock_to_bookmarksUpSql, map[string]*bintree{}}, + "1643644541_gif_api_key_setting.up.sql": {_1643644541_gif_api_key_settingUpSql, map[string]*bintree{}}, + "1644188994_recent_stickers.up.sql": {_1644188994_recent_stickersUpSql, map[string]*bintree{}}, + "1646659233_add_address_to_dapp_permisssion.up.sql": {_1646659233_add_address_to_dapp_permisssionUpSql, map[string]*bintree{}}, + "1646841105_add_emoji_account.up.sql": {_1646841105_add_emoji_accountUpSql, map[string]*bintree{}}, + "1647278782_display_name.up.sql": {_1647278782_display_nameUpSql, map[string]*bintree{}}, + "1647862838_reset_last_backup.up.sql": {_1647862838_reset_last_backupUpSql, map[string]*bintree{}}, + "1647871652_add_settings_sync_clock_table.up.sql": {_1647871652_add_settings_sync_clock_tableUpSql, map[string]*bintree{}}, + "1647880168_add_torrent_config.up.sql": {_1647880168_add_torrent_configUpSql, map[string]*bintree{}}, + "1647882837_add_communities_settings_table.up.sql": {_1647882837_add_communities_settings_tableUpSql, map[string]*bintree{}}, + "1647956635_add_waku_messages_table.up.sql": {_1647956635_add_waku_messages_tableUpSql, map[string]*bintree{}}, + "1648554928_network_test.up.sql": {_1648554928_network_testUpSql, map[string]*bintree{}}, + "1649174829_add_visitble_token.up.sql": {_1649174829_add_visitble_tokenUpSql, map[string]*bintree{}}, + "1649882262_add_derived_from_accounts.up.sql": {_1649882262_add_derived_from_accountsUpSql, map[string]*bintree{}}, + "1650612625_add_community_message_archive_hashes_table.up.sql": {_1650612625_add_community_message_archive_hashes_tableUpSql, map[string]*bintree{}}, + "1650616788_add_communities_archives_info_table.up.sql": {_1650616788_add_communities_archives_info_tableUpSql, map[string]*bintree{}}, + "1652715604_add_clock_accounts.up.sql": {_1652715604_add_clock_accountsUpSql, map[string]*bintree{}}, + "1653037334_add_notifications_settings_table.up.sql": {_1653037334_add_notifications_settings_tableUpSql, map[string]*bintree{}}, + "1654702119_add_mutual_contact_settings.up.sql": {_1654702119_add_mutual_contact_settingsUpSql, map[string]*bintree{}}, + "1655375270_add_clock_field_to_communities_settings_table.up.sql": {_1655375270_add_clock_field_to_communities_settings_tableUpSql, map[string]*bintree{}}, + "1655385721_drop_networks_config.up.sql": {_1655385721_drop_networks_configUpSql, map[string]*bintree{}}, + "1655385724_networks_chainColor_shortName.up.sql": {_1655385724_networks_chaincolor_shortnameUpSql, map[string]*bintree{}}, + "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql": {_1655456688_add_deleted_at_field_to_bookmarks_tableUpSql, map[string]*bintree{}}, + "1655462032_create_bookmarks_deleted_at_index.up.sql": {_1655462032_create_bookmarks_deleted_at_indexUpSql, map[string]*bintree{}}, + "1657617291_add_multi_transactions_table.up.sql": {_1657617291_add_multi_transactions_tableUpSql, map[string]*bintree{}}, + "1660134042_add_social_links_settings_table.up.sql": {_1660134042_add_social_links_settings_tableUpSql, map[string]*bintree{}}, + "1660134060_settings_bio.up.sql": {_1660134060_settings_bioUpSql, map[string]*bintree{}}, + "1660134070_add_wakuv2_store.up.sql": {_1660134070_add_wakuv2_storeUpSql, map[string]*bintree{}}, + "1660134072_waku2_store_messages.up.sql": {_1660134072_waku2_store_messagesUpSql, map[string]*bintree{}}, + "1662365868_add_key_uid_accounts.up.sql": {_1662365868_add_key_uid_accountsUpSql, map[string]*bintree{}}, + "1662447680_add_keypairs_table.up.sql": {_1662447680_add_keypairs_tableUpSql, map[string]*bintree{}}, + "1662460056_move_favourites_to_saved_addresses.up.sql": {_1662460056_move_favourites_to_saved_addressesUpSql, map[string]*bintree{}}, + "1662738097_add_base_fee_transaction.up.sql": {_1662738097_add_base_fee_transactionUpSql, map[string]*bintree{}}, + "1662972194_add_keypairs_table.up.sql": {_1662972194_add_keypairs_tableUpSql, map[string]*bintree{}}, + "1664392661_add_third_party_id_to_waku_messages.up.sql": {_1664392661_add_third_party_id_to_waku_messagesUpSql, map[string]*bintree{}}, + "1664783660_add_sync_info_to_saved_addresses.up.sql": {_1664783660_add_sync_info_to_saved_addressesUpSql, map[string]*bintree{}}, + "1668109917_wakunodes.up.sql": {_1668109917_wakunodesUpSql, map[string]*bintree{}}, + "1670249678_display_name_to_settings_sync_clock_table.up.sql": {_1670249678_display_name_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, + "1670836810_add_imported_flag_to_community_archive_hashes.up.sql": {_1670836810_add_imported_flag_to_community_archive_hashesUpSql, map[string]*bintree{}}, + "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql": {_1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql, map[string]*bintree{}}, + "1672933930_switcher_card.up.sql": {_1672933930_switcher_cardUpSql, map[string]*bintree{}}, + "1674056187_add_price_cache.up.sql": {_1674056187_add_price_cacheUpSql, map[string]*bintree{}}, + "1674136690_ens_usernames.up.sql": {_1674136690_ens_usernamesUpSql, map[string]*bintree{}}, + "1674232431_add_balance_history.up.sql": {_1674232431_add_balance_historyUpSql, map[string]*bintree{}}, + "1676368933_keypairs_to_keycards.up.sql": {_1676368933_keypairs_to_keycardsUpSql, map[string]*bintree{}}, + "1676951398_add_currency_format_cache.up.sql": {_1676951398_add_currency_format_cacheUpSql, map[string]*bintree{}}, + "1676968196_keycards_add_clock_column.up.sql": {_1676968196_keycards_add_clock_columnUpSql, map[string]*bintree{}}, + "1676968197_add_fallback_rpc_to_networks.up.sql": {_1676968197_add_fallback_rpc_to_networksUpSql, map[string]*bintree{}}, + "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": {_1677674090_add_chains_ens_istest_to_saved_addressesUpSql, map[string]*bintree{}}, + "1677681143_accounts_table_type_column_update.up.sql": {_1677681143_accounts_table_type_column_updateUpSql, map[string]*bintree{}}, + "1678264207_accounts_table_new_columns_added.up.sql": {_1678264207_accounts_table_new_columns_addedUpSql, map[string]*bintree{}}, + "1680770368_add_bio_to_settings_sync_clock_table.up.sql": {_1680770368_add_bio_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, + "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql": {_1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql, map[string]*bintree{}}, + "1681392602_9d_sync_period.up.sql": {_1681392602_9d_sync_periodUpSql, map[string]*bintree{}}, + "1681762078_default_sync_period_9d.up.sql": {_1681762078_default_sync_period_9dUpSql, map[string]*bintree{}}, + "1681780680_add_clock_to_social_links_settings.up.sql": {_1681780680_add_clock_to_social_links_settingsUpSql, map[string]*bintree{}}, + "1682073779_settings_table_remove_latest_derived_path_column.up.sql": {_1682073779_settings_table_remove_latest_derived_path_columnUpSql, map[string]*bintree{}}, + "1682146075_add_created_at_to_saved_addresses.up.sql": {_1682146075_add_created_at_to_saved_addressesUpSql, map[string]*bintree{}}, + "1682393575_sync_ens_name.up.sql": {_1682393575_sync_ens_nameUpSql, map[string]*bintree{}}, + "1683457503_add_blocks_ranges_sequential_table.up.sql": {_1683457503_add_blocks_ranges_sequential_tableUpSql, map[string]*bintree{}}, + "1683627613_accounts_and_keycards_improvements.up.sql": {_1683627613_accounts_and_keycards_improvementsUpSql, map[string]*bintree{}}, + "1685041348_settings_table_add_latest_derived_path_column.up.sql": {_1685041348_settings_table_add_latest_derived_path_columnUpSql, map[string]*bintree{}}, + "1685440989_update_color_id_accounts.up.sql": {_1685440989_update_color_id_accountsUpSql, map[string]*bintree{}}, + "1685463947_add_to_asset_to_multitransaction.up.sql": {_1685463947_add_to_asset_to_multitransactionUpSql, map[string]*bintree{}}, + "1685880973_add_profile_links_settings_table.up.sql": {_1685880973_add_profile_links_settings_tableUpSql, map[string]*bintree{}}, + "1686041510_add_idx_transfers_blkno_loaded.up.sql": {_1686041510_add_idx_transfers_blkno_loadedUpSql, map[string]*bintree{}}, + "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql": {_1686048341_transfers_receipt_json_blob_outUpSqlDownSql, map[string]*bintree{}}, + "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql": {_1686048341_transfers_receipt_json_blob_outUpSqlUpSql, map[string]*bintree{}}, + "1686825075_cleanup_token_address.up.sql": {_1686825075_cleanup_token_addressUpSql, map[string]*bintree{}}, + "1687193315_transfers_extract_from_to_address.down.sql": {_1687193315_transfers_extract_from_to_addressDownSql, map[string]*bintree{}}, + "1687193315_transfers_extract_from_to_address.up.sql": {_1687193315_transfers_extract_from_to_addressUpSql, map[string]*bintree{}}, + "1687249080_add_position_accounts.up..sql": {_1687249080_add_position_accountsUpSql, map[string]*bintree{}}, + "1687269871_add_device_name.up.sql": {_1687269871_add_device_nameUpSql, map[string]*bintree{}}, + "1687506642_include_watch_only_account_setting.up.sql": {_1687506642_include_watch_only_account_settingUpSql, map[string]*bintree{}}, + "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql": {_1688022264_add_include_watch_only_account_to_settings_sync_clockUpSql, map[string]*bintree{}}, + "1688054680_add_columns_to_multitransaction.up.sql": {_1688054680_add_columns_to_multitransactionUpSql, map[string]*bintree{}}, + "1688636552_keycards_table_columns_update.up.sql": {_1688636552_keycards_table_columns_updateUpSql, map[string]*bintree{}}, + "1689248269_add_related_chain_id_networks.up.sql": {_1689248269_add_related_chain_id_networksUpSql, map[string]*bintree{}}, + "1689340211_index_filter_columns.up.sql": {_1689340211_index_filter_columnsUpSql, map[string]*bintree{}}, + "1689498471_make_wallet_accounts_positions_non_negative.up.sql": {_1689498471_make_wallet_accounts_positions_non_negativeUpSql, map[string]*bintree{}}, + "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql": {_1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql, map[string]*bintree{}}, + "1690225863_add_collectibles_ownership_cache.up.sql": {_1690225863_add_collectibles_ownership_cacheUpSql, map[string]*bintree{}}, + "1690734354_add_preferred_chain_ids.up.sql": {_1690734354_add_preferred_chain_idsUpSql, map[string]*bintree{}}, + "1691173699_add_collectibles_and_collections_data_cache.up.sql": {_1691173699_add_collectibles_and_collections_data_cacheUpSql, map[string]*bintree{}}, + "1691753758_move_wallet_tables_to_wallet_db.up.sql": {_1691753758_move_wallet_tables_to_wallet_dbUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -2305,7 +2223,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/appdatabase/migrationsprevnodecfg/bindata.go b/appdatabase/migrationsprevnodecfg/bindata.go index 176bb3520..fa2964c22 100644 --- a/appdatabase/migrationsprevnodecfg/bindata.go +++ b/appdatabase/migrationsprevnodecfg/bindata.go @@ -63,7 +63,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -73,7 +72,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -81,7 +80,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -137,7 +136,7 @@ func _0001_appDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}} return a, nil } @@ -157,7 +156,7 @@ func _0001_appUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}} return a, nil } @@ -177,7 +176,7 @@ func _0002_tokensDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}} return a, nil } @@ -197,7 +196,7 @@ func _0002_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}} return a, nil } @@ -217,7 +216,7 @@ func _0003_settingsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}} return a, nil } @@ -237,7 +236,7 @@ func _0003_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}} return a, nil } @@ -257,7 +256,7 @@ func _0004_pending_stickersDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -277,7 +276,7 @@ func _0004_pending_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}} return a, nil } @@ -297,7 +296,7 @@ func _0005_waku_modeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -317,7 +316,7 @@ func _0005_waku_modeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}} return a, nil } @@ -337,7 +336,7 @@ func _0006_appearanceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}} return a, nil } @@ -357,7 +356,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}} return a, nil } @@ -377,7 +376,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}} return a, nil } @@ -397,7 +396,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}} return a, nil } @@ -417,7 +416,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}} return a, nil } @@ -437,7 +436,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}} return a, nil } @@ -457,7 +456,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}} return a, nil } @@ -477,7 +476,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -497,7 +496,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}} return a, nil } @@ -517,7 +516,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}} return a, nil } @@ -537,7 +536,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}} return a, nil } @@ -557,7 +556,7 @@ func _0013_favouritesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}} return a, nil } @@ -577,7 +576,7 @@ func _0013_favouritesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}} return a, nil } @@ -597,7 +596,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -617,7 +616,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}} return a, nil } @@ -637,7 +636,7 @@ func _0015_link_previewsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -657,7 +656,7 @@ func _0015_link_previewsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}} return a, nil } @@ -677,7 +676,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}} return a, nil } @@ -697,7 +696,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}} return a, nil } @@ -717,7 +716,7 @@ func _0017_bookmarksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}} return a, nil } @@ -737,7 +736,7 @@ func _0017_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}} return a, nil } @@ -757,7 +756,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}} return a, nil } @@ -777,7 +776,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}} return a, nil } @@ -797,7 +796,7 @@ func _0020_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}} return a, nil } @@ -817,7 +816,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}} return a, nil } @@ -837,7 +836,7 @@ func _0022_pending_transfersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}} return a, nil } @@ -857,7 +856,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}} return a, nil } @@ -877,7 +876,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}} return a, nil } @@ -897,7 +896,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}} return a, nil } @@ -917,7 +916,7 @@ func _1625872445_user_statusUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}} return a, nil } @@ -937,7 +936,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}} return a, nil } @@ -957,7 +956,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}} return a, nil } @@ -977,7 +976,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}} return a, nil } @@ -997,7 +996,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}} return a, nil } @@ -1017,7 +1016,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}} return a, nil } @@ -1037,7 +1036,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}} return a, nil } @@ -1057,7 +1056,7 @@ func _1630485153_networksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}} return a, nil } @@ -1077,7 +1076,7 @@ func _1630485153_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}} return a, nil } @@ -1097,7 +1096,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}} return a, nil } @@ -1117,7 +1116,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}} return a, nil } @@ -1137,7 +1136,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}} return a, nil } @@ -1157,7 +1156,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}} return a, nil } @@ -1177,7 +1176,7 @@ func _1640111208_nodeconfigUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}} return a, nil } @@ -1197,7 +1196,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}} return a, nil } @@ -1293,124 +1292,76 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "0001_app.down.sql": _0001_appDownSql, - - "0001_app.up.sql": _0001_appUpSql, - - "0002_tokens.down.sql": _0002_tokensDownSql, - - "0002_tokens.up.sql": _0002_tokensUpSql, - - "0003_settings.down.sql": _0003_settingsDownSql, - - "0003_settings.up.sql": _0003_settingsUpSql, - - "0004_pending_stickers.down.sql": _0004_pending_stickersDownSql, - - "0004_pending_stickers.up.sql": _0004_pending_stickersUpSql, - - "0005_waku_mode.down.sql": _0005_waku_modeDownSql, - - "0005_waku_mode.up.sql": _0005_waku_modeUpSql, - - "0006_appearance.up.sql": _0006_appearanceUpSql, - - "0007_enable_waku_default.up.sql": _0007_enable_waku_defaultUpSql, - - "0008_add_push_notifications.up.sql": _0008_add_push_notificationsUpSql, - - "0009_enable_sending_push_notifications.down.sql": _0009_enable_sending_push_notificationsDownSql, - - "0009_enable_sending_push_notifications.up.sql": _0009_enable_sending_push_notificationsUpSql, - - "0010_add_block_mentions.down.sql": _0010_add_block_mentionsDownSql, - - "0010_add_block_mentions.up.sql": _0010_add_block_mentionsUpSql, - - "0011_allow_webview_permission_requests.down.sql": _0011_allow_webview_permission_requestsDownSql, - - "0011_allow_webview_permission_requests.up.sql": _0011_allow_webview_permission_requestsUpSql, - - "0012_pending_transactions.down.sql": _0012_pending_transactionsDownSql, - - "0012_pending_transactions.up.sql": _0012_pending_transactionsUpSql, - - "0013_favourites.down.sql": _0013_favouritesDownSql, - - "0013_favourites.up.sql": _0013_favouritesUpSql, - - "0014_add_use_mailservers.down.sql": _0014_add_use_mailserversDownSql, - - "0014_add_use_mailservers.up.sql": _0014_add_use_mailserversUpSql, - - "0015_link_previews.down.sql": _0015_link_previewsDownSql, - - "0015_link_previews.up.sql": _0015_link_previewsUpSql, - - "0016_local_notifications_preferences.down.sql": _0016_local_notifications_preferencesDownSql, - - "0016_local_notifications_preferences.up.sql": _0016_local_notifications_preferencesUpSql, - - "0017_bookmarks.down.sql": _0017_bookmarksDownSql, - - "0017_bookmarks.up.sql": _0017_bookmarksUpSql, - - "0018_profile_pictures_visibility.up.sql": _0018_profile_pictures_visibilityUpSql, - - "0019_blocks_ranges_extra_data.up.sql": _0019_blocks_ranges_extra_dataUpSql, - - "0020_metrics.up.sql": _0020_metricsUpSql, - - "0021_add_session_id_to_metrics.up.sql": _0021_add_session_id_to_metricsUpSql, - - "0022_pending_transfers.up.sql": _0022_pending_transfersUpSql, - - "1618237885_settings_anon_metrics_should_send.up.sql": _1618237885_settings_anon_metrics_should_sendUpSql, - - "1618395756_contacts_only.up.sql": _1618395756_contacts_onlyUpSql, - - "1622184614_add_default_sync_period.up.sql": _1622184614_add_default_sync_periodUpSql, - - "1625872445_user_status.up.sql": _1625872445_user_statusUpSql, - - "1627983977_add_gif_to_settings.up.sql": _1627983977_add_gif_to_settingsUpSql, - - "1628580203_add_hidden_account.up.sql": _1628580203_add_hidden_accountUpSql, - - "1629123384_add_id_to_app_metrics.up.sql": _1629123384_add_id_to_app_metricsUpSql, - - "1630401853_add_opensea_enabled_to_settings.up.sql": _1630401853_add_opensea_enabled_to_settingsUpSql, - - "1630464455_create-saved_addresses-table.down.sql": _1630464455_createSaved_addressesTableDownSql, - - "1630464455_create-saved_addresses-table.up.sql": _1630464455_createSaved_addressesTableUpSql, - - "1630485153_networks.down.sql": _1630485153_networksDownSql, - - "1630485153_networks.up.sql": _1630485153_networksUpSql, - - "1632262444_profile_pictures_show_to.up.sql": _1632262444_profile_pictures_show_toUpSql, - + "0001_app.down.sql": _0001_appDownSql, + "0001_app.up.sql": _0001_appUpSql, + "0002_tokens.down.sql": _0002_tokensDownSql, + "0002_tokens.up.sql": _0002_tokensUpSql, + "0003_settings.down.sql": _0003_settingsDownSql, + "0003_settings.up.sql": _0003_settingsUpSql, + "0004_pending_stickers.down.sql": _0004_pending_stickersDownSql, + "0004_pending_stickers.up.sql": _0004_pending_stickersUpSql, + "0005_waku_mode.down.sql": _0005_waku_modeDownSql, + "0005_waku_mode.up.sql": _0005_waku_modeUpSql, + "0006_appearance.up.sql": _0006_appearanceUpSql, + "0007_enable_waku_default.up.sql": _0007_enable_waku_defaultUpSql, + "0008_add_push_notifications.up.sql": _0008_add_push_notificationsUpSql, + "0009_enable_sending_push_notifications.down.sql": _0009_enable_sending_push_notificationsDownSql, + "0009_enable_sending_push_notifications.up.sql": _0009_enable_sending_push_notificationsUpSql, + "0010_add_block_mentions.down.sql": _0010_add_block_mentionsDownSql, + "0010_add_block_mentions.up.sql": _0010_add_block_mentionsUpSql, + "0011_allow_webview_permission_requests.down.sql": _0011_allow_webview_permission_requestsDownSql, + "0011_allow_webview_permission_requests.up.sql": _0011_allow_webview_permission_requestsUpSql, + "0012_pending_transactions.down.sql": _0012_pending_transactionsDownSql, + "0012_pending_transactions.up.sql": _0012_pending_transactionsUpSql, + "0013_favourites.down.sql": _0013_favouritesDownSql, + "0013_favourites.up.sql": _0013_favouritesUpSql, + "0014_add_use_mailservers.down.sql": _0014_add_use_mailserversDownSql, + "0014_add_use_mailservers.up.sql": _0014_add_use_mailserversUpSql, + "0015_link_previews.down.sql": _0015_link_previewsDownSql, + "0015_link_previews.up.sql": _0015_link_previewsUpSql, + "0016_local_notifications_preferences.down.sql": _0016_local_notifications_preferencesDownSql, + "0016_local_notifications_preferences.up.sql": _0016_local_notifications_preferencesUpSql, + "0017_bookmarks.down.sql": _0017_bookmarksDownSql, + "0017_bookmarks.up.sql": _0017_bookmarksUpSql, + "0018_profile_pictures_visibility.up.sql": _0018_profile_pictures_visibilityUpSql, + "0019_blocks_ranges_extra_data.up.sql": _0019_blocks_ranges_extra_dataUpSql, + "0020_metrics.up.sql": _0020_metricsUpSql, + "0021_add_session_id_to_metrics.up.sql": _0021_add_session_id_to_metricsUpSql, + "0022_pending_transfers.up.sql": _0022_pending_transfersUpSql, + "1618237885_settings_anon_metrics_should_send.up.sql": _1618237885_settings_anon_metrics_should_sendUpSql, + "1618395756_contacts_only.up.sql": _1618395756_contacts_onlyUpSql, + "1622184614_add_default_sync_period.up.sql": _1622184614_add_default_sync_periodUpSql, + "1625872445_user_status.up.sql": _1625872445_user_statusUpSql, + "1627983977_add_gif_to_settings.up.sql": _1627983977_add_gif_to_settingsUpSql, + "1628580203_add_hidden_account.up.sql": _1628580203_add_hidden_accountUpSql, + "1629123384_add_id_to_app_metrics.up.sql": _1629123384_add_id_to_app_metricsUpSql, + "1630401853_add_opensea_enabled_to_settings.up.sql": _1630401853_add_opensea_enabled_to_settingsUpSql, + "1630464455_create-saved_addresses-table.down.sql": _1630464455_createSaved_addressesTableDownSql, + "1630464455_create-saved_addresses-table.up.sql": _1630464455_createSaved_addressesTableUpSql, + "1630485153_networks.down.sql": _1630485153_networksDownSql, + "1630485153_networks.up.sql": _1630485153_networksUpSql, + "1632262444_profile_pictures_show_to.up.sql": _1632262444_profile_pictures_show_toUpSql, "1635942153_add_telemetry_server_url_to_settings.up.sql": _1635942153_add_telemetry_server_url_to_settingsUpSql, - - "1635942154_add_backup_setting.up.sql": _1635942154_add_backup_settingUpSql, - - "1637745568_add_auto_message_setting.up.sql": _1637745568_add_auto_message_settingUpSql, - - "1640111208_nodeconfig.up.sql": _1640111208_nodeconfigUpSql, - - "doc.go": docGo, + "1635942154_add_backup_setting.up.sql": _1635942154_add_backup_settingUpSql, + "1637745568_add_auto_message_setting.up.sql": _1637745568_add_auto_message_settingUpSql, + "1640111208_nodeconfig.up.sql": _1640111208_nodeconfigUpSql, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -1443,60 +1394,60 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "0001_app.down.sql": &bintree{_0001_appDownSql, map[string]*bintree{}}, - "0001_app.up.sql": &bintree{_0001_appUpSql, map[string]*bintree{}}, - "0002_tokens.down.sql": &bintree{_0002_tokensDownSql, map[string]*bintree{}}, - "0002_tokens.up.sql": &bintree{_0002_tokensUpSql, map[string]*bintree{}}, - "0003_settings.down.sql": &bintree{_0003_settingsDownSql, map[string]*bintree{}}, - "0003_settings.up.sql": &bintree{_0003_settingsUpSql, map[string]*bintree{}}, - "0004_pending_stickers.down.sql": &bintree{_0004_pending_stickersDownSql, map[string]*bintree{}}, - "0004_pending_stickers.up.sql": &bintree{_0004_pending_stickersUpSql, map[string]*bintree{}}, - "0005_waku_mode.down.sql": &bintree{_0005_waku_modeDownSql, map[string]*bintree{}}, - "0005_waku_mode.up.sql": &bintree{_0005_waku_modeUpSql, map[string]*bintree{}}, - "0006_appearance.up.sql": &bintree{_0006_appearanceUpSql, map[string]*bintree{}}, - "0007_enable_waku_default.up.sql": &bintree{_0007_enable_waku_defaultUpSql, map[string]*bintree{}}, - "0008_add_push_notifications.up.sql": &bintree{_0008_add_push_notificationsUpSql, map[string]*bintree{}}, - "0009_enable_sending_push_notifications.down.sql": &bintree{_0009_enable_sending_push_notificationsDownSql, map[string]*bintree{}}, - "0009_enable_sending_push_notifications.up.sql": &bintree{_0009_enable_sending_push_notificationsUpSql, map[string]*bintree{}}, - "0010_add_block_mentions.down.sql": &bintree{_0010_add_block_mentionsDownSql, map[string]*bintree{}}, - "0010_add_block_mentions.up.sql": &bintree{_0010_add_block_mentionsUpSql, map[string]*bintree{}}, - "0011_allow_webview_permission_requests.down.sql": &bintree{_0011_allow_webview_permission_requestsDownSql, map[string]*bintree{}}, - "0011_allow_webview_permission_requests.up.sql": &bintree{_0011_allow_webview_permission_requestsUpSql, map[string]*bintree{}}, - "0012_pending_transactions.down.sql": &bintree{_0012_pending_transactionsDownSql, map[string]*bintree{}}, - "0012_pending_transactions.up.sql": &bintree{_0012_pending_transactionsUpSql, map[string]*bintree{}}, - "0013_favourites.down.sql": &bintree{_0013_favouritesDownSql, map[string]*bintree{}}, - "0013_favourites.up.sql": &bintree{_0013_favouritesUpSql, map[string]*bintree{}}, - "0014_add_use_mailservers.down.sql": &bintree{_0014_add_use_mailserversDownSql, map[string]*bintree{}}, - "0014_add_use_mailservers.up.sql": &bintree{_0014_add_use_mailserversUpSql, map[string]*bintree{}}, - "0015_link_previews.down.sql": &bintree{_0015_link_previewsDownSql, map[string]*bintree{}}, - "0015_link_previews.up.sql": &bintree{_0015_link_previewsUpSql, map[string]*bintree{}}, - "0016_local_notifications_preferences.down.sql": &bintree{_0016_local_notifications_preferencesDownSql, map[string]*bintree{}}, - "0016_local_notifications_preferences.up.sql": &bintree{_0016_local_notifications_preferencesUpSql, map[string]*bintree{}}, - "0017_bookmarks.down.sql": &bintree{_0017_bookmarksDownSql, map[string]*bintree{}}, - "0017_bookmarks.up.sql": &bintree{_0017_bookmarksUpSql, map[string]*bintree{}}, - "0018_profile_pictures_visibility.up.sql": &bintree{_0018_profile_pictures_visibilityUpSql, map[string]*bintree{}}, - "0019_blocks_ranges_extra_data.up.sql": &bintree{_0019_blocks_ranges_extra_dataUpSql, map[string]*bintree{}}, - "0020_metrics.up.sql": &bintree{_0020_metricsUpSql, map[string]*bintree{}}, - "0021_add_session_id_to_metrics.up.sql": &bintree{_0021_add_session_id_to_metricsUpSql, map[string]*bintree{}}, - "0022_pending_transfers.up.sql": &bintree{_0022_pending_transfersUpSql, map[string]*bintree{}}, - "1618237885_settings_anon_metrics_should_send.up.sql": &bintree{_1618237885_settings_anon_metrics_should_sendUpSql, map[string]*bintree{}}, - "1618395756_contacts_only.up.sql": &bintree{_1618395756_contacts_onlyUpSql, map[string]*bintree{}}, - "1622184614_add_default_sync_period.up.sql": &bintree{_1622184614_add_default_sync_periodUpSql, map[string]*bintree{}}, - "1625872445_user_status.up.sql": &bintree{_1625872445_user_statusUpSql, map[string]*bintree{}}, - "1627983977_add_gif_to_settings.up.sql": &bintree{_1627983977_add_gif_to_settingsUpSql, map[string]*bintree{}}, - "1628580203_add_hidden_account.up.sql": &bintree{_1628580203_add_hidden_accountUpSql, map[string]*bintree{}}, - "1629123384_add_id_to_app_metrics.up.sql": &bintree{_1629123384_add_id_to_app_metricsUpSql, map[string]*bintree{}}, - "1630401853_add_opensea_enabled_to_settings.up.sql": &bintree{_1630401853_add_opensea_enabled_to_settingsUpSql, map[string]*bintree{}}, - "1630464455_create-saved_addresses-table.down.sql": &bintree{_1630464455_createSaved_addressesTableDownSql, map[string]*bintree{}}, - "1630464455_create-saved_addresses-table.up.sql": &bintree{_1630464455_createSaved_addressesTableUpSql, map[string]*bintree{}}, - "1630485153_networks.down.sql": &bintree{_1630485153_networksDownSql, map[string]*bintree{}}, - "1630485153_networks.up.sql": &bintree{_1630485153_networksUpSql, map[string]*bintree{}}, - "1632262444_profile_pictures_show_to.up.sql": &bintree{_1632262444_profile_pictures_show_toUpSql, map[string]*bintree{}}, - "1635942153_add_telemetry_server_url_to_settings.up.sql": &bintree{_1635942153_add_telemetry_server_url_to_settingsUpSql, map[string]*bintree{}}, - "1635942154_add_backup_setting.up.sql": &bintree{_1635942154_add_backup_settingUpSql, map[string]*bintree{}}, - "1637745568_add_auto_message_setting.up.sql": &bintree{_1637745568_add_auto_message_settingUpSql, map[string]*bintree{}}, - "1640111208_nodeconfig.up.sql": &bintree{_1640111208_nodeconfigUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "0001_app.down.sql": {_0001_appDownSql, map[string]*bintree{}}, + "0001_app.up.sql": {_0001_appUpSql, map[string]*bintree{}}, + "0002_tokens.down.sql": {_0002_tokensDownSql, map[string]*bintree{}}, + "0002_tokens.up.sql": {_0002_tokensUpSql, map[string]*bintree{}}, + "0003_settings.down.sql": {_0003_settingsDownSql, map[string]*bintree{}}, + "0003_settings.up.sql": {_0003_settingsUpSql, map[string]*bintree{}}, + "0004_pending_stickers.down.sql": {_0004_pending_stickersDownSql, map[string]*bintree{}}, + "0004_pending_stickers.up.sql": {_0004_pending_stickersUpSql, map[string]*bintree{}}, + "0005_waku_mode.down.sql": {_0005_waku_modeDownSql, map[string]*bintree{}}, + "0005_waku_mode.up.sql": {_0005_waku_modeUpSql, map[string]*bintree{}}, + "0006_appearance.up.sql": {_0006_appearanceUpSql, map[string]*bintree{}}, + "0007_enable_waku_default.up.sql": {_0007_enable_waku_defaultUpSql, map[string]*bintree{}}, + "0008_add_push_notifications.up.sql": {_0008_add_push_notificationsUpSql, map[string]*bintree{}}, + "0009_enable_sending_push_notifications.down.sql": {_0009_enable_sending_push_notificationsDownSql, map[string]*bintree{}}, + "0009_enable_sending_push_notifications.up.sql": {_0009_enable_sending_push_notificationsUpSql, map[string]*bintree{}}, + "0010_add_block_mentions.down.sql": {_0010_add_block_mentionsDownSql, map[string]*bintree{}}, + "0010_add_block_mentions.up.sql": {_0010_add_block_mentionsUpSql, map[string]*bintree{}}, + "0011_allow_webview_permission_requests.down.sql": {_0011_allow_webview_permission_requestsDownSql, map[string]*bintree{}}, + "0011_allow_webview_permission_requests.up.sql": {_0011_allow_webview_permission_requestsUpSql, map[string]*bintree{}}, + "0012_pending_transactions.down.sql": {_0012_pending_transactionsDownSql, map[string]*bintree{}}, + "0012_pending_transactions.up.sql": {_0012_pending_transactionsUpSql, map[string]*bintree{}}, + "0013_favourites.down.sql": {_0013_favouritesDownSql, map[string]*bintree{}}, + "0013_favourites.up.sql": {_0013_favouritesUpSql, map[string]*bintree{}}, + "0014_add_use_mailservers.down.sql": {_0014_add_use_mailserversDownSql, map[string]*bintree{}}, + "0014_add_use_mailservers.up.sql": {_0014_add_use_mailserversUpSql, map[string]*bintree{}}, + "0015_link_previews.down.sql": {_0015_link_previewsDownSql, map[string]*bintree{}}, + "0015_link_previews.up.sql": {_0015_link_previewsUpSql, map[string]*bintree{}}, + "0016_local_notifications_preferences.down.sql": {_0016_local_notifications_preferencesDownSql, map[string]*bintree{}}, + "0016_local_notifications_preferences.up.sql": {_0016_local_notifications_preferencesUpSql, map[string]*bintree{}}, + "0017_bookmarks.down.sql": {_0017_bookmarksDownSql, map[string]*bintree{}}, + "0017_bookmarks.up.sql": {_0017_bookmarksUpSql, map[string]*bintree{}}, + "0018_profile_pictures_visibility.up.sql": {_0018_profile_pictures_visibilityUpSql, map[string]*bintree{}}, + "0019_blocks_ranges_extra_data.up.sql": {_0019_blocks_ranges_extra_dataUpSql, map[string]*bintree{}}, + "0020_metrics.up.sql": {_0020_metricsUpSql, map[string]*bintree{}}, + "0021_add_session_id_to_metrics.up.sql": {_0021_add_session_id_to_metricsUpSql, map[string]*bintree{}}, + "0022_pending_transfers.up.sql": {_0022_pending_transfersUpSql, map[string]*bintree{}}, + "1618237885_settings_anon_metrics_should_send.up.sql": {_1618237885_settings_anon_metrics_should_sendUpSql, map[string]*bintree{}}, + "1618395756_contacts_only.up.sql": {_1618395756_contacts_onlyUpSql, map[string]*bintree{}}, + "1622184614_add_default_sync_period.up.sql": {_1622184614_add_default_sync_periodUpSql, map[string]*bintree{}}, + "1625872445_user_status.up.sql": {_1625872445_user_statusUpSql, map[string]*bintree{}}, + "1627983977_add_gif_to_settings.up.sql": {_1627983977_add_gif_to_settingsUpSql, map[string]*bintree{}}, + "1628580203_add_hidden_account.up.sql": {_1628580203_add_hidden_accountUpSql, map[string]*bintree{}}, + "1629123384_add_id_to_app_metrics.up.sql": {_1629123384_add_id_to_app_metricsUpSql, map[string]*bintree{}}, + "1630401853_add_opensea_enabled_to_settings.up.sql": {_1630401853_add_opensea_enabled_to_settingsUpSql, map[string]*bintree{}}, + "1630464455_create-saved_addresses-table.down.sql": {_1630464455_createSaved_addressesTableDownSql, map[string]*bintree{}}, + "1630464455_create-saved_addresses-table.up.sql": {_1630464455_createSaved_addressesTableUpSql, map[string]*bintree{}}, + "1630485153_networks.down.sql": {_1630485153_networksDownSql, map[string]*bintree{}}, + "1630485153_networks.up.sql": {_1630485153_networksUpSql, map[string]*bintree{}}, + "1632262444_profile_pictures_show_to.up.sql": {_1632262444_profile_pictures_show_toUpSql, map[string]*bintree{}}, + "1635942153_add_telemetry_server_url_to_settings.up.sql": {_1635942153_add_telemetry_server_url_to_settingsUpSql, map[string]*bintree{}}, + "1635942154_add_backup_setting.up.sql": {_1635942154_add_backup_settingUpSql, map[string]*bintree{}}, + "1637745568_add_auto_message_setting.up.sql": {_1637745568_add_auto_message_settingUpSql, map[string]*bintree{}}, + "1640111208_nodeconfig.up.sql": {_1640111208_nodeconfigUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -1513,7 +1464,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/cmd/ping-community/main.go b/cmd/ping-community/main.go index 8f4f24207..654c9d0d9 100644 --- a/cmd/ping-community/main.go +++ b/cmd/ping-community/main.go @@ -188,7 +188,7 @@ func main() { count++ timestamp := time.Now().Format(time.RFC3339) logger.Info("Publishing", "id", id, "count", count, "time", timestamp) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.Text = fmt.Sprintf("%d\n%s\n%s", count, timestamp, id) inputMessage.LocalChatID = targetChat.ID diff --git a/cmd/populate-db/main.go b/cmd/populate-db/main.go index 48cd54c77..4b7cc04b8 100644 --- a/cmd/populate-db/main.go +++ b/cmd/populate-db/main.go @@ -516,7 +516,7 @@ func buildMessage(chat *protocol.Chat, count int) *common.Message { clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) clock += uint64(count) - message := &common.Message{} + message := common.NewMessage() message.Text = fmt.Sprintf("test message %d", count) message.ChatId = chat.ID message.Clock = clock diff --git a/mailserver/migrations/bindata.go b/mailserver/migrations/bindata.go index 33e8e0428..442909145 100644 --- a/mailserver/migrations/bindata.go +++ b/mailserver/migrations/bindata.go @@ -12,7 +12,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -22,7 +21,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -30,7 +29,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -86,7 +85,7 @@ func _1557732988_initialize_dbDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x40, 0x78, 0xb7, 0x71, 0x3c, 0x20, 0x3b, 0xc9, 0xb, 0x2f, 0x49, 0xe4, 0xff, 0x1c, 0x84, 0x54, 0xa1, 0x30, 0xe3, 0x90, 0xf8, 0x73, 0xda, 0xb0, 0x2a, 0xea, 0x8e, 0xf1, 0x82, 0xe7, 0xd2}} return a, nil } @@ -106,7 +105,7 @@ func _1557732988_initialize_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x85, 0x41, 0x7a, 0xba, 0x4f, 0xa3, 0x43, 0xc0, 0x63, 0xfa, 0x2c, 0xd1, 0xc5, 0xbb, 0x20, 0xa0, 0x64, 0xa8, 0x3b, 0x65, 0x82, 0xa2, 0x14, 0x28, 0x18, 0x7c, 0x8b, 0x3a, 0x7a, 0xfd, 0xe0}} return a, nil } @@ -126,7 +125,7 @@ func staticGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x8a, 0xf4, 0x27, 0x24, 0x9d, 0x2a, 0x1, 0x7b, 0x54, 0xea, 0xae, 0x4a, 0x35, 0x40, 0x92, 0xb5, 0xf9, 0xb3, 0x54, 0x3e, 0x3a, 0x1a, 0x2b, 0xae, 0xfb, 0x9e, 0x82, 0xeb, 0x4c, 0xf, 0x6}} return a, nil } @@ -223,21 +222,24 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "1557732988_initialize_db.down.sql": _1557732988_initialize_dbDownSql, - - "1557732988_initialize_db.up.sql": _1557732988_initialize_dbUpSql, - - "static.go": staticGo, + "1557732988_initialize_db.up.sql": _1557732988_initialize_dbUpSql, + "static.go": staticGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -270,9 +272,9 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1557732988_initialize_db.down.sql": &bintree{_1557732988_initialize_dbDownSql, map[string]*bintree{}}, - "1557732988_initialize_db.up.sql": &bintree{_1557732988_initialize_dbUpSql, map[string]*bintree{}}, - "static.go": &bintree{staticGo, map[string]*bintree{}}, + "1557732988_initialize_db.down.sql": {_1557732988_initialize_dbDownSql, map[string]*bintree{}}, + "1557732988_initialize_db.up.sql": {_1557732988_initialize_dbUpSql, map[string]*bintree{}}, + "static.go": {staticGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -289,7 +291,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/multiaccounts/migrations/bindata.go b/multiaccounts/migrations/bindata.go index e132ec479..c34d63cab 100644 --- a/multiaccounts/migrations/bindata.go +++ b/multiaccounts/migrations/bindata.go @@ -22,7 +22,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -32,7 +31,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -40,7 +39,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -96,7 +95,7 @@ func _0001_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x61, 0x4c, 0x18, 0xfc, 0xc, 0xdf, 0x5c, 0x1f, 0x5e, 0xd3, 0xbd, 0xfa, 0x12, 0x5e, 0x8d, 0x8d, 0x8b, 0xb9, 0x5f, 0x99, 0x46, 0x63, 0xa5, 0xe3, 0xa6, 0x8a, 0x4, 0xf1, 0x73, 0x8a, 0xe9}} return a, nil } @@ -116,7 +115,7 @@ func _0001_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0xfa, 0x99, 0x8e, 0x96, 0xb3, 0x13, 0x6c, 0x1f, 0x6, 0x27, 0xc5, 0xd2, 0xd4, 0xe0, 0xa5, 0x26, 0x82, 0xa7, 0x26, 0xf2, 0x68, 0x9d, 0xed, 0x9c, 0x3d, 0xbb, 0xdc, 0x37, 0x28, 0xbc, 0x1}} return a, nil } @@ -136,7 +135,7 @@ func _1605007189_identity_imagesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0xcf, 0xa7, 0xae, 0xd5, 0x4f, 0xcd, 0x14, 0x63, 0x9, 0xbe, 0x39, 0x49, 0x18, 0x96, 0xb2, 0xa3, 0x8, 0x7d, 0x41, 0xdb, 0x50, 0x5d, 0xf5, 0x4d, 0xa2, 0xd, 0x8f, 0x57, 0x79, 0x77, 0x67}} return a, nil } @@ -156,7 +155,7 @@ func _1605007189_identity_imagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0xb6, 0xc1, 0x5c, 0x76, 0x72, 0x6b, 0x22, 0x34, 0xdc, 0x96, 0xdc, 0x2b, 0xfd, 0x2d, 0xbe, 0xcc, 0x1e, 0xd4, 0x5, 0x93, 0xd, 0xc2, 0x51, 0xf3, 0x1a, 0xef, 0x2b, 0x26, 0xa4, 0xeb, 0x65}} return a, nil } @@ -176,7 +175,7 @@ func _1606224181_drop_photo_path_from_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0x24, 0x17, 0x7, 0x80, 0x93, 0x6f, 0x8d, 0x5d, 0xaa, 0x8c, 0x79, 0x15, 0x5d, 0xb3, 0x19, 0xd7, 0xd8, 0x39, 0xf9, 0x3a, 0x63, 0x8f, 0x81, 0x15, 0xb6, 0xd6, 0x9a, 0x37, 0xa8, 0x8e, 0x9b}} return a, nil } @@ -196,7 +195,7 @@ func _1606224181_drop_photo_path_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xff, 0x4c, 0x97, 0xee, 0xef, 0x82, 0xb8, 0x6c, 0x71, 0xbb, 0x50, 0x7b, 0xe6, 0xd9, 0x22, 0x31, 0x7c, 0x1a, 0xfe, 0x91, 0x28, 0xf6, 0x6, 0x36, 0xe, 0xb1, 0xf1, 0xc8, 0x25, 0xac, 0x7e, 0xd6}} return a, nil } @@ -216,7 +215,7 @@ func _1648646095_image_clockDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0xa8, 0x1f, 0xf, 0xe0, 0xd7, 0xc9, 0x68, 0x98, 0xd8, 0x37, 0xb8, 0xba, 0x9e, 0xb2, 0x19, 0xf3, 0xc4, 0x73, 0x80, 0x3, 0x17, 0x2a, 0x53, 0x68, 0x10, 0x13, 0x54, 0x99, 0xb1, 0xf5, 0x1c}} return a, nil } @@ -236,7 +235,7 @@ func _1648646095_image_clockUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x98, 0xa6, 0xa4, 0x4e, 0x4e, 0xca, 0x17, 0x56, 0xea, 0xfb, 0xf0, 0xa9, 0x81, 0x95, 0xe, 0x80, 0x52, 0x1, 0x47, 0x9b, 0xde, 0x14, 0xfa, 0x72, 0xc9, 0x62, 0x6f, 0x24, 0xa2, 0xc, 0x32, 0x50}} return a, nil } @@ -256,7 +255,7 @@ func _1649317600_add_color_hashUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xf, 0x37, 0x6d, 0xcf, 0x99, 0xc9, 0x2e, 0xdc, 0x70, 0x11, 0xb4, 0x36, 0x26, 0x4f, 0x39, 0xa8, 0x44, 0xf, 0xcb, 0xcc, 0x81, 0x74, 0x7a, 0x88, 0xaa, 0x54, 0x8c, 0xc4, 0xe, 0x56, 0x4f}} return a, nil } @@ -276,7 +275,7 @@ func _1660238799_accounts_kdfUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0xe6, 0x7a, 0x69, 0x25, 0x42, 0x3b, 0x9c, 0x20, 0xf5, 0xcb, 0xae, 0xb0, 0xb3, 0x1b, 0x66, 0xc2, 0x5d, 0xd0, 0xc1, 0x59, 0xe8, 0xa9, 0xc5, 0x69, 0x58, 0x8f, 0xae, 0xe6, 0xd1, 0x4c, 0x53}} return a, nil } @@ -296,7 +295,7 @@ func _1679505708_add_customization_colorUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0xe1, 0x3d, 0xaa, 0x5d, 0x35, 0x87, 0x8a, 0x8b, 0xe9, 0x4a, 0xa6, 0x7b, 0x85, 0xbc, 0x33, 0x11, 0xc7, 0x7d, 0x61, 0xac, 0x65, 0x59, 0xda, 0x32, 0x59, 0x68, 0x9d, 0xa1, 0x10, 0x7b, 0xa9}} return a, nil } @@ -316,7 +315,7 @@ func _1687853321_add_customization_color_updated_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xc2, 0x9, 0xec, 0xf4, 0xd1, 0x46, 0x29, 0xc5, 0xce, 0x4d, 0xd4, 0xf, 0x9c, 0xfa, 0x62, 0x1, 0x29, 0xe6, 0xd2, 0xd5, 0xe, 0xf0, 0x27, 0x81, 0x4a, 0x82, 0x25, 0x5f, 0x67, 0xff, 0xd1}} return a, nil } @@ -336,7 +335,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -432,42 +431,35 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "0001_accounts.down.sql": _0001_accountsDownSql, - - "0001_accounts.up.sql": _0001_accountsUpSql, - - "1605007189_identity_images.down.sql": _1605007189_identity_imagesDownSql, - - "1605007189_identity_images.up.sql": _1605007189_identity_imagesUpSql, - - "1606224181_drop_photo_path_from_accounts.down.sql": _1606224181_drop_photo_path_from_accountsDownSql, - - "1606224181_drop_photo_path_from_accounts.up.sql": _1606224181_drop_photo_path_from_accountsUpSql, - - "1648646095_image_clock.down.sql": _1648646095_image_clockDownSql, - - "1648646095_image_clock.up.sql": _1648646095_image_clockUpSql, - - "1649317600_add_color_hash.up.sql": _1649317600_add_color_hashUpSql, - - "1660238799_accounts_kdf.up.sql": _1660238799_accounts_kdfUpSql, - - "1679505708_add_customization_color.up.sql": _1679505708_add_customization_colorUpSql, - + "0001_accounts.down.sql": _0001_accountsDownSql, + "0001_accounts.up.sql": _0001_accountsUpSql, + "1605007189_identity_images.down.sql": _1605007189_identity_imagesDownSql, + "1605007189_identity_images.up.sql": _1605007189_identity_imagesUpSql, + "1606224181_drop_photo_path_from_accounts.down.sql": _1606224181_drop_photo_path_from_accountsDownSql, + "1606224181_drop_photo_path_from_accounts.up.sql": _1606224181_drop_photo_path_from_accountsUpSql, + "1648646095_image_clock.down.sql": _1648646095_image_clockDownSql, + "1648646095_image_clock.up.sql": _1648646095_image_clockUpSql, + "1649317600_add_color_hash.up.sql": _1649317600_add_color_hashUpSql, + "1660238799_accounts_kdf.up.sql": _1660238799_accounts_kdfUpSql, + "1679505708_add_customization_color.up.sql": _1679505708_add_customization_colorUpSql, "1687853321_add_customization_color_updated_at.up.sql": _1687853321_add_customization_color_updated_atUpSql, - "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -500,19 +492,19 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "0001_accounts.down.sql": &bintree{_0001_accountsDownSql, map[string]*bintree{}}, - "0001_accounts.up.sql": &bintree{_0001_accountsUpSql, map[string]*bintree{}}, - "1605007189_identity_images.down.sql": &bintree{_1605007189_identity_imagesDownSql, map[string]*bintree{}}, - "1605007189_identity_images.up.sql": &bintree{_1605007189_identity_imagesUpSql, map[string]*bintree{}}, - "1606224181_drop_photo_path_from_accounts.down.sql": &bintree{_1606224181_drop_photo_path_from_accountsDownSql, map[string]*bintree{}}, - "1606224181_drop_photo_path_from_accounts.up.sql": &bintree{_1606224181_drop_photo_path_from_accountsUpSql, map[string]*bintree{}}, - "1648646095_image_clock.down.sql": &bintree{_1648646095_image_clockDownSql, map[string]*bintree{}}, - "1648646095_image_clock.up.sql": &bintree{_1648646095_image_clockUpSql, map[string]*bintree{}}, - "1649317600_add_color_hash.up.sql": &bintree{_1649317600_add_color_hashUpSql, map[string]*bintree{}}, - "1660238799_accounts_kdf.up.sql": &bintree{_1660238799_accounts_kdfUpSql, map[string]*bintree{}}, - "1679505708_add_customization_color.up.sql": &bintree{_1679505708_add_customization_colorUpSql, map[string]*bintree{}}, - "1687853321_add_customization_color_updated_at.up.sql": &bintree{_1687853321_add_customization_color_updated_atUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "0001_accounts.down.sql": {_0001_accountsDownSql, map[string]*bintree{}}, + "0001_accounts.up.sql": {_0001_accountsUpSql, map[string]*bintree{}}, + "1605007189_identity_images.down.sql": {_1605007189_identity_imagesDownSql, map[string]*bintree{}}, + "1605007189_identity_images.up.sql": {_1605007189_identity_imagesUpSql, map[string]*bintree{}}, + "1606224181_drop_photo_path_from_accounts.down.sql": {_1606224181_drop_photo_path_from_accountsDownSql, map[string]*bintree{}}, + "1606224181_drop_photo_path_from_accounts.up.sql": {_1606224181_drop_photo_path_from_accountsUpSql, map[string]*bintree{}}, + "1648646095_image_clock.down.sql": {_1648646095_image_clockDownSql, map[string]*bintree{}}, + "1648646095_image_clock.up.sql": {_1648646095_image_clockUpSql, map[string]*bintree{}}, + "1649317600_add_color_hash.up.sql": {_1649317600_add_color_hashUpSql, map[string]*bintree{}}, + "1660238799_accounts_kdf.up.sql": {_1660238799_accounts_kdfUpSql, map[string]*bintree{}}, + "1679505708_add_customization_color.up.sql": {_1679505708_add_customization_colorUpSql, map[string]*bintree{}}, + "1687853321_add_customization_color_updated_at.up.sql": {_1687853321_add_customization_color_updated_atUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -529,7 +521,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/activity_center_persistence.go b/protocol/activity_center_persistence.go index d533cd8a0..65353290a 100644 --- a/protocol/activity_center_persistence.go +++ b/protocol/activity_center_persistence.go @@ -294,7 +294,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) // Restore last message if lastMessageBytes != nil { - lastMessage := &common.Message{} + lastMessage := common.NewMessage() if err = json.Unmarshal(lastMessageBytes, lastMessage); err != nil { return nil, err } @@ -303,7 +303,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) // Restore message if messageBytes != nil { - message := &common.Message{} + message := common.NewMessage() if err = json.Unmarshal(messageBytes, message); err != nil { return nil, err } @@ -312,7 +312,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) // Restore reply message if replyMessageBytes != nil { - replyMessage := &common.Message{} + replyMessage := common.NewMessage() if err = json.Unmarshal(replyMessageBytes, replyMessage); err != nil { return nil, err } @@ -374,7 +374,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro // Restore last message if lastMessageBytes != nil { - lastMessage := &common.Message{} + lastMessage := common.NewMessage() if err = json.Unmarshal(lastMessageBytes, lastMessage); err != nil { return "", nil, err } @@ -383,7 +383,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro // Restore message if messageBytes != nil { - message := &common.Message{} + message := common.NewMessage() if err = json.Unmarshal(messageBytes, message); err != nil { return "", nil, err } @@ -392,7 +392,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro // Restore reply message if replyMessageBytes != nil { - replyMessage := &common.Message{} + replyMessage := common.NewMessage() if err = json.Unmarshal(replyMessageBytes, replyMessage); err != nil { return "", nil, err } diff --git a/protocol/activity_center_persistence_test.go b/protocol/activity_center_persistence_test.go index ded1084eb..dff49b682 100644 --- a/protocol/activity_center_persistence_test.go +++ b/protocol/activity_center_persistence_test.go @@ -52,7 +52,7 @@ func TestDeleteActivityCenterNotificationsWhenEmpty(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) @@ -81,7 +81,7 @@ func TestDeleteActivityCenterNotificationsWithMultipleIds(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) @@ -120,14 +120,17 @@ func TestDeleteActivityCenterNotificationsForMessage(t *testing.T) { messages := []*common.Message{ { ID: "0x1", + ChatMessage: &protobuf.ChatMessage{}, LocalChatID: chat.ID, }, { ID: "0x2", + ChatMessage: &protobuf.ChatMessage{}, LocalChatID: chat.ID, }, { - ID: "0x3", + ChatMessage: &protobuf.ChatMessage{}, + ID: "0x3", }, } err = p.SaveMessages(messages) @@ -238,7 +241,7 @@ func (s *MessengerActivityCenterMessageSuite) TestMuteCommunityActivityCenterNot chat := CreateOneToOneChat(common.PubkeyToHex(&alice.identity.PublicKey), &alice.identity.PublicKey, bob.transport) // bob sends a community message - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -279,7 +282,7 @@ func (s *MessengerActivityCenterMessageSuite) TestMuteCommunityActivityCenterNot s.Require().True(bobCommunity.Muted()) // alice sends a community message - inputMessage = &common.Message{} + inputMessage = common.NewMessage() inputMessage.ChatId = defaultCommunityChatID inputMessage.Text = "Good news, @" + common.EveryoneMentionTag + " !" inputMessage.CommunityID = community.IDString() @@ -800,7 +803,7 @@ func TestActivityCenterPersistence(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) @@ -949,7 +952,7 @@ func TestActivityCenterReadUnreadPagination(t *testing.T) { initialOrFinalCursor := "" chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) @@ -1076,7 +1079,7 @@ func TestActivityCenterReadUnreadFilterByTypes(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) @@ -1204,7 +1207,7 @@ func TestActivityCenterReadUnread(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "sample text" chat.LastMessage = message err = p.SaveChat(*chat) diff --git a/protocol/anonmetrics/adaptors.go b/protocol/anonmetrics/adaptors.go index 41ad8d19f..851bd2043 100644 --- a/protocol/anonmetrics/adaptors.go +++ b/protocol/anonmetrics/adaptors.go @@ -65,7 +65,11 @@ func adaptModelsToProtoBatch(modelAnonMetrics []appmetrics.AppMetric, sendID *ec return amb, nil } -func adaptProtoBatchToModels(protoBatch protobuf.AnonymousMetricBatch) ([]*appmetrics.AppMetric, error) { +func adaptProtoBatchToModels(protoBatch *protobuf.AnonymousMetricBatch) ([]*appmetrics.AppMetric, error) { + if protoBatch == nil { + return nil, nil + } + var ams []*appmetrics.AppMetric for _, pm := range protoBatch.Metrics { diff --git a/protocol/anonmetrics/migrations/migrations.go b/protocol/anonmetrics/migrations/migrations.go index 2ced0fef8..a294106b7 100644 --- a/protocol/anonmetrics/migrations/migrations.go +++ b/protocol/anonmetrics/migrations/migrations.go @@ -12,7 +12,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -22,7 +21,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -30,7 +29,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -86,7 +85,7 @@ func _1619446565_postgres_make_anon_metrics_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x75, 0xea, 0x1, 0x74, 0xe6, 0xa3, 0x11, 0xd0, 0x86, 0x87, 0x7e, 0x31, 0xb4, 0x1a, 0x27, 0x5d, 0xda, 0x77, 0xa3, 0xf5, 0x1d, 0x88, 0x79, 0xcf, 0xd5, 0x95, 0x75, 0xd, 0x47, 0xa1, 0x90, 0x5}} return a, nil } @@ -106,7 +105,7 @@ func _1619446565_postgres_make_anon_metrics_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xdc, 0x72, 0x28, 0x3c, 0xf6, 0x94, 0xb0, 0x47, 0x3d, 0xca, 0x55, 0x3d, 0xf7, 0x83, 0xb8, 0x7d, 0x2f, 0x1e, 0x98, 0xb7, 0xde, 0xa, 0xff, 0xa0, 0x52, 0x60, 0x83, 0x56, 0xc5, 0xd1, 0xa2}} return a, nil } @@ -126,7 +125,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x1, 0xd4, 0xd6, 0xc7, 0x44, 0xd4, 0xfd, 0x7b, 0x69, 0x1f, 0xe3, 0xe, 0x48, 0x14, 0x99, 0xf0, 0x8e, 0x43, 0xae, 0x54, 0x64, 0xa2, 0x8b, 0x82, 0x1c, 0x2b, 0xb, 0xec, 0xf5, 0xb3, 0xfc}} return a, nil } @@ -223,21 +222,24 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "1619446565_postgres_make_anon_metrics_table.down.sql": _1619446565_postgres_make_anon_metrics_tableDownSql, - - "1619446565_postgres_make_anon_metrics_table.up.sql": _1619446565_postgres_make_anon_metrics_tableUpSql, - + "1619446565_postgres_make_anon_metrics_table.up.sql": _1619446565_postgres_make_anon_metrics_tableUpSql, "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -270,9 +272,9 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1619446565_postgres_make_anon_metrics_table.down.sql": &bintree{_1619446565_postgres_make_anon_metrics_tableDownSql, map[string]*bintree{}}, - "1619446565_postgres_make_anon_metrics_table.up.sql": &bintree{_1619446565_postgres_make_anon_metrics_tableUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1619446565_postgres_make_anon_metrics_table.down.sql": {_1619446565_postgres_make_anon_metrics_tableDownSql, map[string]*bintree{}}, + "1619446565_postgres_make_anon_metrics_table.up.sql": {_1619446565_postgres_make_anon_metrics_tableUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -289,7 +291,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/anonmetrics/server.go b/protocol/anonmetrics/server.go index e769c05e7..a2a54d584 100644 --- a/protocol/anonmetrics/server.go +++ b/protocol/anonmetrics/server.go @@ -49,7 +49,7 @@ func (s *Server) Stop() error { return nil } -func (s *Server) StoreMetrics(appMetricsBatch protobuf.AnonymousMetricBatch) (appMetrics []*appmetrics.AppMetric, err error) { +func (s *Server) StoreMetrics(appMetricsBatch *protobuf.AnonymousMetricBatch) (appMetrics []*appmetrics.AppMetric, err error) { if s.Config.Active != ActiveServerPhrase { return nil, nil } diff --git a/protocol/chat_test.go b/protocol/chat_test.go index 8965542e6..87e7f5a22 100644 --- a/protocol/chat_test.go +++ b/protocol/chat_test.go @@ -77,7 +77,7 @@ func (s *ChatTestSuite) TestValidateChat() { func (s *ChatTestSuite) TestUpdateFromMessage() { // Base case, clock is higher - message := &common.Message{} + message := common.NewMessage() chat := &Chat{} message.Clock = 1 @@ -86,7 +86,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() { s.Require().Equal(uint64(1), chat.LastClockValue) // Clock is lower and lastMessage is not nil - message = &common.Message{} + message = common.NewMessage() lastMessage := message chat = &Chat{LastClockValue: 2, LastMessage: lastMessage} @@ -96,7 +96,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() { s.Require().Equal(uint64(2), chat.LastClockValue) // Clock is lower and lastMessage is nil - message = &common.Message{} + message = common.NewMessage() chat = &Chat{LastClockValue: 2} message.Clock = 1 @@ -105,7 +105,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() { s.Require().Equal(uint64(2), chat.LastClockValue) // Clock is higher but lastMessage has lower clock message then the receiving one - message = &common.Message{} + message = common.NewMessage() chat = &Chat{LastClockValue: 2} message.Clock = 1 @@ -114,7 +114,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() { s.Require().Equal(uint64(2), chat.LastClockValue) chat.LastClockValue = 4 - message = &common.Message{} + message = common.NewMessage() message.Clock = 3 s.Require().NoError(chat.UpdateFromMessage(message, &testTimeSource{})) s.Require().Equal(chat.LastMessage, message) @@ -124,7 +124,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() { func (s *ChatTestSuite) TestSerializeJSON() { - message := &common.Message{} + message := common.NewMessage() chat := &Chat{} message.From = "0x04deaafa03e3a646e54a36ec3f6968c1d3686847d88420f00c0ab6ee517ee1893398fca28aacd2af74f2654738c21d10bad3d88dc64201ebe0de5cf1e313970d3d" diff --git a/protocol/common/message.go b/protocol/common/message.go index 6cfd09805..69e1ef35c 100644 --- a/protocol/common/message.go +++ b/protocol/common/message.go @@ -149,7 +149,7 @@ func (m Messages) GetClock(i int) uint64 { // Message represents a message record in the database, // more specifically in user_messages table. type Message struct { - protobuf.ChatMessage + *protobuf.ChatMessage // ID calculated as keccak256(compressedAuthorPubKey, data) where data is unencrypted payload. ID string `json:"id"` @@ -248,6 +248,10 @@ func (m *Message) MarshalJSON() ([]byte, error) { URL string `json:"url"` } + if m.ChatMessage == nil { + m.ChatMessage = &protobuf.ChatMessage{} + } + type MessageStructType struct { ID string `json:"id"` WhisperTimestamp uint64 `json:"whisperTimestamp"` @@ -672,14 +676,14 @@ func getAudioMessageMIME(i *protobuf.AudioMessage) (string, error) { // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (m Message) GetSigPubKey() *ecdsa.PublicKey { +func (m *Message) GetSigPubKey() *ecdsa.PublicKey { return m.SigPubKey } // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface func (m *Message) GetProtobuf() proto.Message { - return &m.ChatMessage + return m.ChatMessage } // SetMessageType a setter for the MessageType field @@ -862,3 +866,9 @@ func (m *Message) SetAlbumIDAndImagesCount(albumID string, imagesCount uint32) e return nil } + +func NewMessage() *Message { + return &Message{ + ChatMessage: &protobuf.ChatMessage{}, + } +} diff --git a/protocol/common/message_sender.go b/protocol/common/message_sender.go index f018a5cad..90aadb82b 100644 --- a/protocol/common/message_sender.go +++ b/protocol/common/message_sender.go @@ -714,11 +714,6 @@ func (s *MessageSender) HandleMessages(shhMessage *types.Message) ([]*v1protocol if err != nil { hlogger.Error("failed to handle application metadata layer message", zap.Error(err)) } - - err = statusMessage.HandleApplication() - if err != nil { - hlogger.Error("failed to handle application layer message", zap.Error(err)) - } } return statusMessages, acks, nil diff --git a/protocol/common/message_sender_test.go b/protocol/common/message_sender_test.go index 9e78c31cb..f51d1786b 100644 --- a/protocol/common/message_sender_test.go +++ b/protocol/common/message_sender_test.go @@ -120,9 +120,7 @@ func (s *MessageSenderSuite) TestHandleDecodedMessagesWrapped() { s.Require().Equal(1, len(decodedMessages)) s.Require().Equal(&authorKey.PublicKey, decodedMessages[0].SigPubKey()) s.Require().Equal(v1protocol.MessageID(&authorKey.PublicKey, wrappedPayload), decodedMessages[0].ID) - parsedMessage := decodedMessages[0].ParsedMessage.Interface().(protobuf.ChatMessage) s.Require().Equal(encodedPayload, decodedMessages[0].UnwrappedPayload) - s.Require().True(proto.Equal(&s.testMessage, &parsedMessage)) s.Require().Equal(protobuf.ApplicationMetadataMessage_CHAT_MESSAGE, decodedMessages[0].Type) } @@ -158,8 +156,6 @@ func (s *MessageSenderSuite) TestHandleDecodedMessagesDatasync() { s.Require().Equal(&authorKey.PublicKey, decodedMessages[0].SigPubKey()) s.Require().Equal(v1protocol.MessageID(&authorKey.PublicKey, wrappedPayload), decodedMessages[0].ID) s.Require().Equal(encodedPayload, decodedMessages[0].UnwrappedPayload) - parsedMessage := decodedMessages[0].ParsedMessage.Interface().(protobuf.ChatMessage) - s.Require().True(proto.Equal(&s.testMessage, &parsedMessage)) s.Require().Equal(protobuf.ApplicationMetadataMessage_CHAT_MESSAGE, decodedMessages[0].Type) } @@ -223,7 +219,5 @@ func (s *MessageSenderSuite) TestHandleDecodedMessagesDatasyncEncrypted() { s.Require().Equal(&authorKey.PublicKey, decodedMessages[0].SigPubKey()) s.Require().Equal(v1protocol.MessageID(&authorKey.PublicKey, wrappedPayload), decodedMessages[0].ID) s.Require().Equal(encodedPayload, decodedMessages[0].UnwrappedPayload) - parsedMessage := decodedMessages[0].ParsedMessage.Interface().(protobuf.ChatMessage) - s.Require().True(proto.Equal(&s.testMessage, &parsedMessage)) s.Require().Equal(protobuf.ApplicationMetadataMessage_CHAT_MESSAGE, decodedMessages[0].Type) } diff --git a/protocol/common/message_test.go b/protocol/common/message_test.go index ef444bb16..15174ec5c 100644 --- a/protocol/common/message_test.go +++ b/protocol/common/message_test.go @@ -25,7 +25,7 @@ func TestPrepareContentImage(t *testing.T) { payload, err := ioutil.ReadAll(file) require.NoError(t, err) - message := &Message{} + message := NewMessage() message.ContentType = protobuf.ChatMessage_IMAGE image := protobuf.ImageMessage{ Payload: payload, @@ -45,7 +45,7 @@ func TestPrepareContentAudio(t *testing.T) { payload, err := ioutil.ReadAll(file) require.NoError(t, err) - message := &Message{} + message := NewMessage() message.ContentType = protobuf.ChatMessage_AUDIO audio := protobuf.AudioMessage{ Payload: payload, @@ -70,7 +70,7 @@ func TestGetAudioMessageMIME(t *testing.T) { } func TestPrepareContentMentions(t *testing.T) { - message := &Message{} + message := NewMessage() pk1, err := crypto.GenerateKey() require.NoError(t, err) pk1String := types.EncodeHex(crypto.FromECDSAPub(&pk1.PublicKey)) @@ -89,7 +89,7 @@ func TestPrepareContentMentions(t *testing.T) { } func TestPrepareContentLinks(t *testing.T) { - message := &Message{} + message := NewMessage() link1 := "https://github.com/status-im/status-mobile" link2 := "https://www.youtube.com/watch?v=6RYO8KCY6YE" @@ -106,7 +106,7 @@ func TestPrepareSimplifiedText(t *testing.T) { canonicalName1 := "canonical-name-1" canonicalName2 := "canonical-name-2" - message := &Message{} + message := NewMessage() pk1, err := crypto.GenerateKey() require.NoError(t, err) pk1String := types.EncodeHex(crypto.FromECDSAPub(&pk1.PublicKey)) @@ -204,7 +204,7 @@ func TestConvertFromProtoToLinkPreviews(t *testing.T) { } msg := Message{ ID: "42", - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ UnfurledLinks: []*protobuf.UnfurledLink{l}, }, } diff --git a/protocol/common/pin_message.go b/protocol/common/pin_message.go index a037d6faa..6a895771d 100644 --- a/protocol/common/pin_message.go +++ b/protocol/common/pin_message.go @@ -15,7 +15,7 @@ func (m PinnedMessages) GetClock(i int) uint64 { } type PinMessage struct { - protobuf.PinMessage + *protobuf.PinMessage // ID calculated as keccak256(compressedAuthorPubKey, data) where data is unencrypted payload. ID string `json:"id"` @@ -35,6 +35,10 @@ type PinMessage struct { Message *PinnedMessage `json:"pinnedMessage"` } +func NewPinMessage() *PinMessage { + return &PinMessage{PinMessage: &protobuf.PinMessage{}} +} + type PinnedMessage struct { Message *Message `json:"message"` PinnedAt uint64 `json:"pinnedAt"` @@ -59,11 +63,11 @@ func (m *PinMessage) GetGrant() []byte { // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface func (m *PinMessage) GetProtobuf() proto.Message { - return &m.PinMessage + return m.PinMessage } // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (m PinMessage) GetSigPubKey() *ecdsa.PublicKey { +func (m *PinMessage) GetSigPubKey() *ecdsa.PublicKey { return m.SigPubKey } diff --git a/protocol/communities/adaptors.go b/protocol/communities/adaptors.go index 277caf915..bd1cb826e 100644 --- a/protocol/communities/adaptors.go +++ b/protocol/communities/adaptors.go @@ -4,7 +4,7 @@ import ( "github.com/status-im/status-go/protocol/protobuf" ) -func (o *Community) ToSyncCommunityProtobuf(clock uint64, communitySettings *CommunitySettings) (*protobuf.SyncCommunity, error) { +func (o *Community) ToSyncInstallationCommunityProtobuf(clock uint64, communitySettings *CommunitySettings) (*protobuf.SyncInstallationCommunity, error) { wrappedCommunity, err := o.ToProtocolMessageBytes() if err != nil { return nil, err @@ -26,7 +26,7 @@ func (o *Community) ToSyncCommunityProtobuf(clock uint64, communitySettings *Com settings.HistoryArchiveSupportEnabled = communitySettings.HistoryArchiveSupportEnabled } - return &protobuf.SyncCommunity{ + return &protobuf.SyncInstallationCommunity{ Clock: clock, Id: o.ID(), Description: wrappedCommunity, diff --git a/protocol/communities/community.go b/protocol/communities/community.go index e6ca2b608..1358765bc 100644 --- a/protocol/communities/community.go +++ b/protocol/communities/community.go @@ -1013,7 +1013,7 @@ func (o *Community) ValidateRequestToJoin(signer *ecdsa.PublicKey, request *prot } // ValidateRequestToJoin validates a request, checks that the right permissions are applied -func (o *Community) ValidateEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditRevealedAccounts) error { +func (o *Community) ValidateEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditSharedAddresses) error { o.mutex.Lock() defer o.mutex.Unlock() diff --git a/protocol/communities/community_event_message.go b/protocol/communities/community_event_message.go index 53891c31d..423264de2 100644 --- a/protocol/communities/community_event_message.go +++ b/protocol/communities/community_event_message.go @@ -101,7 +101,7 @@ type CommunityEventsMessage struct { Events []CommunityEvent `json:"events,omitempty"` } -func (m *CommunityEventsMessage) ToProtobuf() protobuf.CommunityEventsMessage { +func (m *CommunityEventsMessage) ToProtobuf() *protobuf.CommunityEventsMessage { result := protobuf.CommunityEventsMessage{ CommunityId: m.CommunityID, EventsBaseCommunityDescription: m.EventsBaseCommunityDescription, @@ -116,7 +116,7 @@ func (m *CommunityEventsMessage) ToProtobuf() protobuf.CommunityEventsMessage { result.SignedEvents = append(result.SignedEvents, signedEvent) } - return result + return &result } func CommunityEventsMessageFromProtobuf(msg *protobuf.CommunityEventsMessage) (*CommunityEventsMessage, error) { @@ -139,7 +139,7 @@ func CommunityEventsMessageFromProtobuf(msg *protobuf.CommunityEventsMessage) (* func (m *CommunityEventsMessage) Marshal() ([]byte, error) { pb := m.ToProtobuf() - return proto.Marshal(&pb) + return proto.Marshal(pb) } func (c *Community) mergeCommunityEvents(communityEventMessage *CommunityEventsMessage) { diff --git a/protocol/communities/manager.go b/protocol/communities/manager.go index 9ea524819..3679693c3 100644 --- a/protocol/communities/manager.go +++ b/protocol/communities/manager.go @@ -2221,7 +2221,7 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request return requestToJoin, nil } -func (m *Manager) HandleCommunityEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditRevealedAccounts) error { +func (m *Manager) HandleCommunityEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditSharedAddresses) error { community, err := m.persistence.GetByID(&m.identity.PublicKey, request.CommunityId) if err != nil { return err @@ -3271,7 +3271,7 @@ func (m *Manager) IsChannelEncrypted(communityID string, chatID string) (bool, e return community.ChannelHasTokenPermissions(chatID), nil } -func (m *Manager) ShouldHandleSyncCommunity(community *protobuf.SyncCommunity) (bool, error) { +func (m *Manager) ShouldHandleSyncCommunity(community *protobuf.SyncInstallationCommunity) (bool, error) { return m.persistence.ShouldHandleSyncCommunity(community) } diff --git a/protocol/communities/persistence.go b/protocol/communities/persistence.go index eeb02a320..d83379899 100644 --- a/protocol/communities/persistence.go +++ b/protocol/communities/persistence.go @@ -98,7 +98,7 @@ func (p *Persistence) ShouldHandleSyncCommunitySettings(settings *protobuf.SyncC } } -func (p *Persistence) ShouldHandleSyncCommunity(community *protobuf.SyncCommunity) (bool, error) { +func (p *Persistence) ShouldHandleSyncCommunity(community *protobuf.SyncInstallationCommunity) (bool, error) { // TODO see if there is a way to make this more elegant // Keep the "*". // When the test for this function fails because the table has changed we should update sync functionality diff --git a/protocol/communities/persistence_test.go b/protocol/communities/persistence_test.go index 7d69a7361..82f77512f 100644 --- a/protocol/communities/persistence_test.go +++ b/protocol/communities/persistence_test.go @@ -77,7 +77,7 @@ func (s *PersistenceSuite) TestSaveCommunity() { } func (s *PersistenceSuite) TestShouldHandleSyncCommunity() { - sc := &protobuf.SyncCommunity{ + sc := &protobuf.SyncInstallationCommunity{ Id: []byte("0x123456"), Description: []byte("this is a description"), Joined: true, @@ -113,7 +113,7 @@ func (s *PersistenceSuite) TestShouldHandleSyncCommunity() { } func (s *PersistenceSuite) TestSetSyncClock() { - sc := &protobuf.SyncCommunity{ + sc := &protobuf.SyncInstallationCommunity{ Id: []byte("0x123456"), Description: []byte("this is a description"), Joined: true, @@ -161,7 +161,7 @@ func (s *PersistenceSuite) TestSetSyncClock() { } func (s *PersistenceSuite) TestSetPrivateKey() { - sc := &protobuf.SyncCommunity{ + sc := &protobuf.SyncInstallationCommunity{ Id: []byte("0x123456"), Description: []byte("this is a description"), Joined: true, @@ -198,8 +198,8 @@ func (s *PersistenceSuite) TestJoinedAndPendingCommunitiesWithRequests() { // Add a new community that we have joined com := s.makeNewCommunity(identity) com.Join() - sc, err := com.ToSyncCommunityProtobuf(clock, nil) - s.NoError(err, "Community.ToSyncCommunityProtobuf shouldn't give any error") + sc, err := com.ToSyncInstallationCommunityProtobuf(clock, nil) + s.NoError(err, "Community.ToSyncInstallationCommunityProtobuf shouldn't give any error") err = s.db.saveRawCommunityRow(fromSyncCommunityProtobuf(sc)) s.NoError(err, "saveRawCommunityRow") @@ -270,7 +270,7 @@ func (s *PersistenceSuite) makeNewCommunity(identity *ecdsa.PrivateKey) *Communi } func (s *PersistenceSuite) TestGetSyncedRawCommunity() { - sc := &protobuf.SyncCommunity{ + sc := &protobuf.SyncInstallationCommunity{ Id: []byte("0x123456"), Description: []byte("this is a description"), Joined: true, diff --git a/protocol/communities/persistence_test_helpers.go b/protocol/communities/persistence_test_helpers.go index 05ca27494..eddd8787e 100644 --- a/protocol/communities/persistence_test_helpers.go +++ b/protocol/communities/persistence_test_helpers.go @@ -17,7 +17,7 @@ type RawCommunityRow struct { Muted bool } -func fromSyncCommunityProtobuf(syncCommProto *protobuf.SyncCommunity) RawCommunityRow { +func fromSyncCommunityProtobuf(syncCommProto *protobuf.SyncInstallationCommunity) RawCommunityRow { return RawCommunityRow{ ID: syncCommProto.Id, Description: syncCommProto.Description, diff --git a/protocol/communities_events_utils_test.go b/protocol/communities_events_utils_test.go index ac8d490de..8d3f6950f 100644 --- a/protocol/communities_events_utils_test.go +++ b/protocol/communities_events_utils_test.go @@ -1460,12 +1460,12 @@ func testBanUnbanMember(base CommunityEventsTestsInterface, community *communiti func testDeleteAnyMessageInTheCommunity(base CommunityEventsTestsInterface, community *communities.Community) { chatID := community.ChatIDs()[0] - inputMessage := common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chatID inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN inputMessage.Text = "control node text" - messageID := controlNodeSendMessage(base, &inputMessage) + messageID := controlNodeSendMessage(base, inputMessage) deleteControlNodeMessage(base, messageID) } @@ -1475,19 +1475,19 @@ func testEventSenderPinMessage(base CommunityEventsTestsInterface, community *co s.Require().False(community.AllowsAllMembersToPinMessage()) chatID := community.ChatIDs()[0] - inputMessage := common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chatID inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN inputMessage.Text = "control node text" - messageID := controlNodeSendMessage(base, &inputMessage) + messageID := controlNodeSendMessage(base, inputMessage) - pinnedMessage := common.PinMessage{} + pinnedMessage := common.NewPinMessage() pinnedMessage.MessageId = messageID pinnedMessage.ChatId = chatID pinnedMessage.Pinned = true - pinControlNodeMessage(base, &pinnedMessage) + pinControlNodeMessage(base, pinnedMessage) } func testMemberReceiveEventsWhenControlNodeOffline(base CommunityEventsTestsInterface, community *communities.Community) { diff --git a/protocol/communities_messenger_helpers_test.go b/protocol/communities_messenger_helpers_test.go index 44bfb2c6e..2693bc13a 100644 --- a/protocol/communities_messenger_helpers_test.go +++ b/protocol/communities_messenger_helpers_test.go @@ -251,7 +251,7 @@ func createCommunity(s *suite.Suite, owner *Messenger) (*communities.Community, func advertiseCommunityTo(s *suite.Suite, community *communities.Community, owner *Messenger, user *Messenger) { chat := CreateOneToOneChat(common.PubkeyToHex(&user.identity.PublicKey), &user.identity.PublicKey, user.transport) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -380,7 +380,7 @@ func joinOnRequestCommunity(s *suite.Suite, community *communities.Community, co func sendChatMessage(s *suite.Suite, sender *Messenger, chatID string, text string) *common.Message { msg := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, ContentType: protobuf.ChatMessage_TEXT_PLAIN, Text: text, diff --git a/protocol/communities_messenger_test.go b/protocol/communities_messenger_test.go index bb9e91cae..f93103c5a 100644 --- a/protocol/communities_messenger_test.go +++ b/protocol/communities_messenger_test.go @@ -149,7 +149,7 @@ func (s *MessengerCommunitiesSuite) TestRetrieveCommunity() { // Send a community message chat := CreateOneToOneChat(common.PubkeyToHex(&alice.identity.PublicKey), &alice.identity.PublicKey, s.alice.transport) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -256,7 +256,7 @@ func (s *MessengerCommunitiesSuite) TestJoinCommunity() { // Send a community message chat := CreateOneToOneChat(common.PubkeyToHex(&s.alice.identity.PublicKey), &s.alice.identity.PublicKey, s.bob.transport) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -445,7 +445,7 @@ func (s *MessengerCommunitiesSuite) TestPostToCommunityChat() { ctx := context.Background() chatID := chat.ID - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chatID inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN inputMessage.Text = "some text" @@ -1695,16 +1695,10 @@ func (s *MessengerCommunitiesSuite) TestRequestAccessAgain() { s.Require().Equal(notification.MembershipStatus, ActivityCenterMembershipStatusPending) // Retrieve request to join - err = tt.RetryWithBackOff(func() error { - response, err = s.bob.RetrieveAll() - if err != nil { - return err - } - if len(response.RequestsToJoinCommunity) == 0 { - return errors.New("request to join community not received") - } - return nil - }) + response, err = WaitOnMessengerResponse(s.bob, + func(r *MessengerResponse) bool { return len(r.RequestsToJoinCommunity) == 1 }, + "request to join community was never 1", + ) s.Require().NoError(err) s.Require().Len(response.RequestsToJoinCommunity, 1) @@ -3039,8 +3033,11 @@ func (s *MessengerCommunitiesSuite) TestCommunityBanUserRequestToJoin() { s.Require().NoError(err) messageState := s.admin.buildMessageState() + messageState.CurrentMessageState = &CurrentMessageState{} - err = s.admin.HandleCommunityRequestToJoin(messageState, &s.alice.identity.PublicKey, *requestToJoinProto) + messageState.CurrentMessageState.PublicKey = &s.alice.identity.PublicKey + + err = s.admin.HandleCommunityRequestToJoin(messageState, requestToJoinProto, nil) s.Require().ErrorContains(err, "can't request access") } diff --git a/protocol/delete_message.go b/protocol/delete_message.go index 85ec7f176..dc203d410 100644 --- a/protocol/delete_message.go +++ b/protocol/delete_message.go @@ -11,7 +11,7 @@ import ( // DeleteMessage represents a delete of a message from a user in the application layer, used for persistence, querying and // signaling type DeleteMessage struct { - protobuf.DeleteMessage + *protobuf.DeleteMessage // ID is the ID of the message that has been edited ID string `json:"id,omitempty"` @@ -23,16 +23,20 @@ type DeleteMessage struct { SigPubKey *ecdsa.PublicKey `json:"-"` } +func NewDeleteMessage() *DeleteMessage { + return &DeleteMessage{DeleteMessage: &protobuf.DeleteMessage{}} +} + // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (e DeleteMessage) GetSigPubKey() *ecdsa.PublicKey { +func (e *DeleteMessage) GetSigPubKey() *ecdsa.PublicKey { return e.SigPubKey } // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface -func (e DeleteMessage) GetProtobuf() proto.Message { - return &e.DeleteMessage +func (e *DeleteMessage) GetProtobuf() proto.Message { + return e.DeleteMessage } // SetMessageType a setter for the MessageType field @@ -42,6 +46,6 @@ func (e *DeleteMessage) SetMessageType(messageType protobuf.MessageType) { } // WrapGroupMessage indicates whether we should wrap this in membership information -func (e DeleteMessage) WrapGroupMessage() bool { +func (e *DeleteMessage) WrapGroupMessage() bool { return false } diff --git a/protocol/edit_message.go b/protocol/edit_message.go index 737fb7a74..73b391824 100644 --- a/protocol/edit_message.go +++ b/protocol/edit_message.go @@ -11,7 +11,7 @@ import ( // EditMessage represents an edit of a message from a user in the application layer, used for persistence, querying and // signaling type EditMessage struct { - protobuf.EditMessage + *protobuf.EditMessage // ID is the ID of the message that has been edited ID string `json:"id,omitempty"` @@ -26,16 +26,20 @@ type EditMessage struct { LocalChatID string `json:"localChatId"` } +func NewEditMessage() *EditMessage { + return &EditMessage{EditMessage: &protobuf.EditMessage{}} +} + // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (e EditMessage) GetSigPubKey() *ecdsa.PublicKey { +func (e *EditMessage) GetSigPubKey() *ecdsa.PublicKey { return e.SigPubKey } // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface -func (e EditMessage) GetProtobuf() proto.Message { - return &e.EditMessage +func (e *EditMessage) GetProtobuf() proto.Message { + return e.EditMessage } // SetMessageType a setter for the MessageType field @@ -45,6 +49,6 @@ func (e *EditMessage) SetMessageType(messageType protobuf.MessageType) { } // WrapGroupMessage indicates whether we should wrap this in membership information -func (e EditMessage) WrapGroupMessage() bool { +func (e *EditMessage) WrapGroupMessage() bool { return false } diff --git a/protocol/emoji_reaction.go b/protocol/emoji_reaction.go index 3eb73c4d7..df265c011 100644 --- a/protocol/emoji_reaction.go +++ b/protocol/emoji_reaction.go @@ -16,7 +16,7 @@ import ( // EmojiReaction represents an emoji reaction from a user in the application layer, used for persistence, querying and // signaling type EmojiReaction struct { - protobuf.EmojiReaction + *protobuf.EmojiReaction // From is a public key of the author of the emoji reaction. From string `json:"from,omitempty"` @@ -28,21 +28,25 @@ type EmojiReaction struct { LocalChatID string `json:"localChatId"` } +func NewEmojiReaction() *EmojiReaction { + return &EmojiReaction{EmojiReaction: &protobuf.EmojiReaction{}} +} + // ID is the Keccak256() contatenation of From-MessageID-EmojiType -func (e EmojiReaction) ID() string { +func (e *EmojiReaction) ID() string { return types.EncodeHex(crypto.Keccak256([]byte(fmt.Sprintf("%s%s%d", e.From, e.MessageId, e.Type)))) } // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (e EmojiReaction) GetSigPubKey() *ecdsa.PublicKey { +func (e *EmojiReaction) GetSigPubKey() *ecdsa.PublicKey { return e.SigPubKey } // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface -func (e EmojiReaction) GetProtobuf() proto.Message { - return &e.EmojiReaction +func (e *EmojiReaction) GetProtobuf() proto.Message { + return e.EmojiReaction } // SetMessageType a setter for the MessageType field @@ -51,7 +55,7 @@ func (e *EmojiReaction) SetMessageType(messageType protobuf.MessageType) { e.MessageType = messageType } -func (e EmojiReaction) MarshalJSON() ([]byte, error) { +func (e *EmojiReaction) MarshalJSON() ([]byte, error) { item := struct { ID string `json:"id"` Clock uint64 `json:"clock,omitempty"` @@ -84,6 +88,6 @@ func (e EmojiReaction) MarshalJSON() ([]byte, error) { } // WrapGroupMessage indicates whether we should wrap this in membership information -func (e EmojiReaction) WrapGroupMessage() bool { +func (e *EmojiReaction) WrapGroupMessage() bool { return false } diff --git a/protocol/encryption/migrations/migrations.go b/protocol/encryption/migrations/migrations.go index 5e12e9646..103ed43db 100644 --- a/protocol/encryption/migrations/migrations.go +++ b/protocol/encryption/migrations/migrations.go @@ -29,7 +29,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -39,7 +38,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -47,7 +46,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -103,7 +102,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x44, 0xcf, 0x76, 0x71, 0x1f, 0x5e, 0x9a, 0x43, 0xd8, 0xcd, 0xb8, 0xc3, 0x70, 0xc3, 0x7f, 0xfc, 0x90, 0xb4, 0x25, 0x1e, 0xf4, 0x66, 0x20, 0xb8, 0x33, 0x7e, 0xb0, 0x76, 0x1f, 0xc, 0xc0, 0x75}} return a, nil } @@ -123,7 +122,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x90, 0x5a, 0x59, 0x3e, 0x3, 0xe2, 0x3c, 0x81, 0x42, 0xcd, 0x4c, 0x9a, 0xe8, 0xda, 0x93, 0x2b, 0x70, 0xa4, 0xd5, 0x29, 0x3e, 0xd5, 0xc9, 0x27, 0xb6, 0xb7, 0x65, 0xff, 0x0, 0xcb, 0xde}} return a, nil } @@ -143,7 +142,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xa4, 0xeb, 0xa0, 0xe6, 0xa0, 0xd4, 0x48, 0xbb, 0xad, 0x6f, 0x7d, 0x67, 0x8c, 0xbd, 0x25, 0xde, 0x1f, 0x73, 0x9a, 0xbb, 0xa8, 0xc9, 0x30, 0xb7, 0xa9, 0x7c, 0xaf, 0xb5, 0x1, 0x61, 0xdd}} return a, nil } @@ -163,7 +162,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x8e, 0xbf, 0x6f, 0xa, 0xc0, 0xe1, 0x3c, 0x42, 0x28, 0x88, 0x1d, 0xdb, 0xba, 0x1c, 0x83, 0xec, 0xba, 0xd3, 0x5f, 0x5c, 0x77, 0x5e, 0xa7, 0x46, 0x36, 0xec, 0x69, 0xa, 0x4b, 0x17, 0x79}} return a, nil } @@ -183,7 +182,7 @@ func _1540715431_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9, 0x4, 0xe3, 0x76, 0x2e, 0xb8, 0x9, 0x23, 0xf0, 0x70, 0x93, 0xc4, 0x50, 0xe, 0x9d, 0x84, 0x22, 0x8c, 0x94, 0xd3, 0x24, 0x9, 0x9a, 0xc1, 0xa1, 0x48, 0x45, 0xfd, 0x40, 0x6e, 0xe6}} return a, nil } @@ -203,7 +202,7 @@ func _1540715431_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc7, 0x4c, 0x36, 0x96, 0xdf, 0x16, 0x10, 0xa6, 0x27, 0x1a, 0x79, 0x8b, 0x42, 0x83, 0x23, 0xc, 0x7e, 0xb6, 0x3d, 0x2, 0xda, 0xa4, 0xb4, 0xd, 0x27, 0x55, 0xba, 0xdc, 0xb2, 0x88, 0x8f, 0xa6}} return a, nil } @@ -223,7 +222,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xfd, 0xe6, 0xd8, 0xca, 0x3b, 0x38, 0x18, 0xee, 0x0, 0x5f, 0x36, 0x9e, 0x1e, 0xd, 0x19, 0x3e, 0xb4, 0x73, 0x53, 0xe9, 0xa5, 0xac, 0xdd, 0xa1, 0x2f, 0xc7, 0x6c, 0xa8, 0xd9, 0xa, 0x88}} return a, nil } @@ -243,7 +242,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x18, 0x26, 0xb8, 0x88, 0x47, 0xdb, 0x83, 0xcc, 0xb6, 0x9d, 0x1c, 0x1, 0xae, 0x2f, 0xde, 0x97, 0x82, 0x3, 0x30, 0xa8, 0x63, 0xa1, 0x78, 0x4b, 0xa5, 0x9, 0x8, 0x75, 0xa2, 0x57, 0x81}} return a, nil } @@ -263,7 +262,7 @@ func _1558084410_add_secretDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xb, 0x65, 0xdf, 0x59, 0xbf, 0xe9, 0x5, 0x5b, 0x6f, 0xd5, 0x3a, 0xb7, 0x57, 0xe8, 0x78, 0x38, 0x73, 0x53, 0x57, 0xf7, 0x24, 0x4, 0xe4, 0xa2, 0x49, 0x22, 0xa2, 0xc6, 0xfd, 0x80, 0xa4}} return a, nil } @@ -283,7 +282,7 @@ func _1558084410_add_secretUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x32, 0x36, 0x8e, 0x47, 0xb0, 0x8f, 0xc1, 0xc6, 0xf7, 0xc6, 0x9f, 0x2d, 0x44, 0x75, 0x2b, 0x26, 0xec, 0x6, 0xa0, 0x7b, 0xa5, 0xbd, 0xc8, 0x76, 0x8a, 0x82, 0x68, 0x2, 0x42, 0xb5, 0xf4}} return a, nil } @@ -303,7 +302,7 @@ func _1558588866_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x52, 0x34, 0x3c, 0x46, 0x4a, 0xf0, 0x72, 0x47, 0x6f, 0x49, 0x5c, 0xc7, 0xf9, 0x32, 0xce, 0xc4, 0x3d, 0xfd, 0x61, 0xa1, 0x8b, 0x8f, 0xf2, 0x31, 0x34, 0xde, 0x15, 0x49, 0xa6, 0xde, 0xb9}} return a, nil } @@ -323,7 +322,7 @@ func _1558588866_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0xea, 0x64, 0x39, 0x61, 0x20, 0x83, 0x83, 0xb, 0x2e, 0x79, 0x64, 0xb, 0x53, 0xfa, 0xfe, 0xc6, 0xf7, 0x67, 0x42, 0xd3, 0x4f, 0xdc, 0x7e, 0x30, 0x32, 0xe8, 0x14, 0x41, 0xe9, 0xe7, 0x3b}} return a, nil } @@ -343,7 +342,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x64, 0x6d, 0xce, 0x24, 0x42, 0x20, 0x8d, 0x4f, 0x37, 0xaa, 0x9d, 0xc, 0x57, 0x98, 0xc1, 0xd1, 0x1a, 0x34, 0xcd, 0x9f, 0x8f, 0x34, 0x86, 0xb3, 0xd3, 0xdc, 0xf1, 0x7d, 0xe5, 0x1b, 0x6e}} return a, nil } @@ -363,7 +362,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x16, 0xf6, 0xc2, 0x62, 0x9c, 0xd2, 0xc9, 0x1e, 0xd8, 0xea, 0xaa, 0xea, 0x95, 0x8f, 0x89, 0x6a, 0x85, 0x5d, 0x9d, 0x99, 0x78, 0x3c, 0x90, 0x66, 0x99, 0x3e, 0x4b, 0x19, 0x62, 0xfb, 0x31, 0x4d}} return a, nil } @@ -383,7 +382,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xde, 0x3f, 0xd2, 0x4a, 0x50, 0x98, 0x56, 0xe3, 0xc0, 0xcd, 0x9d, 0xb0, 0x34, 0x3b, 0xe5, 0x62, 0x18, 0xb5, 0x20, 0xc9, 0x3e, 0xdc, 0x6a, 0x40, 0x36, 0x66, 0xea, 0x51, 0x8c, 0x71, 0xf5}} return a, nil } @@ -403,7 +402,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x71, 0x8f, 0x29, 0xb1, 0xaa, 0xd6, 0xd1, 0x8c, 0x17, 0xef, 0x6c, 0xd5, 0x80, 0xb8, 0x2c, 0xc3, 0xfe, 0xec, 0x24, 0x4d, 0xc8, 0x25, 0xd3, 0xb4, 0xcd, 0xa9, 0xac, 0x63, 0x61, 0xb2, 0x9c}} return a, nil } @@ -423,7 +422,7 @@ func _1632236298_add_communitiesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0xe5, 0x47, 0xd1, 0xe5, 0xec, 0x5b, 0x3e, 0xdc, 0x22, 0xf4, 0x27, 0xee, 0x70, 0xf3, 0x9, 0x4f, 0xd2, 0x9f, 0x92, 0xf, 0x5a, 0x18, 0x11, 0xb7, 0x40, 0xab, 0xf1, 0x98, 0x72, 0xd6, 0x60}} return a, nil } @@ -443,7 +442,7 @@ func _1632236298_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xe0, 0x1, 0x6e, 0x84, 0xc, 0x35, 0xe4, 0x5a, 0xf, 0xbe, 0xcb, 0xf7, 0xd2, 0xa8, 0x25, 0xf5, 0xdb, 0x7, 0xcb, 0xa3, 0xe6, 0xf4, 0xc4, 0x1b, 0xa5, 0xec, 0x32, 0x1e, 0x1e, 0x48, 0x60}} return a, nil } @@ -463,7 +462,7 @@ func _1636536507_add_index_bundlesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0xb9, 0x3c, 0x16, 0xfc, 0xfb, 0xb2, 0xb4, 0x3b, 0xfe, 0xdc, 0xf5, 0x9c, 0x42, 0xa0, 0xa0, 0xd4, 0xd, 0x5b, 0x97, 0x10, 0x80, 0x95, 0xe, 0x13, 0xc1, 0x18, 0x8, 0xee, 0xf, 0x99, 0xee}} return a, nil } @@ -483,7 +482,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}} return a, nil } @@ -579,56 +578,42 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "1536754952_initial_schema.down.sql": _1536754952_initial_schemaDownSql, - - "1536754952_initial_schema.up.sql": _1536754952_initial_schemaUpSql, - - "1539249977_update_ratchet_info.down.sql": _1539249977_update_ratchet_infoDownSql, - - "1539249977_update_ratchet_info.up.sql": _1539249977_update_ratchet_infoUpSql, - - "1540715431_add_version.down.sql": _1540715431_add_versionDownSql, - - "1540715431_add_version.up.sql": _1540715431_add_versionUpSql, - - "1541164797_add_installations.down.sql": _1541164797_add_installationsDownSql, - - "1541164797_add_installations.up.sql": _1541164797_add_installationsUpSql, - - "1558084410_add_secret.down.sql": _1558084410_add_secretDownSql, - - "1558084410_add_secret.up.sql": _1558084410_add_secretUpSql, - - "1558588866_add_version.down.sql": _1558588866_add_versionDownSql, - - "1558588866_add_version.up.sql": _1558588866_add_versionUpSql, - - "1559627659_add_contact_code.down.sql": _1559627659_add_contact_codeDownSql, - - "1559627659_add_contact_code.up.sql": _1559627659_add_contact_codeUpSql, - + "1536754952_initial_schema.down.sql": _1536754952_initial_schemaDownSql, + "1536754952_initial_schema.up.sql": _1536754952_initial_schemaUpSql, + "1539249977_update_ratchet_info.down.sql": _1539249977_update_ratchet_infoDownSql, + "1539249977_update_ratchet_info.up.sql": _1539249977_update_ratchet_infoUpSql, + "1540715431_add_version.down.sql": _1540715431_add_versionDownSql, + "1540715431_add_version.up.sql": _1540715431_add_versionUpSql, + "1541164797_add_installations.down.sql": _1541164797_add_installationsDownSql, + "1541164797_add_installations.up.sql": _1541164797_add_installationsUpSql, + "1558084410_add_secret.down.sql": _1558084410_add_secretDownSql, + "1558084410_add_secret.up.sql": _1558084410_add_secretUpSql, + "1558588866_add_version.down.sql": _1558588866_add_versionDownSql, + "1558588866_add_version.up.sql": _1558588866_add_versionUpSql, + "1559627659_add_contact_code.down.sql": _1559627659_add_contact_codeDownSql, + "1559627659_add_contact_code.up.sql": _1559627659_add_contact_codeUpSql, "1561368210_add_installation_metadata.down.sql": _1561368210_add_installation_metadataDownSql, - - "1561368210_add_installation_metadata.up.sql": _1561368210_add_installation_metadataUpSql, - - "1632236298_add_communities.down.sql": _1632236298_add_communitiesDownSql, - - "1632236298_add_communities.up.sql": _1632236298_add_communitiesUpSql, - - "1636536507_add_index_bundles.up.sql": _1636536507_add_index_bundlesUpSql, - - "doc.go": docGo, + "1561368210_add_installation_metadata.up.sql": _1561368210_add_installation_metadataUpSql, + "1632236298_add_communities.down.sql": _1632236298_add_communitiesDownSql, + "1632236298_add_communities.up.sql": _1632236298_add_communitiesUpSql, + "1636536507_add_index_bundles.up.sql": _1636536507_add_index_bundlesUpSql, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -661,26 +646,26 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1536754952_initial_schema.down.sql": &bintree{_1536754952_initial_schemaDownSql, map[string]*bintree{}}, - "1536754952_initial_schema.up.sql": &bintree{_1536754952_initial_schemaUpSql, map[string]*bintree{}}, - "1539249977_update_ratchet_info.down.sql": &bintree{_1539249977_update_ratchet_infoDownSql, map[string]*bintree{}}, - "1539249977_update_ratchet_info.up.sql": &bintree{_1539249977_update_ratchet_infoUpSql, map[string]*bintree{}}, - "1540715431_add_version.down.sql": &bintree{_1540715431_add_versionDownSql, map[string]*bintree{}}, - "1540715431_add_version.up.sql": &bintree{_1540715431_add_versionUpSql, map[string]*bintree{}}, - "1541164797_add_installations.down.sql": &bintree{_1541164797_add_installationsDownSql, map[string]*bintree{}}, - "1541164797_add_installations.up.sql": &bintree{_1541164797_add_installationsUpSql, map[string]*bintree{}}, - "1558084410_add_secret.down.sql": &bintree{_1558084410_add_secretDownSql, map[string]*bintree{}}, - "1558084410_add_secret.up.sql": &bintree{_1558084410_add_secretUpSql, map[string]*bintree{}}, - "1558588866_add_version.down.sql": &bintree{_1558588866_add_versionDownSql, map[string]*bintree{}}, - "1558588866_add_version.up.sql": &bintree{_1558588866_add_versionUpSql, map[string]*bintree{}}, - "1559627659_add_contact_code.down.sql": &bintree{_1559627659_add_contact_codeDownSql, map[string]*bintree{}}, - "1559627659_add_contact_code.up.sql": &bintree{_1559627659_add_contact_codeUpSql, map[string]*bintree{}}, - "1561368210_add_installation_metadata.down.sql": &bintree{_1561368210_add_installation_metadataDownSql, map[string]*bintree{}}, - "1561368210_add_installation_metadata.up.sql": &bintree{_1561368210_add_installation_metadataUpSql, map[string]*bintree{}}, - "1632236298_add_communities.down.sql": &bintree{_1632236298_add_communitiesDownSql, map[string]*bintree{}}, - "1632236298_add_communities.up.sql": &bintree{_1632236298_add_communitiesUpSql, map[string]*bintree{}}, - "1636536507_add_index_bundles.up.sql": &bintree{_1636536507_add_index_bundlesUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1536754952_initial_schema.down.sql": {_1536754952_initial_schemaDownSql, map[string]*bintree{}}, + "1536754952_initial_schema.up.sql": {_1536754952_initial_schemaUpSql, map[string]*bintree{}}, + "1539249977_update_ratchet_info.down.sql": {_1539249977_update_ratchet_infoDownSql, map[string]*bintree{}}, + "1539249977_update_ratchet_info.up.sql": {_1539249977_update_ratchet_infoUpSql, map[string]*bintree{}}, + "1540715431_add_version.down.sql": {_1540715431_add_versionDownSql, map[string]*bintree{}}, + "1540715431_add_version.up.sql": {_1540715431_add_versionUpSql, map[string]*bintree{}}, + "1541164797_add_installations.down.sql": {_1541164797_add_installationsDownSql, map[string]*bintree{}}, + "1541164797_add_installations.up.sql": {_1541164797_add_installationsUpSql, map[string]*bintree{}}, + "1558084410_add_secret.down.sql": {_1558084410_add_secretDownSql, map[string]*bintree{}}, + "1558084410_add_secret.up.sql": {_1558084410_add_secretUpSql, map[string]*bintree{}}, + "1558588866_add_version.down.sql": {_1558588866_add_versionDownSql, map[string]*bintree{}}, + "1558588866_add_version.up.sql": {_1558588866_add_versionUpSql, map[string]*bintree{}}, + "1559627659_add_contact_code.down.sql": {_1559627659_add_contact_codeDownSql, map[string]*bintree{}}, + "1559627659_add_contact_code.up.sql": {_1559627659_add_contact_codeUpSql, map[string]*bintree{}}, + "1561368210_add_installation_metadata.down.sql": {_1561368210_add_installation_metadataDownSql, map[string]*bintree{}}, + "1561368210_add_installation_metadata.up.sql": {_1561368210_add_installation_metadataUpSql, map[string]*bintree{}}, + "1632236298_add_communities.down.sql": {_1632236298_add_communitiesDownSql, map[string]*bintree{}}, + "1632236298_add_communities.up.sql": {_1632236298_add_communitiesUpSql, map[string]*bintree{}}, + "1636536507_add_index_bundles.up.sql": {_1636536507_add_index_bundlesUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -697,7 +682,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/encryption/protocol_message.pb.go b/protocol/encryption/protocol_message.pb.go index 69d474fc2..c09ad47d1 100644 --- a/protocol/encryption/protocol_message.pb.go +++ b/protocol/encryption/protocol_message.pb.go @@ -1,82 +1,94 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: protocol_message.proto package encryption import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SignedPreKey struct { - SignedPreKey []byte `protobuf:"bytes,1,opt,name=signed_pre_key,json=signedPreKey,proto3" json:"signed_pre_key,omitempty"` - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - ProtocolVersion uint32 `protobuf:"varint,3,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SignedPreKey []byte `protobuf:"bytes,1,opt,name=signed_pre_key,json=signedPreKey,proto3" json:"signed_pre_key,omitempty"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + ProtocolVersion uint32 `protobuf:"varint,3,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` } -func (m *SignedPreKey) Reset() { *m = SignedPreKey{} } -func (m *SignedPreKey) String() string { return proto.CompactTextString(m) } -func (*SignedPreKey) ProtoMessage() {} +func (x *SignedPreKey) Reset() { + *x = SignedPreKey{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedPreKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedPreKey) ProtoMessage() {} + +func (x *SignedPreKey) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedPreKey.ProtoReflect.Descriptor instead. func (*SignedPreKey) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{0} + return file_protocol_message_proto_rawDescGZIP(), []int{0} } -func (m *SignedPreKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignedPreKey.Unmarshal(m, b) -} -func (m *SignedPreKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignedPreKey.Marshal(b, m, deterministic) -} -func (m *SignedPreKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignedPreKey.Merge(m, src) -} -func (m *SignedPreKey) XXX_Size() int { - return xxx_messageInfo_SignedPreKey.Size(m) -} -func (m *SignedPreKey) XXX_DiscardUnknown() { - xxx_messageInfo_SignedPreKey.DiscardUnknown(m) -} - -var xxx_messageInfo_SignedPreKey proto.InternalMessageInfo - -func (m *SignedPreKey) GetSignedPreKey() []byte { - if m != nil { - return m.SignedPreKey +func (x *SignedPreKey) GetSignedPreKey() []byte { + if x != nil { + return x.SignedPreKey } return nil } -func (m *SignedPreKey) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *SignedPreKey) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *SignedPreKey) GetProtocolVersion() uint32 { - if m != nil { - return m.ProtocolVersion +func (x *SignedPreKey) GetProtocolVersion() uint32 { + if x != nil { + return x.ProtocolVersion } return 0 } // X3DH prekey bundle type Bundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Identity key Identity []byte `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // Installation id @@ -84,115 +96,131 @@ type Bundle struct { // Prekey signature Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` // When the bundle was created locally - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *Bundle) Reset() { *m = Bundle{} } -func (m *Bundle) String() string { return proto.CompactTextString(m) } -func (*Bundle) ProtoMessage() {} +func (x *Bundle) Reset() { + *x = Bundle{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bundle) ProtoMessage() {} + +func (x *Bundle) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bundle.ProtoReflect.Descriptor instead. func (*Bundle) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{1} + return file_protocol_message_proto_rawDescGZIP(), []int{1} } -func (m *Bundle) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Bundle.Unmarshal(m, b) -} -func (m *Bundle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Bundle.Marshal(b, m, deterministic) -} -func (m *Bundle) XXX_Merge(src proto.Message) { - xxx_messageInfo_Bundle.Merge(m, src) -} -func (m *Bundle) XXX_Size() int { - return xxx_messageInfo_Bundle.Size(m) -} -func (m *Bundle) XXX_DiscardUnknown() { - xxx_messageInfo_Bundle.DiscardUnknown(m) -} - -var xxx_messageInfo_Bundle proto.InternalMessageInfo - -func (m *Bundle) GetIdentity() []byte { - if m != nil { - return m.Identity +func (x *Bundle) GetIdentity() []byte { + if x != nil { + return x.Identity } return nil } -func (m *Bundle) GetSignedPreKeys() map[string]*SignedPreKey { - if m != nil { - return m.SignedPreKeys +func (x *Bundle) GetSignedPreKeys() map[string]*SignedPreKey { + if x != nil { + return x.SignedPreKeys } return nil } -func (m *Bundle) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *Bundle) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *Bundle) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *Bundle) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } type BundleContainer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // X3DH prekey bundle Bundle *Bundle `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"` // Private signed prekey - PrivateSignedPreKey []byte `protobuf:"bytes,2,opt,name=private_signed_pre_key,json=privateSignedPreKey,proto3" json:"private_signed_pre_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrivateSignedPreKey []byte `protobuf:"bytes,2,opt,name=private_signed_pre_key,json=privateSignedPreKey,proto3" json:"private_signed_pre_key,omitempty"` } -func (m *BundleContainer) Reset() { *m = BundleContainer{} } -func (m *BundleContainer) String() string { return proto.CompactTextString(m) } -func (*BundleContainer) ProtoMessage() {} +func (x *BundleContainer) Reset() { + *x = BundleContainer{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BundleContainer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BundleContainer) ProtoMessage() {} + +func (x *BundleContainer) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BundleContainer.ProtoReflect.Descriptor instead. func (*BundleContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{2} + return file_protocol_message_proto_rawDescGZIP(), []int{2} } -func (m *BundleContainer) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BundleContainer.Unmarshal(m, b) -} -func (m *BundleContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BundleContainer.Marshal(b, m, deterministic) -} -func (m *BundleContainer) XXX_Merge(src proto.Message) { - xxx_messageInfo_BundleContainer.Merge(m, src) -} -func (m *BundleContainer) XXX_Size() int { - return xxx_messageInfo_BundleContainer.Size(m) -} -func (m *BundleContainer) XXX_DiscardUnknown() { - xxx_messageInfo_BundleContainer.DiscardUnknown(m) -} - -var xxx_messageInfo_BundleContainer proto.InternalMessageInfo - -func (m *BundleContainer) GetBundle() *Bundle { - if m != nil { - return m.Bundle +func (x *BundleContainer) GetBundle() *Bundle { + if x != nil { + return x.Bundle } return nil } -func (m *BundleContainer) GetPrivateSignedPreKey() []byte { - if m != nil { - return m.PrivateSignedPreKey +func (x *BundleContainer) GetPrivateSignedPreKey() []byte { + if x != nil { + return x.PrivateSignedPreKey } return nil } type DRHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Current ratchet public key Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Number of the message in the sending chain @@ -200,374 +228,430 @@ type DRHeader struct { // Length of the previous sending chain Pn uint32 `protobuf:"varint,3,opt,name=pn,proto3" json:"pn,omitempty"` // Bundle ID - Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DRHeader) Reset() { *m = DRHeader{} } -func (m *DRHeader) String() string { return proto.CompactTextString(m) } -func (*DRHeader) ProtoMessage() {} +func (x *DRHeader) Reset() { + *x = DRHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DRHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DRHeader) ProtoMessage() {} + +func (x *DRHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DRHeader.ProtoReflect.Descriptor instead. func (*DRHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{3} + return file_protocol_message_proto_rawDescGZIP(), []int{3} } -func (m *DRHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DRHeader.Unmarshal(m, b) -} -func (m *DRHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DRHeader.Marshal(b, m, deterministic) -} -func (m *DRHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_DRHeader.Merge(m, src) -} -func (m *DRHeader) XXX_Size() int { - return xxx_messageInfo_DRHeader.Size(m) -} -func (m *DRHeader) XXX_DiscardUnknown() { - xxx_messageInfo_DRHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_DRHeader proto.InternalMessageInfo - -func (m *DRHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *DRHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *DRHeader) GetN() uint32 { - if m != nil { - return m.N +func (x *DRHeader) GetN() uint32 { + if x != nil { + return x.N } return 0 } -func (m *DRHeader) GetPn() uint32 { - if m != nil { - return m.Pn +func (x *DRHeader) GetPn() uint32 { + if x != nil { + return x.Pn } return 0 } -func (m *DRHeader) GetId() []byte { - if m != nil { - return m.Id +func (x *DRHeader) GetId() []byte { + if x != nil { + return x.Id } return nil } type DHHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Compressed ephemeral public key - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (m *DHHeader) Reset() { *m = DHHeader{} } -func (m *DHHeader) String() string { return proto.CompactTextString(m) } -func (*DHHeader) ProtoMessage() {} +func (x *DHHeader) Reset() { + *x = DHHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DHHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DHHeader) ProtoMessage() {} + +func (x *DHHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DHHeader.ProtoReflect.Descriptor instead. func (*DHHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{4} + return file_protocol_message_proto_rawDescGZIP(), []int{4} } -func (m *DHHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DHHeader.Unmarshal(m, b) -} -func (m *DHHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DHHeader.Marshal(b, m, deterministic) -} -func (m *DHHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_DHHeader.Merge(m, src) -} -func (m *DHHeader) XXX_Size() int { - return xxx_messageInfo_DHHeader.Size(m) -} -func (m *DHHeader) XXX_DiscardUnknown() { - xxx_messageInfo_DHHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_DHHeader proto.InternalMessageInfo - -func (m *DHHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *DHHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } type X3DHHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Ephemeral key used Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Used bundle's signed prekey - Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` } -func (m *X3DHHeader) Reset() { *m = X3DHHeader{} } -func (m *X3DHHeader) String() string { return proto.CompactTextString(m) } -func (*X3DHHeader) ProtoMessage() {} +func (x *X3DHHeader) Reset() { + *x = X3DHHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *X3DHHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*X3DHHeader) ProtoMessage() {} + +func (x *X3DHHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use X3DHHeader.ProtoReflect.Descriptor instead. func (*X3DHHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{5} + return file_protocol_message_proto_rawDescGZIP(), []int{5} } -func (m *X3DHHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_X3DHHeader.Unmarshal(m, b) -} -func (m *X3DHHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_X3DHHeader.Marshal(b, m, deterministic) -} -func (m *X3DHHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_X3DHHeader.Merge(m, src) -} -func (m *X3DHHeader) XXX_Size() int { - return xxx_messageInfo_X3DHHeader.Size(m) -} -func (m *X3DHHeader) XXX_DiscardUnknown() { - xxx_messageInfo_X3DHHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_X3DHHeader proto.InternalMessageInfo - -func (m *X3DHHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *X3DHHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *X3DHHeader) GetId() []byte { - if m != nil { - return m.Id +func (x *X3DHHeader) GetId() []byte { + if x != nil { + return x.Id } return nil } // Hash Ratchet Header type HRHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // community key ID KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` // Community message number for this key_id SeqNo uint32 `protobuf:"varint,2,opt,name=seq_no,json=seqNo,proto3" json:"seq_no,omitempty"` // Community ID - GroupId []byte `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + GroupId []byte `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` } -func (m *HRHeader) Reset() { *m = HRHeader{} } -func (m *HRHeader) String() string { return proto.CompactTextString(m) } -func (*HRHeader) ProtoMessage() {} +func (x *HRHeader) Reset() { + *x = HRHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRHeader) ProtoMessage() {} + +func (x *HRHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRHeader.ProtoReflect.Descriptor instead. func (*HRHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{6} + return file_protocol_message_proto_rawDescGZIP(), []int{6} } -func (m *HRHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRHeader.Unmarshal(m, b) -} -func (m *HRHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRHeader.Marshal(b, m, deterministic) -} -func (m *HRHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRHeader.Merge(m, src) -} -func (m *HRHeader) XXX_Size() int { - return xxx_messageInfo_HRHeader.Size(m) -} -func (m *HRHeader) XXX_DiscardUnknown() { - xxx_messageInfo_HRHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_HRHeader proto.InternalMessageInfo - -func (m *HRHeader) GetKeyId() uint32 { - if m != nil { - return m.KeyId +func (x *HRHeader) GetKeyId() uint32 { + if x != nil { + return x.KeyId } return 0 } -func (m *HRHeader) GetSeqNo() uint32 { - if m != nil { - return m.SeqNo +func (x *HRHeader) GetSeqNo() uint32 { + if x != nil { + return x.SeqNo } return 0 } -func (m *HRHeader) GetGroupId() []byte { - if m != nil { - return m.GroupId +func (x *HRHeader) GetGroupId() []byte { + if x != nil { + return x.GroupId } return nil } type HRKeys struct { - Keys []*HRKey `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []*HRKey `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` } -func (m *HRKeys) Reset() { *m = HRKeys{} } -func (m *HRKeys) String() string { return proto.CompactTextString(m) } -func (*HRKeys) ProtoMessage() {} +func (x *HRKeys) Reset() { + *x = HRKeys{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRKeys) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRKeys) ProtoMessage() {} + +func (x *HRKeys) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRKeys.ProtoReflect.Descriptor instead. func (*HRKeys) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{7} + return file_protocol_message_proto_rawDescGZIP(), []int{7} } -func (m *HRKeys) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRKeys.Unmarshal(m, b) -} -func (m *HRKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRKeys.Marshal(b, m, deterministic) -} -func (m *HRKeys) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRKeys.Merge(m, src) -} -func (m *HRKeys) XXX_Size() int { - return xxx_messageInfo_HRKeys.Size(m) -} -func (m *HRKeys) XXX_DiscardUnknown() { - xxx_messageInfo_HRKeys.DiscardUnknown(m) -} - -var xxx_messageInfo_HRKeys proto.InternalMessageInfo - -func (m *HRKeys) GetKeys() []*HRKey { - if m != nil { - return m.Keys +func (x *HRKeys) GetKeys() []*HRKey { + if x != nil { + return x.Keys } return nil } type HRKey struct { - KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` } -func (m *HRKey) Reset() { *m = HRKey{} } -func (m *HRKey) String() string { return proto.CompactTextString(m) } -func (*HRKey) ProtoMessage() {} +func (x *HRKey) Reset() { + *x = HRKey{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRKey) ProtoMessage() {} + +func (x *HRKey) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRKey.ProtoReflect.Descriptor instead. func (*HRKey) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{8} + return file_protocol_message_proto_rawDescGZIP(), []int{8} } -func (m *HRKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRKey.Unmarshal(m, b) -} -func (m *HRKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRKey.Marshal(b, m, deterministic) -} -func (m *HRKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRKey.Merge(m, src) -} -func (m *HRKey) XXX_Size() int { - return xxx_messageInfo_HRKey.Size(m) -} -func (m *HRKey) XXX_DiscardUnknown() { - xxx_messageInfo_HRKey.DiscardUnknown(m) -} - -var xxx_messageInfo_HRKey proto.InternalMessageInfo - -func (m *HRKey) GetKeyId() uint32 { - if m != nil { - return m.KeyId +func (x *HRKey) GetKeyId() uint32 { + if x != nil { + return x.KeyId } return 0 } -func (m *HRKey) GetKey() []byte { - if m != nil { - return m.Key +func (x *HRKey) GetKey() []byte { + if x != nil { + return x.Key } return nil } // Direct message value type EncryptedMessageProtocol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + X3DHHeader *X3DHHeader `protobuf:"bytes,1,opt,name=X3DH_header,json=X3DHHeader,proto3" json:"X3DH_header,omitempty"` DRHeader *DRHeader `protobuf:"bytes,2,opt,name=DR_header,json=DRHeader,proto3" json:"DR_header,omitempty"` DHHeader *DHHeader `protobuf:"bytes,101,opt,name=DH_header,json=DHHeader,proto3" json:"DH_header,omitempty"` HRHeader *HRHeader `protobuf:"bytes,102,opt,name=HR_header,json=HRHeader,proto3" json:"HR_header,omitempty"` // Encrypted payload - Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *EncryptedMessageProtocol) Reset() { *m = EncryptedMessageProtocol{} } -func (m *EncryptedMessageProtocol) String() string { return proto.CompactTextString(m) } -func (*EncryptedMessageProtocol) ProtoMessage() {} +func (x *EncryptedMessageProtocol) Reset() { + *x = EncryptedMessageProtocol{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EncryptedMessageProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptedMessageProtocol) ProtoMessage() {} + +func (x *EncryptedMessageProtocol) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptedMessageProtocol.ProtoReflect.Descriptor instead. func (*EncryptedMessageProtocol) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{9} + return file_protocol_message_proto_rawDescGZIP(), []int{9} } -func (m *EncryptedMessageProtocol) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EncryptedMessageProtocol.Unmarshal(m, b) -} -func (m *EncryptedMessageProtocol) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EncryptedMessageProtocol.Marshal(b, m, deterministic) -} -func (m *EncryptedMessageProtocol) XXX_Merge(src proto.Message) { - xxx_messageInfo_EncryptedMessageProtocol.Merge(m, src) -} -func (m *EncryptedMessageProtocol) XXX_Size() int { - return xxx_messageInfo_EncryptedMessageProtocol.Size(m) -} -func (m *EncryptedMessageProtocol) XXX_DiscardUnknown() { - xxx_messageInfo_EncryptedMessageProtocol.DiscardUnknown(m) -} - -var xxx_messageInfo_EncryptedMessageProtocol proto.InternalMessageInfo - -func (m *EncryptedMessageProtocol) GetX3DHHeader() *X3DHHeader { - if m != nil { - return m.X3DHHeader +func (x *EncryptedMessageProtocol) GetX3DHHeader() *X3DHHeader { + if x != nil { + return x.X3DHHeader } return nil } -func (m *EncryptedMessageProtocol) GetDRHeader() *DRHeader { - if m != nil { - return m.DRHeader +func (x *EncryptedMessageProtocol) GetDRHeader() *DRHeader { + if x != nil { + return x.DRHeader } return nil } -func (m *EncryptedMessageProtocol) GetDHHeader() *DHHeader { - if m != nil { - return m.DHHeader +func (x *EncryptedMessageProtocol) GetDHHeader() *DHHeader { + if x != nil { + return x.DHHeader } return nil } -func (m *EncryptedMessageProtocol) GetHRHeader() *HRHeader { - if m != nil { - return m.HRHeader +func (x *EncryptedMessageProtocol) GetHRHeader() *HRHeader { + if x != nil { + return x.HRHeader } return nil } -func (m *EncryptedMessageProtocol) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *EncryptedMessageProtocol) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } // Top-level protocol message type ProtocolMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The device id of the sender InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` // List of bundles @@ -576,127 +660,372 @@ type ProtocolMessage struct { // TODO map here is redundant in case of community messages EncryptedMessage map[string]*EncryptedMessageProtocol `protobuf:"bytes,101,rep,name=encrypted_message,json=encryptedMessage,proto3" json:"encrypted_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Public chats, not encrypted - PublicMessage []byte `protobuf:"bytes,102,opt,name=public_message,json=publicMessage,proto3" json:"public_message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PublicMessage []byte `protobuf:"bytes,102,opt,name=public_message,json=publicMessage,proto3" json:"public_message,omitempty"` } -func (m *ProtocolMessage) Reset() { *m = ProtocolMessage{} } -func (m *ProtocolMessage) String() string { return proto.CompactTextString(m) } -func (*ProtocolMessage) ProtoMessage() {} +func (x *ProtocolMessage) Reset() { + *x = ProtocolMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProtocolMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProtocolMessage) ProtoMessage() {} + +func (x *ProtocolMessage) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead. func (*ProtocolMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{10} + return file_protocol_message_proto_rawDescGZIP(), []int{10} } -func (m *ProtocolMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProtocolMessage.Unmarshal(m, b) -} -func (m *ProtocolMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProtocolMessage.Marshal(b, m, deterministic) -} -func (m *ProtocolMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProtocolMessage.Merge(m, src) -} -func (m *ProtocolMessage) XXX_Size() int { - return xxx_messageInfo_ProtocolMessage.Size(m) -} -func (m *ProtocolMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ProtocolMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ProtocolMessage proto.InternalMessageInfo - -func (m *ProtocolMessage) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *ProtocolMessage) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *ProtocolMessage) GetBundles() []*Bundle { - if m != nil { - return m.Bundles +func (x *ProtocolMessage) GetBundles() []*Bundle { + if x != nil { + return x.Bundles } return nil } -func (m *ProtocolMessage) GetEncryptedMessage() map[string]*EncryptedMessageProtocol { - if m != nil { - return m.EncryptedMessage +func (x *ProtocolMessage) GetEncryptedMessage() map[string]*EncryptedMessageProtocol { + if x != nil { + return x.EncryptedMessage } return nil } -func (m *ProtocolMessage) GetPublicMessage() []byte { - if m != nil { - return m.PublicMessage +func (x *ProtocolMessage) GetPublicMessage() []byte { + if x != nil { + return x.PublicMessage } return nil } -func init() { - proto.RegisterType((*SignedPreKey)(nil), "encryption.SignedPreKey") - proto.RegisterType((*Bundle)(nil), "encryption.Bundle") - proto.RegisterMapType((map[string]*SignedPreKey)(nil), "encryption.Bundle.SignedPreKeysEntry") - proto.RegisterType((*BundleContainer)(nil), "encryption.BundleContainer") - proto.RegisterType((*DRHeader)(nil), "encryption.DRHeader") - proto.RegisterType((*DHHeader)(nil), "encryption.DHHeader") - proto.RegisterType((*X3DHHeader)(nil), "encryption.X3DHHeader") - proto.RegisterType((*HRHeader)(nil), "encryption.HRHeader") - proto.RegisterType((*HRKeys)(nil), "encryption.HRKeys") - proto.RegisterType((*HRKey)(nil), "encryption.HRKey") - proto.RegisterType((*EncryptedMessageProtocol)(nil), "encryption.EncryptedMessageProtocol") - proto.RegisterType((*ProtocolMessage)(nil), "encryption.ProtocolMessage") - proto.RegisterMapType((map[string]*EncryptedMessageProtocol)(nil), "encryption.ProtocolMessage.EncryptedMessageEntry") +var File_protocol_message_proto protoreflect.FileDescriptor + +var file_protocol_message_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, + 0x65, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x8b, 0x02, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4d, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, 0x79, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, + 0x65, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x1a, 0x5a, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, + 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, + 0x65, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, + 0x0f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x12, 0x2a, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x16, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, + 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x4a, 0x0a, 0x08, 0x44, 0x52, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x01, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x70, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x08, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x22, 0x34, 0x0a, 0x0a, 0x58, 0x33, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, + 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x53, 0x0a, 0x08, 0x48, 0x52, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, + 0x71, 0x5f, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x65, 0x71, 0x4e, + 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x06, + 0x48, 0x52, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x48, 0x52, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x30, 0x0a, + 0x05, 0x48, 0x52, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, + 0x86, 0x02, 0x0a, 0x18, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x37, 0x0a, 0x0b, + 0x58, 0x33, 0x44, 0x48, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x58, + 0x33, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x58, 0x33, 0x44, 0x48, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x44, 0x52, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, + 0x44, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x44, 0x48, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x08, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x48, + 0x52, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x52, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x48, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x12, 0x5e, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x69, 0x0a, 0x15, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("protocol_message.proto", fileDescriptor_4e37b52004a72e16) +var ( + file_protocol_message_proto_rawDescOnce sync.Once + file_protocol_message_proto_rawDescData = file_protocol_message_proto_rawDesc +) + +func file_protocol_message_proto_rawDescGZIP() []byte { + file_protocol_message_proto_rawDescOnce.Do(func() { + file_protocol_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_message_proto_rawDescData) + }) + return file_protocol_message_proto_rawDescData } -var fileDescriptor_4e37b52004a72e16 = []byte{ - // 663 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x54, 0xdd, 0x4e, 0x9c, 0x40, - 0x14, 0x0e, 0xb0, 0x7f, 0x9e, 0xfd, 0x61, 0x9d, 0x56, 0x43, 0x8d, 0x17, 0x1b, 0xa2, 0xe9, 0xb6, - 0x69, 0xb0, 0x6a, 0x93, 0x36, 0xf6, 0xce, 0x6a, 0x82, 0x36, 0x36, 0x66, 0x4c, 0x9a, 0xc6, 0x8b, - 0x12, 0x94, 0xa3, 0x9d, 0x88, 0x80, 0x0c, 0x6b, 0xca, 0x0b, 0xf4, 0xa6, 0x6f, 0xd8, 0xa7, 0x69, - 0x18, 0x18, 0x18, 0xd7, 0xdd, 0x3b, 0xce, 0xc7, 0xf9, 0xfb, 0xbe, 0x73, 0xe6, 0xc0, 0x7a, 0x92, - 0xc6, 0x59, 0x7c, 0x1d, 0x87, 0xde, 0x3d, 0x72, 0xee, 0xdf, 0xa2, 0x23, 0x00, 0x02, 0x18, 0x5d, - 0xa7, 0x79, 0x92, 0xb1, 0x38, 0xb2, 0x73, 0x18, 0x5c, 0xb0, 0xdb, 0x08, 0x83, 0xf3, 0x14, 0xbf, - 0x62, 0x4e, 0xb6, 0x60, 0xc4, 0x85, 0xed, 0x25, 0x29, 0x7a, 0x77, 0x98, 0x5b, 0xda, 0x44, 0x9b, - 0x0e, 0xe8, 0x80, 0xab, 0x5e, 0x16, 0x74, 0x1f, 0x31, 0xe5, 0x2c, 0x8e, 0x2c, 0x7d, 0xa2, 0x4d, - 0x87, 0x54, 0x9a, 0xe4, 0x0d, 0x8c, 0xeb, 0xaa, 0xd2, 0xc5, 0x10, 0x2e, 0xa6, 0xc4, 0xbf, 0x97, - 0xb0, 0xfd, 0x57, 0x87, 0xce, 0xe1, 0x2c, 0x0a, 0x42, 0x24, 0x1b, 0xd0, 0x63, 0x01, 0x46, 0x19, - 0xcb, 0x64, 0xbd, 0xda, 0x26, 0x67, 0x60, 0x3e, 0xed, 0x88, 0x5b, 0xfa, 0xc4, 0x98, 0xf6, 0xf7, - 0xb6, 0x9d, 0x86, 0x87, 0x53, 0x26, 0x72, 0x54, 0x2e, 0xfc, 0x38, 0xca, 0xd2, 0x9c, 0x0e, 0xd5, - 0xce, 0x39, 0xd9, 0x84, 0x95, 0x02, 0xf0, 0xb3, 0x59, 0x8a, 0x56, 0x4b, 0xd4, 0x6a, 0x80, 0xe2, - 0x6f, 0xc6, 0xee, 0x91, 0x67, 0xfe, 0x7d, 0x62, 0xb5, 0x27, 0xda, 0xd4, 0xa0, 0x0d, 0xb0, 0x71, - 0x09, 0xe4, 0x79, 0x01, 0x32, 0x06, 0x43, 0xea, 0xb4, 0x42, 0x8b, 0x4f, 0xe2, 0x40, 0xfb, 0xd1, - 0x0f, 0x67, 0x28, 0xc4, 0xe9, 0xef, 0x59, 0x6a, 0xa3, 0x6a, 0x02, 0x5a, 0xba, 0x1d, 0xe8, 0x9f, - 0x34, 0xfb, 0x37, 0x98, 0x25, 0x87, 0x2f, 0x71, 0x94, 0xf9, 0x2c, 0xc2, 0x94, 0xbc, 0x85, 0xce, - 0x95, 0x80, 0x44, 0xee, 0xfe, 0x1e, 0x79, 0x4e, 0x98, 0x56, 0x1e, 0x64, 0xbf, 0x98, 0x36, 0x7b, - 0xf4, 0x33, 0xf4, 0xe6, 0xe6, 0xa7, 0x0b, 0x8e, 0x2f, 0xaa, 0xbf, 0x6a, 0xf9, 0xd3, 0x56, 0xcf, - 0x18, 0xb7, 0xec, 0x53, 0xe8, 0x1d, 0x51, 0x17, 0xfd, 0x00, 0x53, 0x95, 0xcb, 0xa0, 0xe4, 0x32, - 0x00, 0x4d, 0x0e, 0x59, 0x8b, 0xc8, 0x08, 0xf4, 0x44, 0x0e, 0x54, 0x4f, 0x84, 0xcd, 0x82, 0x4a, - 0x46, 0x9d, 0x05, 0xf6, 0x26, 0xf4, 0x8e, 0xdc, 0x65, 0xb9, 0xec, 0x0f, 0x00, 0x3f, 0xf6, 0x97, - 0xff, 0x9f, 0xcf, 0x56, 0xf5, 0x77, 0x01, 0x3d, 0x57, 0xf6, 0xb7, 0x06, 0x9d, 0x3b, 0xcc, 0x3d, - 0x16, 0x88, 0xb0, 0x21, 0x6d, 0xdf, 0x61, 0x7e, 0x12, 0x14, 0x30, 0xc7, 0x07, 0x2f, 0x8a, 0xab, - 0x4e, 0xdb, 0x1c, 0x1f, 0xbe, 0xc5, 0xe4, 0x15, 0xf4, 0x6e, 0xd3, 0x78, 0x96, 0x14, 0xfe, 0x86, - 0xc8, 0xda, 0x15, 0xf6, 0x49, 0x60, 0xef, 0x40, 0xc7, 0xa5, 0x62, 0x21, 0xb6, 0xa1, 0x25, 0x96, - 0x4a, 0x13, 0x4b, 0xb5, 0xaa, 0x6a, 0x2c, 0x3c, 0xa8, 0xf8, 0x6d, 0xbf, 0x87, 0xb6, 0x30, 0x97, - 0xb5, 0x50, 0xb1, 0xd1, 0x1b, 0xb6, 0x7f, 0x74, 0xb0, 0x8e, 0xcb, 0x64, 0x18, 0x9c, 0x95, 0x2f, - 0xf0, 0xbc, 0x7a, 0x03, 0xe4, 0x23, 0xf4, 0x0b, 0x29, 0xbc, 0x5f, 0x82, 0x57, 0x35, 0xe0, 0x75, - 0xb5, 0x78, 0xa3, 0x14, 0x55, 0x55, 0xdb, 0x85, 0x95, 0x23, 0x2a, 0xc3, 0xca, 0xfd, 0x7a, 0xa9, - 0x86, 0xc9, 0x51, 0xd2, 0x66, 0xa8, 0x45, 0x48, 0x5d, 0x09, 0x17, 0x84, 0xb8, 0x75, 0x88, 0x52, - 0xc5, 0xad, 0xab, 0xdc, 0x3c, 0x0f, 0x71, 0xeb, 0x2a, 0xf5, 0x68, 0x2c, 0xe8, 0x26, 0x7e, 0x1e, - 0xc6, 0x7e, 0xad, 0x75, 0x65, 0xda, 0xff, 0x74, 0x30, 0x25, 0xf1, 0x4a, 0x07, 0xf2, 0x1a, 0x4c, - 0x16, 0xf1, 0xcc, 0x0f, 0x43, 0xbf, 0x48, 0x58, 0xc8, 0xa9, 0x8b, 0x07, 0x34, 0x52, 0xe1, 0x93, - 0x80, 0xbc, 0x83, 0x6e, 0xb9, 0xe2, 0xdc, 0x32, 0xc4, 0x84, 0x16, 0xbd, 0x02, 0xe9, 0x42, 0x7e, - 0xc2, 0x2a, 0x4a, 0xc9, 0xe5, 0xd5, 0xb3, 0x50, 0xc4, 0xed, 0xaa, 0x71, 0x73, 0xed, 0x38, 0xf3, - 0x73, 0x2a, 0x4f, 0xc7, 0x18, 0xe7, 0x60, 0xb2, 0x0d, 0xa3, 0x64, 0x76, 0x15, 0xb2, 0xeb, 0x3a, - 0xf9, 0x8d, 0xe0, 0x3a, 0x2c, 0xd1, 0xca, 0x6d, 0x83, 0xc1, 0xda, 0xc2, 0x8c, 0x0b, 0x6e, 0xc5, - 0xc1, 0xd3, 0x5b, 0xb1, 0xa5, 0x76, 0xb9, 0x6c, 0x7b, 0x94, 0xbb, 0x71, 0x68, 0x5e, 0x0e, 0x9d, - 0x9d, 0xcf, 0x4d, 0xd0, 0x55, 0x47, 0xdc, 0xd9, 0xfd, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1c, - 0x6a, 0xd5, 0xad, 0xfe, 0x05, 0x00, 0x00, +var file_protocol_message_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_protocol_message_proto_goTypes = []interface{}{ + (*SignedPreKey)(nil), // 0: encryption.SignedPreKey + (*Bundle)(nil), // 1: encryption.Bundle + (*BundleContainer)(nil), // 2: encryption.BundleContainer + (*DRHeader)(nil), // 3: encryption.DRHeader + (*DHHeader)(nil), // 4: encryption.DHHeader + (*X3DHHeader)(nil), // 5: encryption.X3DHHeader + (*HRHeader)(nil), // 6: encryption.HRHeader + (*HRKeys)(nil), // 7: encryption.HRKeys + (*HRKey)(nil), // 8: encryption.HRKey + (*EncryptedMessageProtocol)(nil), // 9: encryption.EncryptedMessageProtocol + (*ProtocolMessage)(nil), // 10: encryption.ProtocolMessage + nil, // 11: encryption.Bundle.SignedPreKeysEntry + nil, // 12: encryption.ProtocolMessage.EncryptedMessageEntry +} +var file_protocol_message_proto_depIdxs = []int32{ + 11, // 0: encryption.Bundle.signed_pre_keys:type_name -> encryption.Bundle.SignedPreKeysEntry + 1, // 1: encryption.BundleContainer.bundle:type_name -> encryption.Bundle + 8, // 2: encryption.HRKeys.keys:type_name -> encryption.HRKey + 5, // 3: encryption.EncryptedMessageProtocol.X3DH_header:type_name -> encryption.X3DHHeader + 3, // 4: encryption.EncryptedMessageProtocol.DR_header:type_name -> encryption.DRHeader + 4, // 5: encryption.EncryptedMessageProtocol.DH_header:type_name -> encryption.DHHeader + 6, // 6: encryption.EncryptedMessageProtocol.HR_header:type_name -> encryption.HRHeader + 1, // 7: encryption.ProtocolMessage.bundles:type_name -> encryption.Bundle + 12, // 8: encryption.ProtocolMessage.encrypted_message:type_name -> encryption.ProtocolMessage.EncryptedMessageEntry + 0, // 9: encryption.Bundle.SignedPreKeysEntry.value:type_name -> encryption.SignedPreKey + 9, // 10: encryption.ProtocolMessage.EncryptedMessageEntry.value:type_name -> encryption.EncryptedMessageProtocol + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_protocol_message_proto_init() } +func file_protocol_message_proto_init() { + if File_protocol_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedPreKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BundleContainer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DRHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DHHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*X3DHHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRKeys); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EncryptedMessageProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProtocolMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protocol_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 13, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_message_proto_goTypes, + DependencyIndexes: file_protocol_message_proto_depIdxs, + MessageInfos: file_protocol_message_proto_msgTypes, + }.Build() + File_protocol_message_proto = out.File + file_protocol_message_proto_rawDesc = nil + file_protocol_message_proto_goTypes = nil + file_protocol_message_proto_depIdxs = nil } diff --git a/protocol/group_chat_invitation.go b/protocol/group_chat_invitation.go index 5380c9f3b..d1bc5e0e8 100644 --- a/protocol/group_chat_invitation.go +++ b/protocol/group_chat_invitation.go @@ -15,7 +15,7 @@ import ( // Invitation represents a group chat invitation request from a user in the application layer, used for persistence, querying and // signaling type GroupChatInvitation struct { - protobuf.GroupChatInvitation + *protobuf.GroupChatInvitation // From is a public key of the author of the invitation request. From string `json:"from,omitempty"` @@ -24,24 +24,28 @@ type GroupChatInvitation struct { SigPubKey *ecdsa.PublicKey `json:"-"` } +func NewGroupChatInvitation() *GroupChatInvitation { + return &GroupChatInvitation{GroupChatInvitation: &protobuf.GroupChatInvitation{}} +} + // ID is the Keccak256() contatenation of From-ChatId -func (g GroupChatInvitation) ID() string { +func (g *GroupChatInvitation) ID() string { return types.EncodeHex(crypto.Keccak256([]byte(fmt.Sprintf("%s%s", g.From, g.ChatId)))) } // GetSigPubKey returns an ecdsa encoded public key // this function is required to implement the ChatEntity interface -func (g GroupChatInvitation) GetSigPubKey() *ecdsa.PublicKey { +func (g *GroupChatInvitation) GetSigPubKey() *ecdsa.PublicKey { return g.SigPubKey } // GetProtoBuf returns the struct's embedded protobuf struct // this function is required to implement the ChatEntity interface -func (g GroupChatInvitation) GetProtobuf() proto.Message { - return &g.GroupChatInvitation +func (g *GroupChatInvitation) GetProtobuf() proto.Message { + return g.GroupChatInvitation } -func (g GroupChatInvitation) MarshalJSON() ([]byte, error) { +func (g *GroupChatInvitation) MarshalJSON() ([]byte, error) { item := struct { ID string `json:"id"` ChatID string `json:"chatId,omitempty"` diff --git a/protocol/group_chat_system_messages.go b/protocol/group_chat_system_messages.go index 1da3e0a82..c3edeff20 100644 --- a/protocol/group_chat_system_messages.go +++ b/protocol/group_chat_system_messages.go @@ -74,7 +74,7 @@ func eventToSystemMessage(e v1protocol.MembershipUpdateEvent, translations *syst } timestamp := v1protocol.TimestampInMsFromTime(time.Now()) message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: e.ChatID, Text: text, MessageType: protobuf.MessageType_SYSTEM_MESSAGE_PRIVATE_GROUP, diff --git a/protocol/message_persistence.go b/protocol/message_persistence.go index e5629a892..175284390 100644 --- a/protocol/message_persistence.go +++ b/protocol/message_persistence.go @@ -1274,7 +1274,7 @@ func (db sqlitePersistence) EmojiReactionsByChatID(chatID string, currCursor str var result []*EmojiReaction for rows.Next() { - var emojiReaction EmojiReaction + emojiReaction := NewEmojiReaction() err := rows.Scan(&emojiReaction.Clock, &emojiReaction.From, &emojiReaction.Type, @@ -1286,7 +1286,7 @@ func (db sqlitePersistence) EmojiReactionsByChatID(chatID string, currCursor str return nil, err } - result = append(result, &emojiReaction) + result = append(result, emojiReaction) } return result, nil @@ -1324,7 +1324,7 @@ func (db sqlitePersistence) EmojiReactionsByChatIDMessageID(chatID string, messa var result []*EmojiReaction for rows.Next() { - var emojiReaction EmojiReaction + emojiReaction := NewEmojiReaction() err := rows.Scan(&emojiReaction.Clock, &emojiReaction.From, &emojiReaction.Type, @@ -1336,7 +1336,7 @@ func (db sqlitePersistence) EmojiReactionsByChatIDMessageID(chatID string, messa return nil, err } - result = append(result, &emojiReaction) + result = append(result, emojiReaction) } return result, nil @@ -1404,7 +1404,7 @@ func (db sqlitePersistence) EmojiReactionsByChatIDs(chatIDs []string, currCursor var result []*EmojiReaction for rows.Next() { - var emojiReaction EmojiReaction + emojiReaction := NewEmojiReaction() err := rows.Scan(&emojiReaction.Clock, &emojiReaction.From, &emojiReaction.Type, @@ -1416,7 +1416,7 @@ func (db sqlitePersistence) EmojiReactionsByChatIDs(chatIDs []string, currCursor return nil, err } - result = append(result, &emojiReaction) + result = append(result, emojiReaction) } return result, nil @@ -2198,7 +2198,7 @@ func (db sqlitePersistence) EmojiReactionByID(id string) (*EmojiReaction, error) emoji_reactions.id = ? `, id) - emojiReaction := new(EmojiReaction) + emojiReaction := NewEmojiReaction() err := row.Scan(&emojiReaction.Clock, &emojiReaction.From, &emojiReaction.Type, @@ -2293,7 +2293,7 @@ func (db sqlitePersistence) InvitationByID(id string) (*GroupChatInvitation, err group_chat_invitations.id = ? `, id) - chatInvitations := new(GroupChatInvitation) + chatInvitations := NewGroupChatInvitation() err := row.Scan(&chatInvitations.From, &chatInvitations.ChatId, &chatInvitations.IntroductionMessage, @@ -2389,7 +2389,7 @@ func (db sqlitePersistence) deactivateChat(chat *Chat, currentClockValue uint64, return db.clearHistory(chat, currentClockValue, tx, true) } -func (db sqlitePersistence) SaveDelete(deleteMessage DeleteMessage) error { +func (db sqlitePersistence) SaveDelete(deleteMessage *DeleteMessage) error { _, err := db.db.Exec(`INSERT INTO user_messages_deletes (clock, chat_id, message_id, source, id) VALUES(?,?,?,?,?)`, deleteMessage.Clock, deleteMessage.ChatId, deleteMessage.MessageId, deleteMessage.From, deleteMessage.ID) return err } @@ -2403,7 +2403,7 @@ func (db sqlitePersistence) GetDeletes(messageID string, from string) ([]*Delete var messages []*DeleteMessage for rows.Next() { - d := &DeleteMessage{} + d := NewDeleteMessage() err := rows.Scan(&d.Clock, &d.ChatId, &d.MessageId, &d.From, &d.ID) if err != nil { return nil, err @@ -2413,23 +2413,23 @@ func (db sqlitePersistence) GetDeletes(messageID string, from string) ([]*Delete return messages, nil } -func (db sqlitePersistence) SaveOrUpdateDeleteForMeMessage(deleteForMeMessage *protobuf.DeleteForMeMessage) error { +func (db sqlitePersistence) SaveOrUpdateDeleteForMeMessage(deleteForMeMessage *protobuf.SyncDeleteForMeMessage) error { _, err := db.db.Exec(`INSERT OR REPLACE INTO user_messages_deleted_for_mes (clock, message_id) SELECT ?,? WHERE NOT EXISTS (SELECT 1 FROM user_messages_deleted_for_mes WHERE message_id = ? AND clock >= ?)`, deleteForMeMessage.Clock, deleteForMeMessage.MessageId, deleteForMeMessage.MessageId, deleteForMeMessage.Clock) return err } -func (db sqlitePersistence) GetDeleteForMeMessagesByMessageID(messageID string) ([]*protobuf.DeleteForMeMessage, error) { +func (db sqlitePersistence) GetDeleteForMeMessagesByMessageID(messageID string) ([]*protobuf.SyncDeleteForMeMessage, error) { rows, err := db.db.Query(`SELECT clock, message_id FROM user_messages_deleted_for_mes WHERE message_id = ?`, messageID) if err != nil { return nil, err } defer rows.Close() - var messages []*protobuf.DeleteForMeMessage + var messages []*protobuf.SyncDeleteForMeMessage for rows.Next() { - d := &protobuf.DeleteForMeMessage{} + d := &protobuf.SyncDeleteForMeMessage{} err := rows.Scan(&d.Clock, &d.MessageId) if err != nil { return nil, err @@ -2439,16 +2439,16 @@ func (db sqlitePersistence) GetDeleteForMeMessagesByMessageID(messageID string) return messages, nil } -func (db sqlitePersistence) GetDeleteForMeMessages() ([]*protobuf.DeleteForMeMessage, error) { +func (db sqlitePersistence) GetDeleteForMeMessages() ([]*protobuf.SyncDeleteForMeMessage, error) { rows, err := db.db.Query(`SELECT clock, message_id FROM user_messages_deleted_for_mes`) if err != nil { return nil, err } defer rows.Close() - var messages []*protobuf.DeleteForMeMessage + var messages []*protobuf.SyncDeleteForMeMessage for rows.Next() { - d := &protobuf.DeleteForMeMessage{} + d := &protobuf.SyncDeleteForMeMessage{} err := rows.Scan(&d.Clock, &d.MessageId) if err != nil { return nil, err @@ -2458,7 +2458,10 @@ func (db sqlitePersistence) GetDeleteForMeMessages() ([]*protobuf.DeleteForMeMes return messages, nil } -func (db sqlitePersistence) SaveEdit(editMessage EditMessage) error { +func (db sqlitePersistence) SaveEdit(editMessage *EditMessage) error { + if editMessage == nil { + return nil + } _, err := db.db.Exec(`INSERT INTO user_messages_edits (clock, chat_id, message_id, text, source, id) VALUES(?,?,?,?,?,?)`, editMessage.Clock, editMessage.ChatId, editMessage.MessageId, editMessage.Text, editMessage.From, editMessage.ID) return err } @@ -2472,7 +2475,7 @@ func (db sqlitePersistence) GetEdits(messageID string, from string) ([]*EditMess var messages []*EditMessage for rows.Next() { - e := &EditMessage{} + e := NewEditMessage() err := rows.Scan(&e.Clock, &e.ChatId, &e.MessageId, &e.From, &e.Text, &e.ID) if err != nil { return nil, err @@ -2558,14 +2561,14 @@ func getMessageFromScanRows(db sqlitePersistence, rows *sql.Rows) (*common.Messa // // Hence, we make sure we're aggregating all attachments on a single // common.Message - var message common.Message - err := db.tableUserMessagesScanAllFields(rows, &message) + message := common.NewMessage() + err := db.tableUserMessagesScanAllFields(rows, message) if err != nil { return nil, err } if msg == nil { - msg = &message + msg = message } else if discordMessage := msg.GetDiscordMessage(); discordMessage != nil { msg.Payload = getUpdatedChatMessagePayload(discordMessage, message.GetDiscordMessage()) } @@ -2596,22 +2599,22 @@ func getMessagesFromScanRows(db sqlitePersistence, rows *sql.Rows, withCursor bo // // Hence, we make sure we're aggregating all attachments on a single // common.Message - var message common.Message + message := common.NewMessage() if withCursor { var cursor string - if err := db.tableUserMessagesScanAllFields(rows, &message, &cursor); err != nil { + if err := db.tableUserMessagesScanAllFields(rows, message, &cursor); err != nil { return nil, err } } else { - if err := db.tableUserMessagesScanAllFields(rows, &message); err != nil { + if err := db.tableUserMessagesScanAllFields(rows, message); err != nil { return nil, err } } if msg, ok := messageIdx[message.ID]; !ok { - messageIdx[message.ID] = &message - messages = append(messages, &message) + messageIdx[message.ID] = message + messages = append(messages, message) } else if discordMessage := msg.GetDiscordMessage(); discordMessage != nil { msg.Payload = getUpdatedChatMessagePayload(discordMessage, message.GetDiscordMessage()) } @@ -2634,18 +2637,17 @@ func getMessagesAndCursorsFromScanRows(db sqlitePersistence, rows *sql.Rows) ([] // // Hence, we make sure we're aggregating all attachments on a single // common.Message - var ( - message common.Message - cursor string - ) - if err := db.tableUserMessagesScanAllFields(rows, &message, &cursor); err != nil { + + var cursor string + message := common.NewMessage() + if err := db.tableUserMessagesScanAllFields(rows, message, &cursor); err != nil { return nil, nil, err } if msg, ok := messageIdx[message.ID]; !ok { - messageIdx[message.ID] = &message + messageIdx[message.ID] = message cursors = append(cursors, cursor) - messages = append(messages, &message) + messages = append(messages, message) } else if discordMessage := msg.GetDiscordMessage(); discordMessage != nil { msg.Payload = getUpdatedChatMessagePayload(discordMessage, message.GetDiscordMessage()) } @@ -2664,17 +2666,17 @@ func getPinnedMessagesAndCursorsFromScanRows(db sqlitePersistence, rows *sql.Row for rows.Next() { var ( - message common.Message pinnedAt uint64 pinnedBy string cursor string ) - if err := db.tableUserMessagesScanAllFields(rows, &message, &pinnedAt, &pinnedBy, &cursor); err != nil { + message := common.NewMessage() + if err := db.tableUserMessagesScanAllFields(rows, message, &pinnedAt, &pinnedBy, &cursor); err != nil { return nil, nil, err } if msg, ok := messageIdx[message.ID]; !ok { pinnedMessage := &common.PinnedMessage{ - Message: &message, + Message: message, PinnedAt: pinnedAt, PinnedBy: pinnedBy, } diff --git a/protocol/message_validator.go b/protocol/message_validator.go index 6530b31df..9d395c413 100644 --- a/protocol/message_validator.go +++ b/protocol/message_validator.go @@ -40,7 +40,10 @@ func ValidateMembershipUpdateMessage(message *protocol.MembershipUpdateMessage, return nil } -func ValidateStatusUpdate(message protobuf.StatusUpdate) error { +func ValidateStatusUpdate(message *protobuf.StatusUpdate) error { + if message == nil { + return errors.New("message can't be nil") + } if message.Clock == 0 { return errors.New("clock can't be 0") } @@ -57,7 +60,10 @@ func ValidateStatusUpdate(message protobuf.StatusUpdate) error { } -func ValidateEditMessage(message protobuf.EditMessage) error { +func ValidateEditMessage(message *protobuf.EditMessage) error { + if message == nil { + return errors.New("message can't be nil") + } if message.Clock == 0 { return errors.New("clock can't be 0") } @@ -75,7 +81,11 @@ func ValidateEditMessage(message protobuf.EditMessage) error { return ValidateText(message.Text) } -func ValidateDeleteMessage(message protobuf.DeleteMessage) error { +func ValidateDeleteMessage(message *protobuf.DeleteMessage) error { + if message == nil { + return errors.New("message can't be nil") + } + if len(message.ChatId) == 0 { return errors.New("chat-id can't be empty") } @@ -90,7 +100,11 @@ func ValidateDeleteMessage(message protobuf.DeleteMessage) error { return nil } -func ValidateDeleteForMeMessage(message protobuf.DeleteForMeMessage) error { +func ValidateDeleteForMeMessage(message *protobuf.SyncDeleteForMeMessage) error { + if message == nil { + return errors.New("message can't be nil") + } + if len(message.MessageId) == 0 { return errors.New("message-id can't be empty") } @@ -98,7 +112,7 @@ func ValidateDeleteForMeMessage(message protobuf.DeleteForMeMessage) error { return nil } -func ValidateReceivedPairInstallation(message *protobuf.PairInstallation, whisperTimestamp uint64) error { +func ValidateReceivedPairInstallation(message *protobuf.SyncPairInstallation, whisperTimestamp uint64) error { if err := validateClockValue(message.Clock, whisperTimestamp); err != nil { return err } diff --git a/protocol/message_validator_test.go b/protocol/message_validator_test.go index 1f27329a8..acc6b4950 100644 --- a/protocol/message_validator_test.go +++ b/protocol/message_validator_test.go @@ -22,13 +22,13 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { Name string WhisperTimestamp uint64 Valid bool - Message protobuf.RequestAddressForTransaction + Message *protobuf.RequestAddressForTransaction }{ { Name: "valid message", WhisperTimestamp: 30, Valid: true, - Message: protobuf.RequestAddressForTransaction{ + Message: &protobuf.RequestAddressForTransaction{ Clock: 30, Value: "0.34", Contract: "some contract", @@ -38,7 +38,7 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { Name: "missing clock value", WhisperTimestamp: 30, Valid: false, - Message: protobuf.RequestAddressForTransaction{ + Message: &protobuf.RequestAddressForTransaction{ Value: "0.34", Contract: "some contract", }, @@ -47,7 +47,7 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { Name: "missing value", WhisperTimestamp: 30, Valid: false, - Message: protobuf.RequestAddressForTransaction{ + Message: &protobuf.RequestAddressForTransaction{ Clock: 30, Contract: "some contract", }, @@ -56,7 +56,7 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { Name: "non number value", WhisperTimestamp: 30, Valid: false, - Message: protobuf.RequestAddressForTransaction{ + Message: &protobuf.RequestAddressForTransaction{ Clock: 30, Value: "most definitely not a number", Contract: "some contract", @@ -66,7 +66,7 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { Name: "Clock value too high", WhisperTimestamp: 30, Valid: false, - Message: protobuf.RequestAddressForTransaction{ + Message: &protobuf.RequestAddressForTransaction{ Clock: 151000, Value: "0.34", Contract: "some contract", @@ -75,7 +75,7 @@ func (s *MessageValidatorSuite) TestValidateRequestAddressForTransaction() { } for _, tc := range testCases { s.Run(tc.Name, func() { - err := ValidateReceivedRequestAddressForTransaction(&tc.Message, tc.WhisperTimestamp) + err := ValidateReceivedRequestAddressForTransaction(tc.Message, tc.WhisperTimestamp) if tc.Valid { s.Nil(err) } else { @@ -91,13 +91,13 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name string WhisperTimestamp uint64 Valid bool - Message protobuf.ChatMessage + Message *protobuf.ChatMessage }{ { Name: "A valid message", WhisperTimestamp: 2, Valid: true, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Clock: 1, Timestamp: 2, @@ -112,7 +112,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Missing chatId", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ Clock: 1, Timestamp: 2, Text: "some-text", @@ -126,7 +126,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Missing clock", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Timestamp: 2, Text: "some-text", @@ -140,7 +140,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Clock value too high", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Clock: 133000, Timestamp: 1, @@ -155,7 +155,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Missing timestamp", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Clock: 2, Text: "some-text", @@ -169,7 +169,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Missing text", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Clock: 2, Timestamp: 3, @@ -183,7 +183,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Blank text", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: " \n \t \n ", Clock: 2, @@ -198,7 +198,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Too long text", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Clock: 1, Timestamp: 2, @@ -213,7 +213,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Unknown MessageType", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -228,7 +228,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Unknown ContentType", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -243,7 +243,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "System message MessageType", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -258,7 +258,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Request address for transaction message type", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -273,7 +273,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Valid emoji only emssage", WhisperTimestamp: 2, Valid: true, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: ":+1:", Clock: 2, @@ -304,7 +304,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Valid sticker message", WhisperTimestamp: 2, Valid: true, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -325,7 +325,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid sticker message without Hash", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -345,7 +345,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid sticker message without any content", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -360,7 +360,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Valid image message", WhisperTimestamp: 2, Valid: true, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -381,7 +381,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid image message, type unknown", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -402,7 +402,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid image message, missing payload", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -422,7 +422,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Valid audio message", WhisperTimestamp: 2, Valid: true, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -443,7 +443,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid audio message, type unknown", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -464,7 +464,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { Name: "Invalid audio message, missing payload", WhisperTimestamp: 2, Valid: false, - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ ChatId: "a", Text: "valid", Clock: 2, @@ -484,7 +484,7 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() { for _, tc := range testCases { s.Run(tc.Name, func() { - err := ValidateReceivedChatMessage(&tc.Message, tc.WhisperTimestamp) + err := ValidateReceivedChatMessage(tc.Message, tc.WhisperTimestamp) if tc.Valid { s.Nil(err) } else { @@ -499,13 +499,13 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name string Valid bool WhisperTimestamp uint64 - Message protobuf.EmojiReaction + Message *protobuf.EmojiReaction }{ { Name: "valid emoji reaction", Valid: true, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, ChatId: "chat-id", MessageId: "message-id", @@ -517,7 +517,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "valid emoji retraction", Valid: true, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, ChatId: "0.34", MessageId: "message-id", @@ -530,7 +530,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "missing chatID", Valid: false, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, MessageId: "message-id", MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -541,7 +541,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "missing messageID", Valid: false, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, ChatId: "chat-id", MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -552,7 +552,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "missing type", Valid: false, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, ChatId: "chat-id", MessageId: "message-id", @@ -563,7 +563,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "missing message type", Valid: false, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 30, ChatId: "chat-id", MessageId: "message-id", @@ -574,7 +574,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { Name: "clock value too high", Valid: false, WhisperTimestamp: 30, - Message: protobuf.EmojiReaction{ + Message: &protobuf.EmojiReaction{ Clock: 900000, ChatId: "chat-id", MessageId: "message-id", @@ -585,7 +585,7 @@ func (s *MessageValidatorSuite) TestValidateEmojiReaction() { } for _, tc := range testCases { s.Run(tc.Name, func() { - err := ValidateReceivedEmojiReaction(&tc.Message, tc.WhisperTimestamp) + err := ValidateReceivedEmojiReaction(tc.Message, tc.WhisperTimestamp) if tc.Valid { s.Nil(err) } else { diff --git a/protocol/messenger.go b/protocol/messenger.go index 90228adcd..30c26468f 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -11,7 +11,6 @@ import ( "math" "math/rand" "os" - "reflect" "strings" "sync" "time" @@ -55,6 +54,7 @@ import ( "github.com/status-im/status-go/protocol/requests" "github.com/status-im/status-go/protocol/sqlite" "github.com/status-im/status-go/protocol/transport" + v1protocol "github.com/status-im/status-go/protocol/v1" "github.com/status-im/status-go/protocol/verification" "github.com/status-im/status-go/server" "github.com/status-im/status-go/services/browsers" @@ -2358,7 +2358,7 @@ func (m *Messenger) ShareImageMessage(request *requests.ShareImageMessage) (*Mes var messages []*common.Message for _, pk := range request.Users { - message := &common.Message{} + message := common.NewMessage() message.ChatId = pk.String() message.Payload = msg.Payload message.Text = "This message has been shared with you" @@ -2431,7 +2431,7 @@ func (m *Messenger) syncProfilePictures(rawMessageHandler RawMessageHandler) err rawMessage := common.RawMessage{ LocalChatID: chat.ID, Payload: encodedMessage, - MessageType: protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURE, + MessageType: protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURES, ResendAutomatically: true, } @@ -2710,7 +2710,7 @@ func (m *Messenger) SendPairInstallation(ctx context.Context, rawMessageHandler clock, chat := m.getLastClockWithRelatedChat() - pairMessage := &protobuf.PairInstallation{ + pairMessage := &protobuf.SyncPairInstallation{ Clock: clock, Name: installation.InstallationMetadata.Name, InstallationId: installation.ID, @@ -2727,7 +2727,7 @@ func (m *Messenger) SendPairInstallation(ctx context.Context, rawMessageHandler _, err = rawMessageHandler(ctx, common.RawMessage{ LocalChatID: chat.ID, Payload: encodedMessage, - MessageType: protobuf.ApplicationMetadataMessage_PAIR_INSTALLATION, + MessageType: protobuf.ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION, ResendAutomatically: true, }) if err != nil { @@ -2863,7 +2863,7 @@ func (m *Messenger) syncContact(ctx context.Context, contact *Contact, rawMessag rawMessage := common.RawMessage{ LocalChatID: chat.ID, Payload: encodedMessage, - MessageType: protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT, + MessageType: protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2, ResendAutomatically: true, } @@ -2891,7 +2891,7 @@ func (m *Messenger) syncCommunity(ctx context.Context, community *communities.Co return err } - syncMessage, err := community.ToSyncCommunityProtobuf(clock, communitySettings) + syncMessage, err := community.ToSyncInstallationCommunityProtobuf(clock, communitySettings) if err != nil { return err } @@ -2980,7 +2980,7 @@ func (m *Messenger) syncEnsUsernameDetails(ctx context.Context, rawMessageHandle return nil } -func (m *Messenger) saveEnsUsernameDetailProto(syncMessage protobuf.SyncEnsUsernameDetail) (*ensservice.UsernameDetail, error) { +func (m *Messenger) saveEnsUsernameDetailProto(syncMessage *protobuf.SyncEnsUsernameDetail) (*ensservice.UsernameDetail, error) { ud := &ensservice.UsernameDetail{ Username: syncMessage.Username, Clock: syncMessage.Clock, @@ -2995,7 +2995,7 @@ func (m *Messenger) saveEnsUsernameDetailProto(syncMessage protobuf.SyncEnsUsern return ud, nil } -func (m *Messenger) handleSyncEnsUsernameDetail(state *ReceivedMessageState, syncMessage protobuf.SyncEnsUsernameDetail) error { +func (m *Messenger) HandleSyncEnsUsernameDetail(state *ReceivedMessageState, syncMessage *protobuf.SyncEnsUsernameDetail, statusMessage *v1protocol.StatusMessage) error { ud, err := m.saveEnsUsernameDetailProto(syncMessage) if err != nil { return err @@ -3145,7 +3145,7 @@ func (m *Messenger) GetStats() types.StatsSummary { type CurrentMessageState struct { // Message is the protobuf message received - Message protobuf.ChatMessage + Message *protobuf.ChatMessage // MessageID is the ID of the message MessageID string // WhisperTimestamp is the whisper timestamp of the message @@ -3406,15 +3406,23 @@ func (m *Messenger) handleImportedMessages(messagesToHandle map[transport.Filter PublicKey: publicKey, } - if msg.ParsedMessage != nil { + if msg.UnwrappedPayload != nil { logger.Debug("Handling parsed message") - switch msg.ParsedMessage.Interface().(type) { + switch msg.Type { - case protobuf.ChatMessage: + case protobuf.ApplicationMetadataMessage_CHAT_MESSAGE: logger.Debug("Handling ChatMessage") - messageState.CurrentMessageState.Message = msg.ParsedMessage.Interface().(protobuf.ChatMessage) + + protoMessage := &protobuf.ChatMessage{} + err := proto.Unmarshal(msg.UnwrappedPayload, protoMessage) + if err != nil { + logger.Warn("failed to unmarshal ChatMessage", zap.Error(err)) + continue + } + + messageState.CurrentMessageState.Message = protoMessage m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, messageState.CurrentMessageState.Message) err = m.HandleImportedChatMessage(messageState) if err != nil { @@ -3586,950 +3594,16 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte PublicKey: publicKey, } - if msg.ParsedMessage != nil { + if msg.UnwrappedPayload != nil { - logger.Debug("Handling parsed message") - - switch msg.ParsedMessage.Interface().(type) { - case protobuf.MembershipUpdateMessage: - logger.Debug("Handling MembershipUpdateMessage") - rawMembershipUpdate := msg.ParsedMessage.Interface().(protobuf.MembershipUpdateMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, rawMembershipUpdate) - - chat, _ := messageState.AllChats.Load(rawMembershipUpdate.ChatId) - err = m.HandleMembershipUpdate(messageState, chat, rawMembershipUpdate, m.systemMessagesTranslations) - if err != nil { - logger.Warn("failed to handle MembershipUpdate", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.ChatMessage: - logger.Debug("Handling ChatMessage") - messageState.CurrentMessageState.Message = msg.ParsedMessage.Interface().(protobuf.ChatMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, messageState.CurrentMessageState.Message) - err = m.HandleChatMessage(messageState) - if err != nil { - logger.Warn("failed to handle ChatMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.EditMessage: - logger.Debug("Handling EditMessage") - editProto := msg.ParsedMessage.Interface().(protobuf.EditMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, editProto) - editMessage := EditMessage{ - EditMessage: editProto, - From: contact.ID, - ID: messageID, - SigPubKey: publicKey, - } - err = m.HandleEditMessage(messageState, editMessage) - if err != nil { - logger.Warn("failed to handle EditMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.DeleteMessage: - logger.Debug("Handling DeleteMessage") - deleteProto := msg.ParsedMessage.Interface().(protobuf.DeleteMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, deleteProto) - deleteMessage := DeleteMessage{ - DeleteMessage: deleteProto, - From: contact.ID, - ID: messageID, - SigPubKey: publicKey, - } - - err = m.HandleDeleteMessage(messageState, deleteMessage) - if err != nil { - logger.Warn("failed to handle DeleteMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.DeleteForMeMessage: - logger.Debug("Handling DeleteForMeMessage") - deleteForMeProto := msg.ParsedMessage.Interface().(protobuf.DeleteForMeMessage) - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, deleteForMeProto) - - err = m.HandleDeleteForMeMessage(messageState, deleteForMeProto) - if err != nil { - logger.Warn("failed to handle DeleteForMeMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.PinMessage: - pinMessage := msg.ParsedMessage.Interface().(protobuf.PinMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, pinMessage) - err = m.HandlePinMessage(messageState, pinMessage) - if err != nil { - logger.Warn("failed to handle PinMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.PairInstallation: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - p := msg.ParsedMessage.Interface().(protobuf.PairInstallation) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling PairInstallation", zap.Any("message", p)) - err = m.HandlePairInstallation(messageState, p) - if err != nil { - logger.Warn("failed to handle PairInstallation", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.StatusUpdate: - p := msg.ParsedMessage.Interface().(protobuf.StatusUpdate) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling StatusUpdate", zap.Any("message", p)) - err = m.HandleStatusUpdate(messageState, p) - if err != nil { - logger.Warn("failed to handle StatusMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncInstallationContact: - logger.Warn("SyncInstallationContact is not supported") - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, msg.ParsedMessage.Interface().(protobuf.SyncInstallationContact)) + err := m.dispatchToHandler(messageState, msg.UnwrappedPayload, msg, filter) + if err != nil { + allMessagesProcessed = false + logger.Warn("failed to process protobuf", zap.Error(err)) continue - - case protobuf.SyncInstallationContactV2: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncInstallationContactV2) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncInstallationContact", zap.Any("message", p)) - err = m.HandleSyncInstallationContact(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncInstallationContact", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncProfilePictures: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncProfilePictures) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncProfilePicture", zap.Any("message", p)) - err = m.HandleSyncProfilePictures(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncProfilePicture", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncBookmark: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncBookmark) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncBookmark", zap.Any("message", p)) - err = m.handleSyncBookmark(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncBookmark", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncClearHistory: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncClearHistory) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncClearHistory", zap.Any("message", p)) - err = m.handleSyncClearHistory(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncClearHistory", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncCommunitySettings: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - p := msg.ParsedMessage.Interface().(protobuf.SyncCommunitySettings) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncCommunitySettings", zap.Any("message", p)) - err = m.handleSyncCommunitySettings(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncCommunitySettings", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncTrustedUser: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncTrustedUser) - logger.Debug("Handling SyncTrustedUser", zap.Any("message", p)) - err = m.handleSyncTrustedUser(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncTrustedUser", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncVerificationRequest: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncVerificationRequest) - logger.Debug("Handling SyncVerificationRequest", zap.Any("message", p)) - err = m.handleSyncVerificationRequest(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncClearHistory", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.Backup: - if !m.processBackedupMessages { - continue - } - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.Backup) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling Backup", zap.Any("message", p)) - errors := m.HandleBackup(messageState, p) - if len(errors) > 0 { - for _, err := range errors { - logger.Warn("failed to handle Backup", zap.Error(err)) - } - allMessagesProcessed = false - continue - } - - case protobuf.SyncInstallationPublicChat: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncInstallationPublicChat) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncInstallationPublicChat", zap.Any("message", p)) - addedChat := m.HandleSyncInstallationPublicChat(messageState, p) - - // We join and re-register as we want to receive mentions from the newly joined public chat - if addedChat != nil { - _, err = m.createPublicChat(addedChat.ID, messageState.Response) - if err != nil { - allMessagesProcessed = false - logger.Error("error joining chat", zap.Error(err)) - continue - } - } - - case protobuf.SyncChatRemoved: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncChatRemoved) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncChatRemoved", zap.Any("message", p)) - err := m.HandleSyncChatRemoved(messageState, p) - if err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle sync removing chat", zap.Error(err)) - continue - } - - case protobuf.SyncChatMessagesRead: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncChatMessagesRead) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncChatMessagesRead", zap.Any("message", p)) - err := m.HandleSyncChatMessagesRead(messageState, p) - if err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle sync chat message read", zap.Error(err)) - continue - } - - case protobuf.SyncCommunity: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - community := msg.ParsedMessage.Interface().(protobuf.SyncCommunity) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, community) - logger.Debug("Handling SyncCommunity", zap.Any("message", community)) - - err = m.handleSyncCommunity(messageState, community) - if err != nil { - logger.Warn("failed to handle SyncCommunity", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncActivityCenterRead: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - a := msg.ParsedMessage.Interface().(protobuf.SyncActivityCenterRead) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, a) - logger.Debug("Handling SyncActivityCenterRead", zap.Any("message", a)) - - err = m.handleActivityCenterRead(messageState, a) - if err != nil { - logger.Warn("failed to handle SyncActivityCenterRead", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncActivityCenterAccepted: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - a := msg.ParsedMessage.Interface().(protobuf.SyncActivityCenterAccepted) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, a) - logger.Debug("Handling SyncActivityCenterAccepted", zap.Any("message", a)) - - err = m.handleActivityCenterAccepted(messageState, a) - if err != nil { - logger.Warn("failed to handle SyncActivityCenterAccepted", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncActivityCenterDismissed: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - a := msg.ParsedMessage.Interface().(protobuf.SyncActivityCenterDismissed) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, a) - logger.Debug("Handling SyncActivityCenterDismissed", zap.Any("message", a)) - - err = m.handleActivityCenterDismissed(messageState, a) - if err != nil { - logger.Warn("failed to handle SyncActivityCenterDismissed", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncActivityCenterNotifications: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - a := msg.ParsedMessage.Interface().(protobuf.SyncActivityCenterNotifications) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, a) - logger.Debug("Handling SyncActivityCenterNotification", zap.Any("message", a)) - - err = m.handleSyncActivityCenterNotifications(messageState, &a) - if err != nil { - logger.Warn("failed to handle SyncActivityCenterNotification", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncActivityCenterNotificationState: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - a := msg.ParsedMessage.Interface().(protobuf.SyncActivityCenterNotificationState) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, a) - logger.Debug("Handling SyncActivityCenterNotificationState", zap.Any("message", a)) - - err = m.handleSyncActivityCenterNotificationState(messageState, &a) - if err != nil { - logger.Warn("failed to handle SyncActivityCenterNotificationState", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncSetting: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - ss := msg.ParsedMessage.Interface().(protobuf.SyncSetting) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, ss) - logger.Debug("Handling SyncSetting", zap.Any("message", ss)) - - err := m.handleSyncSetting(messageState, &ss) - if err != nil { - logger.Warn("failed to handle SyncSetting", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SyncAccountCustomizationColor: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - sac := msg.ParsedMessage.Interface().(protobuf.SyncAccountCustomizationColor) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, sac) - logger.Debug("Handling SyncAccountCustomizationColor", zap.Any("message", sac)) - - err := m.handleSyncAccountCustomizationColor(messageState, sac) - if err != nil { - logger.Warn("failed to handle SyncAccountCustomizationColor", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.RequestAddressForTransaction: - command := msg.ParsedMessage.Interface().(protobuf.RequestAddressForTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling RequestAddressForTransaction", zap.Any("message", command)) - err = m.HandleRequestAddressForTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle RequestAddressForTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.SendTransaction: - command := msg.ParsedMessage.Interface().(protobuf.SendTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling SendTransaction", zap.Any("message", command)) - err = m.HandleSendTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle SendTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.AcceptRequestAddressForTransaction: - command := msg.ParsedMessage.Interface().(protobuf.AcceptRequestAddressForTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling AcceptRequestAddressForTransaction") - err = m.HandleAcceptRequestAddressForTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle AcceptRequestAddressForTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.DeclineRequestAddressForTransaction: - command := msg.ParsedMessage.Interface().(protobuf.DeclineRequestAddressForTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling DeclineRequestAddressForTransaction") - err = m.HandleDeclineRequestAddressForTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle DeclineRequestAddressForTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.DeclineRequestTransaction: - command := msg.ParsedMessage.Interface().(protobuf.DeclineRequestTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling DeclineRequestTransaction") - err = m.HandleDeclineRequestTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle DeclineRequestTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.RequestTransaction: - command := msg.ParsedMessage.Interface().(protobuf.RequestTransaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, command) - logger.Debug("Handling RequestTransaction") - err = m.HandleRequestTransaction(messageState, command) - if err != nil { - logger.Warn("failed to handle RequestTransaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.ContactUpdate: - if common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("coming from us, ignoring") - continue - } - - contactUpdate := msg.ParsedMessage.Interface().(protobuf.ContactUpdate) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, contactUpdate) - err = m.HandleContactUpdate(messageState, contactUpdate) - if err != nil { - logger.Warn("failed to handle ContactUpdate", zap.Error(err)) - allMessagesProcessed = false - continue - } - m.forgetContactInfoRequest(senderID) - - case protobuf.AcceptContactRequest: - logger.Debug("Handling AcceptContactRequest") - message := msg.ParsedMessage.Interface().(protobuf.AcceptContactRequest) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.HandleAcceptContactRequest(messageState, message, senderID) - if err != nil { - logger.Warn("failed to handle AcceptContactRequest", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.RetractContactRequest: - logger.Debug("Handling RetractContactRequest") - message := msg.ParsedMessage.Interface().(protobuf.RetractContactRequest) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.HandleRetractContactRequest(messageState, message) - if err != nil { - logger.Warn("failed to handle RetractContactRequest", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.PushNotificationQuery: - logger.Debug("Received PushNotificationQuery") - if m.pushNotificationServer == nil { - continue - } - message := msg.ParsedMessage.Interface().(protobuf.PushNotificationQuery) - logger.Debug("Handling PushNotificationQuery") - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - if err := m.pushNotificationServer.HandlePushNotificationQuery(publicKey, msg.ID, message); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationQuery", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - case protobuf.PushNotificationRegistrationResponse: - logger.Debug("Received PushNotificationRegistrationResponse") - if m.pushNotificationClient == nil { - continue - } - logger.Debug("Handling PushNotificationRegistrationResponse") - message := msg.ParsedMessage.Interface().(protobuf.PushNotificationRegistrationResponse) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - if err := m.pushNotificationClient.HandlePushNotificationRegistrationResponse(publicKey, message); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationRegistrationResponse", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - case protobuf.ContactCodeAdvertisement: - logger.Debug("Received ContactCodeAdvertisement") - - cca := msg.ParsedMessage.Interface().(protobuf.ContactCodeAdvertisement) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, cca) - logger.Debug("protobuf.ContactCodeAdvertisement received", zap.Any("cca", cca)) - if cca.ChatIdentity != nil { - - logger.Debug("Received ContactCodeAdvertisement ChatIdentity") - err = m.HandleChatIdentity(messageState, *cca.ChatIdentity) - if err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle ContactCodeAdvertisement ChatIdentity", zap.Error(err)) - // No continue as Chat Identity may fail but the rest of the cca may process fine. - } - } - - if m.pushNotificationClient == nil { - continue - } - logger.Debug("Handling ContactCodeAdvertisement") - if err := m.pushNotificationClient.HandleContactCodeAdvertisement(publicKey, cca); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle ContactCodeAdvertisement", zap.Error(err)) - } - - // We continue in any case, no changes to messenger - continue - - case protobuf.PushNotificationResponse: - logger.Debug("Received PushNotificationResponse") - if m.pushNotificationClient == nil { - continue - } - logger.Debug("Handling PushNotificationResponse") - message := msg.ParsedMessage.Interface().(protobuf.PushNotificationResponse) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - if err := m.pushNotificationClient.HandlePushNotificationResponse(publicKey, message); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationResponse", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - - case protobuf.PushNotificationQueryResponse: - logger.Debug("Received PushNotificationQueryResponse") - if m.pushNotificationClient == nil { - continue - } - logger.Debug("Handling PushNotificationQueryResponse") - message := msg.ParsedMessage.Interface().(protobuf.PushNotificationQueryResponse) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - if err := m.pushNotificationClient.HandlePushNotificationQueryResponse(publicKey, message); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationQueryResponse", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - - case protobuf.PushNotificationRequest: - logger.Debug("Received PushNotificationRequest") - if m.pushNotificationServer == nil { - continue - } - logger.Debug("Handling PushNotificationRequest") - message := msg.ParsedMessage.Interface().(protobuf.PushNotificationRequest) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - if err := m.pushNotificationServer.HandlePushNotificationRequest(publicKey, msg.ID, message); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationRequest", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - case protobuf.EmojiReaction: - logger.Debug("Handling EmojiReaction") - message := msg.ParsedMessage.Interface().(protobuf.EmojiReaction) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.HandleEmojiReaction(messageState, message) - if err != nil { - logger.Warn("failed to handle EmojiReaction", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.GroupChatInvitation: - logger.Debug("Handling GroupChatInvitation") - message := msg.ParsedMessage.Interface().(protobuf.GroupChatInvitation) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.HandleGroupChatInvitation(messageState, message) - if err != nil { - logger.Warn("failed to handle GroupChatInvitation", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.ChatIdentity: - message := msg.ParsedMessage.Interface().(protobuf.ChatIdentity) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.HandleChatIdentity(messageState, message) - if err != nil { - logger.Warn("failed to handle ChatIdentity", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CommunityDescription: - logger.Debug("Handling CommunityDescription") - message := msg.ParsedMessage.Interface().(protobuf.CommunityDescription) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.handleCommunityDescription(messageState, publicKey, message, msg.DecryptedPayload) - if err != nil { - logger.Warn("failed to handle CommunityDescription", zap.Error(err)) - allMessagesProcessed = false - continue - } - - //if community was among requested ones, send its info and remove filter - for communityID := range m.requestedCommunities { - if _, ok := messageState.Response.communities[communityID]; ok { - m.passStoredCommunityInfoToSignalHandler(communityID) - } - } - - case protobuf.RequestContactVerification: - logger.Debug("Handling RequestContactVerification") - err = m.HandleRequestContactVerification(messageState, msg.ParsedMessage.Interface().(protobuf.RequestContactVerification)) - if err != nil { - logger.Warn("failed to handle RequestContactVerification", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.AcceptContactVerification: - logger.Debug("Handling AcceptContactVerification") - err = m.HandleAcceptContactVerification(messageState, msg.ParsedMessage.Interface().(protobuf.AcceptContactVerification)) - if err != nil { - logger.Warn("failed to handle AcceptContactVerification", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.DeclineContactVerification: - logger.Debug("Handling DeclineContactVerification") - err = m.HandleDeclineContactVerification(messageState, msg.ParsedMessage.Interface().(protobuf.DeclineContactVerification)) - if err != nil { - logger.Warn("failed to handle DeclineContactVerification", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CancelContactVerification: - logger.Debug("Handling CancelContactVerification") - err = m.HandleCancelContactVerification(messageState, msg.ParsedMessage.Interface().(protobuf.CancelContactVerification)) - if err != nil { - logger.Warn("failed to handle CancelContactVerification", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CommunityRequestToJoin: - logger.Debug("Handling CommunityRequestToJoin") - request := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToJoin) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, request) - err = m.HandleCommunityRequestToJoin(messageState, publicKey, request) - if err != nil { - logger.Warn("failed to handle CommunityRequestToJoin", zap.Error(err)) - continue - } - case protobuf.CommunityEditRevealedAccounts: - logger.Debug("Handling CommunityEditRevealedAccounts") - request := msg.ParsedMessage.Interface().(protobuf.CommunityEditRevealedAccounts) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, request) - err = m.HandleCommunityEditSharedAddresses(messageState, publicKey, request) - if err != nil { - logger.Warn("failed to handle CommunityEditRevealedAccounts", zap.Error(err)) - continue - } - case protobuf.CommunityCancelRequestToJoin: - logger.Debug("Handling CommunityCancelRequestToJoin") - request := msg.ParsedMessage.Interface().(protobuf.CommunityCancelRequestToJoin) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, request) - err = m.HandleCommunityCancelRequestToJoin(messageState, publicKey, request) - if err != nil { - logger.Warn("failed to handle CommunityCancelRequestToJoin", zap.Error(err)) - continue - } - case protobuf.CommunityRequestToJoinResponse: - logger.Debug("Handling CommunityRequestToJoinResponse") - requestToJoinResponse := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToJoinResponse) - err = m.HandleCommunityRequestToJoinResponse(messageState, publicKey, requestToJoinResponse) - if err != nil { - logger.Warn("failed to handle CommunityRequestToJoinResponse", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.CommunityRequestToLeave: - logger.Debug("Handling CommunityRequestToLeave") - request := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToLeave) - err = m.HandleCommunityRequestToLeave(messageState, publicKey, request) - if err != nil { - logger.Warn("failed to handle CommunityRequestToLeave", zap.Error(err)) - continue - } - - case protobuf.CommunityMessageArchiveMagnetlink: - logger.Debug("Handling CommunityMessageArchiveMagnetlink") - magnetlinkMessage := msg.ParsedMessage.Interface().(protobuf.CommunityMessageArchiveMagnetlink) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, magnetlinkMessage) - err = m.HandleHistoryArchiveMagnetlinkMessage(messageState, publicKey, magnetlinkMessage.MagnetUri, magnetlinkMessage.Clock) - if err != nil { - logger.Warn("failed to handle CommunityMessageArchiveMagnetlink", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CommunityEventsMessage: - logger.Debug("Handling CommunityEventsMessage") - message := msg.ParsedMessage.Interface().(protobuf.CommunityEventsMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.handleCommunityEventsMessage(messageState, publicKey, message) - if err != nil { - logger.Warn("failed to handle CommunityEventsMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CommunityEventsMessageRejected: - logger.Debug("Handling CommunityEventsMessageRejected") - message := msg.ParsedMessage.Interface().(protobuf.CommunityEventsMessageRejected) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.handleCommunityEventsMessageRejected(messageState, publicKey, message) - if err != nil { - logger.Warn("failed to handle CommunityEventsMessageRejected", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.CommunityPrivilegedUserSyncMessage: - logger.Debug("Handling CommunityPrivilegedUserSyncMessage") - message := msg.ParsedMessage.Interface().(protobuf.CommunityPrivilegedUserSyncMessage) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - err = m.handleCommunityPrivilegedUserSyncMessage(messageState, publicKey, message) - if err != nil { - logger.Warn("failed to handle CommunityPrivilegedUserSyncMessage", zap.Error(err)) - allMessagesProcessed = false - continue - } - - case protobuf.AnonymousMetricBatch: - logger.Debug("Handling AnonymousMetricBatch") - if m.anonMetricsServer == nil { - logger.Warn("unable to handle AnonymousMetricBatch, anonMetricsServer is nil") - continue - } - message := msg.ParsedMessage.Interface().(protobuf.AnonymousMetricBatch) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) - ams, err := m.anonMetricsServer.StoreMetrics(message) - if err != nil { - logger.Warn("failed to store AnonymousMetricBatch", zap.Error(err)) - continue - } - messageState.Response.AnonymousMetrics = append(messageState.Response.AnonymousMetrics, ams...) - - case protobuf.SyncKeypair: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncKeypair) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncKeypair", zap.Any("message", p)) - err = m.HandleSyncKeypair(messageState, p, false) - if err != nil { - logger.Warn("failed to handle SyncKeypair", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncAccount: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncAccount) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncAccount", zap.Any("message", p)) - err = m.HandleSyncWatchOnlyAccount(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncAccount", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncAccountsPositions: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncAccountsPositions) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - logger.Debug("Handling SyncAccountsPositions", zap.Any("message", p)) - err = m.HandleSyncAccountsPositions(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncAccountsPositions", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncContactRequestDecision: - logger.Info("SyncContactRequestDecision") - p := msg.ParsedMessage.Interface().(protobuf.SyncContactRequestDecision) - err := m.HandleSyncContactRequestDecision(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncContactRequestDecision", zap.Error(err)) - continue - } - case protobuf.SyncSavedAddress: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncSavedAddress) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - err = m.handleSyncSavedAddress(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncSavedAddress", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncSocialLinks: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - - p := msg.ParsedMessage.Interface().(protobuf.SyncSocialLinks) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - err = m.HandleSyncSocialLinks(messageState, p) - if err != nil { - logger.Warn("failed to handle HandleSyncSocialLinks", zap.Error(err)) - allMessagesProcessed = false - continue - } - case protobuf.SyncEnsUsernameDetail: - if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { - logger.Warn("not coming from us, ignoring") - continue - } - p := msg.ParsedMessage.Interface().(protobuf.SyncEnsUsernameDetail) - m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, p) - err = m.handleSyncEnsUsernameDetail(messageState, p) - if err != nil { - logger.Warn("failed to handle SyncEnsName", zap.Error(err)) - allMessagesProcessed = false - continue - } - default: - // Check if is an encrypted PushNotificationRegistration - if msg.Type == protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION { - logger.Debug("Received PushNotificationRegistration") - if m.pushNotificationServer == nil { - continue - } - logger.Debug("Handling PushNotificationRegistration") - if err := m.pushNotificationServer.HandlePushNotificationRegistration(publicKey, msg.ParsedMessage.Interface().([]byte)); err != nil { - allMessagesProcessed = false - logger.Warn("failed to handle PushNotificationRegistration", zap.Error(err)) - } - // We continue in any case, no changes to messenger - continue - } - - logger.Debug("message not handled", zap.Any("messageType", reflect.TypeOf(msg.ParsedMessage.Interface()))) - } + logger.Debug("Handled parsed message") + } else { logger.Debug("parsed message is nil") } @@ -5235,7 +4309,7 @@ func (m *Messenger) RequestTransaction(ctx context.Context, chatID, value, contr return nil, errors.New("Need to be a one-to-one chat") } - message := &common.Message{} + message := common.NewMessage() err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) if err != nil { return nil, err @@ -5309,7 +4383,7 @@ func (m *Messenger) RequestAddressForTransaction(ctx context.Context, chatID, fr return nil, errors.New("Need to be a one-to-one chat") } - message := &common.Message{} + message := common.NewMessage() err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) if err != nil { return nil, err @@ -5728,7 +4802,7 @@ func (m *Messenger) SendTransaction(ctx context.Context, chatID, value, contract return nil, errors.New("Need to be a one-to-one chat") } - message := &common.Message{} + message := common.NewMessage() err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) if err != nil { return nil, err @@ -5824,7 +4898,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types. if validationResult.Message != nil { message = validationResult.Message } else { - message = &common.Message{} + message = common.NewMessage() err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) if err != nil { return nil, err @@ -6148,7 +5222,7 @@ func (m *Messenger) SendEmojiReaction(ctx context.Context, chatID, messageID str clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) emojiR := &EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: clock, MessageId: messageID, ChatId: chatID, @@ -6374,74 +5448,7 @@ func (m *Messenger) getEnsUsernameDetails() (result []*ensservice.UsernameDetail return db.GetEnsUsernames(nil) } -func (m *Messenger) handleSyncBookmark(state *ReceivedMessageState, message protobuf.SyncBookmark) error { - bookmark := &browsers.Bookmark{ - URL: message.Url, - Name: message.Name, - ImageURL: message.ImageUrl, - Removed: message.Removed, - Clock: message.Clock, - } - state.AllBookmarks[message.Url] = bookmark - return nil -} - -func (m *Messenger) handleSyncClearHistory(state *ReceivedMessageState, message protobuf.SyncClearHistory) error { - chatID := message.ChatId - existingChat, ok := state.AllChats.Load(chatID) - if !ok { - return ErrChatNotFound - } - - if existingChat.DeletedAtClockValue >= message.ClearedAt { - return nil - } - - err := m.persistence.ClearHistoryFromSyncMessage(existingChat, message.ClearedAt) - if err != nil { - return err - } - - if existingChat.Public() { - err = m.transport.ClearProcessedMessageIDsCache() - if err != nil { - return err - } - } - - state.AllChats.Store(chatID, existingChat) - state.Response.AddChat(existingChat) - state.Response.AddClearedHistory(&ClearedHistory{ - ClearedAt: message.ClearedAt, - ChatID: chatID, - }) - return nil -} - -func (m *Messenger) handleSyncTrustedUser(state *ReceivedMessageState, message protobuf.SyncTrustedUser) error { - updated, err := m.verificationDatabase.UpsertTrustStatus(message.Id, verification.TrustStatus(message.Status), message.Clock) - if err != nil { - return err - } - - if updated { - state.AllTrustStatus[message.Id] = verification.TrustStatus(message.Status) - - contact, ok := m.allContacts.Load(message.Id) - if !ok { - m.logger.Info("contact not found") - return nil - } - - contact.TrustStatus = verification.TrustStatus(message.Status) - m.allContacts.Store(contact.ID, contact) - state.ModifiedContacts.Store(contact.ID, true) - } - - return nil -} - -func ToVerificationRequest(message protobuf.SyncVerificationRequest) *verification.Request { +func ToVerificationRequest(message *protobuf.SyncVerificationRequest) *verification.Request { return &verification.Request{ From: message.From, To: message.To, @@ -6453,7 +5460,7 @@ func ToVerificationRequest(message protobuf.SyncVerificationRequest) *verificati } } -func (m *Messenger) handleSyncVerificationRequest(state *ReceivedMessageState, message protobuf.SyncVerificationRequest) error { +func (m *Messenger) HandleSyncVerificationRequest(state *ReceivedMessageState, message *protobuf.SyncVerificationRequest, statusMessage *v1protocol.StatusMessage) error { verificationRequest := ToVerificationRequest(message) err := m.verificationDatabase.SaveVerificationRequest(verificationRequest) @@ -6588,8 +5595,8 @@ func (m *Messenger) syncSocialLinks(ctx context.Context, rawMessageDispatcher Ra return err } -func (m *Messenger) HandleSyncSocialLinks(state *ReceivedMessageState, message protobuf.SyncSocialLinks) error { - return m.handleSyncSocialLinks(&message, func(links identity.SocialLinks) { +func (m *Messenger) HandleSyncSocialLinks(state *ReceivedMessageState, message *protobuf.SyncSocialLinks, statusMessage *v1protocol.StatusMessage) error { + return m.handleSyncSocialLinks(message, func(links identity.SocialLinks) { state.Response.SocialLinksInfo = &identity.SocialLinksInfo{ Links: links, Removed: len(links) == 0, @@ -6631,6 +5638,6 @@ func (m *Messenger) handleSyncSocialLinks(message *protobuf.SyncSocialLinks, cal return nil } -func (m *Messenger) GetDeleteForMeMessages() ([]*protobuf.DeleteForMeMessage, error) { +func (m *Messenger) GetDeleteForMeMessages() ([]*protobuf.SyncDeleteForMeMessage, error) { return m.persistence.GetDeleteForMeMessages() } diff --git a/protocol/messenger_activity_center.go b/protocol/messenger_activity_center.go index baa73e293..563c83eaa 100644 --- a/protocol/messenger_activity_center.go +++ b/protocol/messenger_activity_center.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" + v1protocol "github.com/status-im/status-go/protocol/v1" "github.com/status-im/status-go/protocol/verification" "github.com/golang/protobuf/proto" @@ -120,7 +121,7 @@ func (m *Messenger) syncActivityCenterNotifications(notifications []*ActivityCen } return m.sendToPairedDevices(context.TODO(), common.RawMessage{ Payload: encodedMessage, - MessageType: protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION, + MessageType: protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATIONS, ResendAutomatically: true, }) } @@ -383,7 +384,7 @@ func (m *Messenger) ActivityCenterNotification(id types.HexBytes) (*ActivityCent return m.persistence.GetActivityCenterNotificationByID(id) } -func (m *Messenger) handleActivityCenterRead(state *ReceivedMessageState, message protobuf.SyncActivityCenterRead) error { +func (m *Messenger) HandleSyncActivityCenterRead(state *ReceivedMessageState, message *protobuf.SyncActivityCenterRead, statusMessage *v1protocol.StatusMessage) error { resp, err := m.MarkActivityCenterNotificationsRead(context.TODO(), toHexBytes(message.Ids), message.Clock, false) if err != nil { @@ -393,7 +394,7 @@ func (m *Messenger) handleActivityCenterRead(state *ReceivedMessageState, messag return state.Response.Merge(resp) } -func (m *Messenger) handleActivityCenterAccepted(state *ReceivedMessageState, message protobuf.SyncActivityCenterAccepted) error { +func (m *Messenger) HandleSyncActivityCenterAccepted(state *ReceivedMessageState, message *protobuf.SyncActivityCenterAccepted, statusMessage *v1protocol.StatusMessage) error { resp, err := m.AcceptActivityCenterNotifications(context.TODO(), toHexBytes(message.Ids), message.Clock, false) if err != nil { @@ -403,7 +404,7 @@ func (m *Messenger) handleActivityCenterAccepted(state *ReceivedMessageState, me return state.Response.Merge(resp) } -func (m *Messenger) handleActivityCenterDismissed(state *ReceivedMessageState, message protobuf.SyncActivityCenterDismissed) error { +func (m *Messenger) HandleSyncActivityCenterDismissed(state *ReceivedMessageState, message *protobuf.SyncActivityCenterDismissed, statusMessage *v1protocol.StatusMessage) error { resp, err := m.DismissActivityCenterNotifications(context.TODO(), toHexBytes(message.Ids), message.Clock, false) if err != nil { @@ -413,7 +414,7 @@ func (m *Messenger) handleActivityCenterDismissed(state *ReceivedMessageState, m return state.Response.Merge(resp) } -func (m *Messenger) handleSyncActivityCenterNotificationState(state *ReceivedMessageState, a *protobuf.SyncActivityCenterNotificationState) error { +func (m *Messenger) HandleSyncActivityCenterNotificationState(state *ReceivedMessageState, a *protobuf.SyncActivityCenterNotificationState, statusMessage *v1protocol.StatusMessage) error { s := &ActivityCenterState{ HasSeen: a.HasSeen, UpdatedAt: a.UpdatedAt, @@ -428,7 +429,7 @@ func (m *Messenger) handleSyncActivityCenterNotificationState(state *ReceivedMes return nil } -func (m *Messenger) handleSyncActivityCenterNotifications(state *ReceivedMessageState, a *protobuf.SyncActivityCenterNotifications) error { +func (m *Messenger) HandleSyncActivityCenterNotifications(state *ReceivedMessageState, a *protobuf.SyncActivityCenterNotifications, statusMessage *v1protocol.StatusMessage) error { var notifications []*ActivityCenterNotification for _, n := range a.ActivityCenterNotifications { notification, err := convertActivityCenterNotificationFromProtobuf(n) @@ -509,7 +510,7 @@ func convertActivityCenterNotificationFromProtobuf(proto *protobuf.SyncActivityC } if len(proto.Message) > 0 { - message := &common.Message{} + message := common.NewMessage() err := json.Unmarshal(proto.Message, &message) if err != nil { return nil, err @@ -517,7 +518,7 @@ func convertActivityCenterNotificationFromProtobuf(proto *protobuf.SyncActivityC a.Message = message } if len(proto.ReplyMessage) > 0 { - replyMessage := &common.Message{} + replyMessage := common.NewMessage() err := json.Unmarshal(proto.ReplyMessage, &replyMessage) if err != nil { return nil, err diff --git a/protocol/messenger_activity_center_test.go b/protocol/messenger_activity_center_test.go index fd29c26c1..6a2091501 100644 --- a/protocol/messenger_activity_center_test.go +++ b/protocol/messenger_activity_center_test.go @@ -142,7 +142,7 @@ func (s *MessengerActivityCenterMessageSuite) TestEveryoneMentionTag() { chat := CreateOneToOneChat(common.PubkeyToHex(&alice.identity.PublicKey), &alice.identity.PublicKey, bob.transport) // bob sends a community message - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -171,7 +171,7 @@ func (s *MessengerActivityCenterMessageSuite) TestEveryoneMentionTag() { defaultCommunityChatID := response.Chats()[0].ID // bob sends a community message - inputMessage = &common.Message{} + inputMessage = common.NewMessage() inputMessage.ChatId = defaultCommunityChatID inputMessage.Text = "Good news, @" + common.EveryoneMentionTag + " !" inputMessage.CommunityID = community.IDString() @@ -232,7 +232,7 @@ func (s *MessengerActivityCenterMessageSuite) TestReplyWithImage() { chat := CreateOneToOneChat(common.PubkeyToHex(&alice.identity.PublicKey), &alice.identity.PublicKey, bob.transport) // bob sends a community message - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() @@ -263,7 +263,7 @@ func (s *MessengerActivityCenterMessageSuite) TestReplyWithImage() { defaultCommunityChatID := defaultCommunityChat.ID // bob sends a community message - inputMessage = &common.Message{} + inputMessage = common.NewMessage() inputMessage.ChatId = defaultCommunityChatID inputMessage.Text = "test message" inputMessage.CommunityID = community.IDString() diff --git a/protocol/messenger_auto_message.go b/protocol/messenger_auto_message.go index f038b0a3d..d611d66db 100644 --- a/protocol/messenger_auto_message.go +++ b/protocol/messenger_auto_message.go @@ -42,7 +42,7 @@ func (m *Messenger) startAutoMessageLoop() error { count++ timestamp := time.Now().Format(time.RFC3339) - msg := &common.Message{} + msg := common.NewMessage() msg.Text = fmt.Sprintf("%d\n%s", count, timestamp) msg.ChatId = autoMessageChatID msg.LocalChatID = autoMessageChatID diff --git a/protocol/messenger_backup.go b/protocol/messenger_backup.go index 918975dbc..dd8d92c64 100644 --- a/protocol/messenger_backup.go +++ b/protocol/messenger_backup.go @@ -286,7 +286,7 @@ func (m *Messenger) backupCommunities(ctx context.Context, clock uint64) ([]*pro return nil, err } - syncMessage, err := c.ToSyncCommunityProtobuf(clock, settings) + syncMessage, err := c.ToSyncInstallationCommunityProtobuf(clock, settings) if err != nil { return nil, err } @@ -298,7 +298,7 @@ func (m *Messenger) backupCommunities(ctx context.Context, clock uint64) ([]*pro syncMessage.EncryptionKeys = encodedKeys backupMessage := &protobuf.Backup{ - Communities: []*protobuf.SyncCommunity{syncMessage}, + Communities: []*protobuf.SyncInstallationCommunity{syncMessage}, } backupMessages = append(backupMessages, backupMessage) diff --git a/protocol/messenger_backup_handler.go b/protocol/messenger_backup_handler.go index f6d21f665..f7c12aa0b 100644 --- a/protocol/messenger_backup_handler.go +++ b/protocol/messenger_backup_handler.go @@ -6,6 +6,7 @@ import ( ensservice "github.com/status-im/status-go/services/ens" "github.com/status-im/status-go/protocol/identity" + v1protocol "github.com/status-im/status-go/protocol/v1" "go.uber.org/zap" @@ -23,7 +24,22 @@ const ( SyncWakuSectionKeyWatchOnlyAccounts = "watchOnlyAccounts" ) -func (m *Messenger) HandleBackup(state *ReceivedMessageState, message protobuf.Backup) []error { +func (m *Messenger) HandleBackup(state *ReceivedMessageState, message *protobuf.Backup, statusMessage *v1protocol.StatusMessage) error { + if !m.processBackedupMessages { + return nil + } + + errors := m.handleBackup(state, message) + if len(errors) > 0 { + for _, err := range errors { + m.logger.Warn("failed to handle Backup", zap.Error(err)) + } + return errors[0] + } + return nil +} + +func (m *Messenger) handleBackup(state *ReceivedMessageState, message *protobuf.Backup) []error { var errors []error err := m.handleBackedUpProfile(message.Profile, message.Clock) @@ -32,14 +48,14 @@ func (m *Messenger) HandleBackup(state *ReceivedMessageState, message protobuf.B } for _, contact := range message.Contacts { - err = m.HandleSyncInstallationContact(state, *contact) + err = m.HandleSyncInstallationContactV2(state, contact, nil) if err != nil { errors = append(errors, err) } } for _, community := range message.Communities { - err = m.handleSyncCommunity(state, *community) + err = m.handleSyncInstallationCommunity(state, community, nil) if err != nil { errors = append(errors, err) } @@ -154,7 +170,7 @@ func (m *Messenger) handleBackedUpProfile(message *protobuf.BackedUpProfile, bac var ensUsernameDetails []*ensservice.UsernameDetail for _, d := range message.EnsUsernameDetails { - dd, err := m.saveEnsUsernameDetailProto(*d) + dd, err := m.saveEnsUsernameDetailProto(d) if err != nil { return err } diff --git a/protocol/messenger_backup_test.go b/protocol/messenger_backup_test.go index d00d49915..cb17b6b4c 100644 --- a/protocol/messenger_backup_test.go +++ b/protocol/messenger_backup_test.go @@ -165,7 +165,7 @@ func (s *MessengerBackupSuite) TestBackupProfile() { err = bob1.settings.AddOrReplaceSocialLinksIfNewer(profileSocialLinks, profileSocialLinksClock) s.Require().NoError(err) - bob1EnsUsernameDetail, err := bob1.saveEnsUsernameDetailProto(protobuf.SyncEnsUsernameDetail{ + bob1EnsUsernameDetail, err := bob1.saveEnsUsernameDetailProto(&protobuf.SyncEnsUsernameDetail{ Clock: 1, Username: "bob1.eth", ChainId: 1, @@ -842,7 +842,12 @@ func (s *MessengerBackupSuite) TestBackupWatchOnlyAccounts() { _, err = WaitOnMessengerResponse( bob2, func(r *MessengerResponse) bool { - return r.BackupHandled + c, err := bob2.settings.GetActiveWatchOnlyAccounts() + if err != nil { + return false + } + return r.BackupHandled && len(woAccounts) == len(c) + }, "no messages", ) diff --git a/protocol/messenger_communities.go b/protocol/messenger_communities.go index 07aa7dec0..351cb23c0 100644 --- a/protocol/messenger_communities.go +++ b/protocol/messenger_communities.go @@ -115,7 +115,7 @@ func (m *Messenger) publishCommunityEventsRejected(community *communities.Commun communityEventsMessage := msg.ToProtobuf() communityEventsMessageRejected := &protobuf.CommunityEventsMessageRejected{ - Msg: &communityEventsMessage, + Msg: communityEventsMessage, } payload, err := proto.Marshal(communityEventsMessageRejected) @@ -1105,7 +1105,7 @@ func (m *Messenger) EditSharedAddressesForCommunity(request *requests.EditShared member := community.GetMember(m.IdentityPublicKey()) - requestToEditRevealedAccountsProto := &protobuf.CommunityEditRevealedAccounts{ + requestToEditRevealedAccountsProto := &protobuf.CommunityEditSharedAddresses{ Clock: member.LastUpdateClock + 1, CommunityId: community.ID(), RevealedAccounts: make([]*protobuf.RevealedAccount, 0), @@ -2133,7 +2133,7 @@ func (m *Messenger) ShareCommunity(request *requests.ShareCommunity) (*Messenger var messages []*common.Message for _, pk := range request.Users { - message := &common.Message{} + message := common.NewMessage() message.ChatId = pk.String() message.CommunityID = request.CommunityID.String() message.Text = fmt.Sprintf("Community %s has been shared with you", community.Name()) @@ -2564,8 +2564,8 @@ func (m *Messenger) passStoredCommunityInfoToSignalHandler(communityID string) { } // handleCommunityDescription handles an community description -func (m *Messenger) handleCommunityDescription(state *ReceivedMessageState, signer *ecdsa.PublicKey, description protobuf.CommunityDescription, rawPayload []byte) error { - communityResponse, err := m.communitiesManager.HandleCommunityDescriptionMessage(signer, &description, rawPayload) +func (m *Messenger) handleCommunityDescription(state *ReceivedMessageState, signer *ecdsa.PublicKey, description *protobuf.CommunityDescription, rawPayload []byte) error { + communityResponse, err := m.communitiesManager.HandleCommunityDescriptionMessage(signer, description, rawPayload) if err != nil { return err } @@ -2683,8 +2683,9 @@ func (m *Messenger) handleCommunityResponse(state *ReceivedMessageState, communi return nil } -func (m *Messenger) handleCommunityEventsMessage(state *ReceivedMessageState, signer *ecdsa.PublicKey, message protobuf.CommunityEventsMessage) error { - communityResponse, err := m.communitiesManager.HandleCommunityEventsMessage(signer, &message) +func (m *Messenger) HandleCommunityEventsMessage(state *ReceivedMessageState, message *protobuf.CommunityEventsMessage, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey + communityResponse, err := m.communitiesManager.HandleCommunityEventsMessage(signer, message) if err != nil { return err } @@ -2693,8 +2694,9 @@ func (m *Messenger) handleCommunityEventsMessage(state *ReceivedMessageState, si } // Re-sends rejected events, if any. -func (m *Messenger) handleCommunityEventsMessageRejected(state *ReceivedMessageState, signer *ecdsa.PublicKey, message protobuf.CommunityEventsMessageRejected) error { - reapplyEventsMessage, err := m.communitiesManager.HandleCommunityEventsMessageRejected(signer, &message) +func (m *Messenger) HandleCommunityEventsMessageRejected(state *ReceivedMessageState, message *protobuf.CommunityEventsMessageRejected, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey + reapplyEventsMessage, err := m.communitiesManager.HandleCommunityEventsMessageRejected(signer, message) if err != nil { return err } @@ -2710,7 +2712,7 @@ func (m *Messenger) handleCommunityEventsMessageRejected(state *ReceivedMessageS return nil } -func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMessageState, signer *ecdsa.PublicKey, message protobuf.CommunityPrivilegedUserSyncMessage) error { +func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMessageState, signer *ecdsa.PublicKey, message *protobuf.CommunityPrivilegedUserSyncMessage) error { if signer == nil { return errors.New("signer can't be nil") } @@ -2733,7 +2735,7 @@ func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMess return errors.New("user has no permissions to send privileged sync message") } - err = m.communitiesManager.ValidateCommunityPrivilegedUserSyncMessage(&message) + err = m.communitiesManager.ValidateCommunityPrivilegedUserSyncMessage(message) if err != nil { return err } @@ -2745,7 +2747,7 @@ func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMess if !isControlNodeMsg { return errors.New("accepted/requested to join sync messages can be send only by the control node") } - requestsToJoin, err := m.communitiesManager.HandleRequestToJoinPrivilegedUserSyncMessage(&message, community.ID()) + requestsToJoin, err := m.communitiesManager.HandleRequestToJoinPrivilegedUserSyncMessage(message, community.ID()) if err != nil { return nil } @@ -2753,7 +2755,7 @@ func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMess case protobuf.CommunityPrivilegedUserSyncMessage_ADD_COMMUNITY_TOKENS: // TODO add tokens to the Response - err = m.communitiesManager.HandleAddCommunityTokenPrivilegedUserSyncMessage(&message, community) + err = m.communitiesManager.HandleAddCommunityTokenPrivilegedUserSyncMessage(message, community) if err != nil { return nil } @@ -2762,11 +2764,20 @@ func (m *Messenger) handleCommunityPrivilegedUserSyncMessage(state *ReceivedMess return nil } -func (m *Messenger) handleSyncCommunity(messageState *ReceivedMessageState, syncCommunity protobuf.SyncCommunity) error { +func (m *Messenger) HandleCommunityPrivilegedUserSyncMessage(state *ReceivedMessageState, message *protobuf.CommunityPrivilegedUserSyncMessage, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey + return m.handleCommunityPrivilegedUserSyncMessage(state, signer, message) +} + +func (m *Messenger) HandleSyncInstallationCommunity(messageState *ReceivedMessageState, syncCommunity *protobuf.SyncInstallationCommunity, statusMessage *v1protocol.StatusMessage) error { + return m.handleSyncInstallationCommunity(messageState, syncCommunity, nil) +} + +func (m *Messenger) handleSyncInstallationCommunity(messageState *ReceivedMessageState, syncCommunity *protobuf.SyncInstallationCommunity, statusMessage *v1protocol.StatusMessage) error { logger := m.logger.Named("handleSyncCommunity") // Should handle community - shouldHandle, err := m.communitiesManager.ShouldHandleSyncCommunity(&syncCommunity) + shouldHandle, err := m.communitiesManager.ShouldHandleSyncCommunity(syncCommunity) if err != nil { logger.Debug("m.communitiesManager.ShouldHandleSyncCommunity error", zap.Error(err)) return err @@ -2825,14 +2836,14 @@ func (m *Messenger) handleSyncCommunity(messageState *ReceivedMessageState, sync return err } - err = m.handleCommunityDescription(messageState, orgPubKey, cd, syncCommunity.Description) + err = m.handleCommunityDescription(messageState, orgPubKey, &cd, syncCommunity.Description) if err != nil { logger.Debug("m.handleCommunityDescription error", zap.Error(err)) return err } if syncCommunity.Settings != nil { - err = m.handleSyncCommunitySettings(messageState, *syncCommunity.Settings) + err = m.HandleSyncCommunitySettings(messageState, syncCommunity.Settings, nil) if err != nil { logger.Debug("m.handleSyncCommunitySettings error", zap.Error(err)) return err @@ -2846,7 +2857,7 @@ func (m *Messenger) handleSyncCommunity(messageState *ReceivedMessageState, sync } if savedCommunity.HasPermissionToSendCommunityEvents() || savedCommunity.IsControlNode() { - err := m.handleCommunityTokensMetadata(savedCommunity.IDString(), savedCommunity.CommunityTokensMetadata()) + err := m.handleCommunityTokensMetadata(savedCommunity.IDString(), savedCommunity.CommunityTokensMetadata(), nil) if err != nil { logger.Debug("m.handleCommunityTokensMetadata", zap.Error(err)) return err @@ -2888,8 +2899,8 @@ func (m *Messenger) handleSyncCommunity(messageState *ReceivedMessageState, sync return nil } -func (m *Messenger) handleSyncCommunitySettings(messageState *ReceivedMessageState, syncCommunitySettings protobuf.SyncCommunitySettings) error { - shouldHandle, err := m.communitiesManager.ShouldHandleSyncCommunitySettings(&syncCommunitySettings) +func (m *Messenger) HandleSyncCommunitySettings(messageState *ReceivedMessageState, syncCommunitySettings *protobuf.SyncCommunitySettings, statusMessage *v1protocol.StatusMessage) error { + shouldHandle, err := m.communitiesManager.ShouldHandleSyncCommunitySettings(syncCommunitySettings) if err != nil { m.logger.Debug("m.communitiesManager.ShouldHandleSyncCommunitySettings error", zap.Error(err)) return err @@ -2899,7 +2910,7 @@ func (m *Messenger) handleSyncCommunitySettings(messageState *ReceivedMessageSta return nil } - communitySettings, err := m.communitiesManager.HandleSyncCommunitySettings(&syncCommunitySettings) + communitySettings, err := m.communitiesManager.HandleSyncCommunitySettings(syncCommunitySettings) if err != nil { return err } @@ -2908,7 +2919,7 @@ func (m *Messenger) handleSyncCommunitySettings(messageState *ReceivedMessageSta return nil } -func (m *Messenger) handleCommunityTokensMetadata(communityID string, communityTokens []*protobuf.CommunityTokenMetadata) error { +func (m *Messenger) handleCommunityTokensMetadata(communityID string, communityTokens []*protobuf.CommunityTokenMetadata, statusMessage *v1protocol.StatusMessage) error { return m.communitiesManager.HandleCommunityTokensMetadata(communityID, communityTokens) } @@ -3196,7 +3207,7 @@ func (m *Messenger) dispatchMagnetlinkMessage(communityID string) error { LocalChatID: chatID, Sender: community.PrivateKey(), Payload: encodedMessage, - MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_ARCHIVE_MAGNETLINK, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK, SkipGroupMessageWrap: true, } @@ -3729,7 +3740,7 @@ func (m *Messenger) RequestImportDiscordCommunity(request *requests.ImportDiscor LocalChatID: processedChannelIds[channel.Channel.ID], SigPubKey: &communityPubKey, CommunityID: communityID, - ChatMessage: chatMessage, + ChatMessage: &chatMessage, } err = messageToSave.PrepareContent(common.PubkeyToHex(&m.identity.PublicKey)) @@ -3773,7 +3784,7 @@ func (m *Messenger) RequestImportDiscordCommunity(request *requests.ImportDiscor pinMessageToSave := common.PinMessage{ ID: types.EncodeHex(messageID), - PinMessage: pinMessage, + PinMessage: &pinMessage, LocalChatID: processedChannelIds[channel.Channel.ID], From: messageToSave.From, SigPubKey: messageToSave.SigPubKey, diff --git a/protocol/messenger_community_metrics_test.go b/protocol/messenger_community_metrics_test.go index 603e6a38a..37dcf401e 100644 --- a/protocol/messenger_community_metrics_test.go +++ b/protocol/messenger_community_metrics_test.go @@ -93,7 +93,7 @@ func (s *MessengerCommunityMetricsSuite) generateMessages(chatID string, communi var messages []*common.Message for i, timestamp := range timestamps { message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, Text: fmt.Sprintf("Test message %d", i), MessageType: protobuf.MessageType_ONE_TO_ONE, diff --git a/protocol/messenger_contact_requests_test.go b/protocol/messenger_contact_requests_test.go index a5ecb37da..df6ee2d46 100644 --- a/protocol/messenger_contact_requests_test.go +++ b/protocol/messenger_contact_requests_test.go @@ -1203,13 +1203,12 @@ func (s *MessengerContactRequestSuite) TestReceiveAcceptAndRetractContactRequest state.CurrentMessageState = &CurrentMessageState{ PublicKey: &contactKey.PublicKey, MessageID: "0xa", - Message: message, Contact: contact, WhisperTimestamp: 1, } response := state.Response - err = s.m.HandleChatMessage(state) + err = s.m.HandleChatMessage(state, &message, nil) s.Require().NoError(err) s.Require().Len(response.ActivityCenterNotifications(), 1) contacts := s.m.Contacts() @@ -1219,7 +1218,7 @@ func (s *MessengerContactRequestSuite) TestReceiveAcceptAndRetractContactRequest retract := protobuf.RetractContactRequest{ Clock: 2, } - err = s.m.HandleRetractContactRequest(state, retract) + err = s.m.HandleRetractContactRequest(state, &retract, nil) s.Require().NoError(err) // Nothing should have changed @@ -1273,7 +1272,7 @@ func (s *MessengerContactRequestSuite) TestBobRestoresIncomingContactRequestFrom // Restore alice's contact from backup sync := s.syncInstallationContactV2FromContact(aliceFromBob) - err = bob2.HandleSyncInstallationContact(state, sync) + err = bob2.HandleSyncInstallationContactV2(state, &sync, nil) s.Require().NoError(err) // Accept latest CR for a contact @@ -1353,7 +1352,7 @@ func (s *MessengerContactRequestSuite) TestAliceRestoresOutgoingContactRequestFr // Restore alice's contact from backup sync := s.syncInstallationContactV2FromContact(bobFromAlice) - err = alice2.HandleSyncInstallationContact(state, sync) + err = alice2.HandleSyncInstallationContactV2(state, &sync, nil) s.Require().NoError(err) // Accept latest CR for a contact @@ -1455,6 +1454,7 @@ func (s *MessengerContactRequestSuite) blockContactAndSync(alice1 *Messenger, al s.Require().Len(resp.ActivityCenterNotifications(), 1) s.Require().Equal(resp.ActivityCenterNotifications()[0].Type, ActivityCenterNotificationTypeContactRemoved) + alice2.logger.Info("STARTING") // Wait for Alice-2 to sync Bob blocked state resp, err = WaitOnMessengerResponse(alice2, func(r *MessengerResponse) bool { return len(r.Contacts) == 1 diff --git a/protocol/messenger_contact_verification.go b/protocol/messenger_contact_verification.go index e8e6e0a00..980edeefd 100644 --- a/protocol/messenger_contact_verification.go +++ b/protocol/messenger_contact_verification.go @@ -17,6 +17,7 @@ import ( "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/requests" + v1protocol "github.com/status-im/status-go/protocol/v1" "github.com/status-im/status-go/protocol/verification" ) @@ -717,7 +718,7 @@ func (m *Messenger) GetTrustStatus(contactID string) (verification.TrustStatus, return m.verificationDatabase.GetTrustStatus(contactID) } -func ValidateContactVerificationRequest(request protobuf.RequestContactVerification) error { +func ValidateContactVerificationRequest(request *protobuf.RequestContactVerification) error { challengeLen := len(strings.TrimSpace(request.Challenge)) if challengeLen < minContactVerificationMessageLen || challengeLen > maxContactVerificationMessageLen { return errors.New("invalid verification request challenge length") @@ -726,7 +727,7 @@ func ValidateContactVerificationRequest(request protobuf.RequestContactVerificat return nil } -func (m *Messenger) HandleRequestContactVerification(state *ReceivedMessageState, request protobuf.RequestContactVerification) error { +func (m *Messenger) HandleRequestContactVerification(state *ReceivedMessageState, request *protobuf.RequestContactVerification, statusMessage *v1protocol.StatusMessage) error { if err := ValidateContactVerificationRequest(request); err != nil { m.logger.Debug("Invalid verification request", zap.Error(err)) return err @@ -810,7 +811,7 @@ func (m *Messenger) HandleRequestContactVerification(state *ReceivedMessageState return m.createOrUpdateIncomingContactVerificationNotification(contact, state, persistedVR, chatMessage, nil) } -func ValidateAcceptContactVerification(request protobuf.AcceptContactVerification) error { +func ValidateAcceptContactVerification(request *protobuf.AcceptContactVerification) error { responseLen := len(strings.TrimSpace(request.Response)) if responseLen < minContactVerificationMessageLen || responseLen > maxContactVerificationMessageLen { return errors.New("invalid verification request response length") @@ -819,7 +820,7 @@ func ValidateAcceptContactVerification(request protobuf.AcceptContactVerificatio return nil } -func (m *Messenger) HandleAcceptContactVerification(state *ReceivedMessageState, request protobuf.AcceptContactVerification) error { +func (m *Messenger) HandleAcceptContactVerification(state *ReceivedMessageState, request *protobuf.AcceptContactVerification, statusMessage *v1protocol.StatusMessage) error { if err := ValidateAcceptContactVerification(request); err != nil { m.logger.Debug("Invalid AcceptContactVerification", zap.Error(err)) return err @@ -913,7 +914,7 @@ func (m *Messenger) HandleAcceptContactVerification(state *ReceivedMessageState, return nil } -func (m *Messenger) HandleDeclineContactVerification(state *ReceivedMessageState, request protobuf.DeclineContactVerification) error { +func (m *Messenger) HandleDeclineContactVerification(state *ReceivedMessageState, request *protobuf.DeclineContactVerification, statusMessage *v1protocol.StatusMessage) error { if common.IsPubKeyEqual(state.CurrentMessageState.PublicKey, &m.identity.PublicKey) { return nil // Is ours, do nothing } @@ -977,7 +978,7 @@ func (m *Messenger) HandleDeclineContactVerification(state *ReceivedMessageState return m.createOrUpdateOutgoingContactVerificationNotification(contact, state.Response, persistedVR, msg, nil) } -func (m *Messenger) HandleCancelContactVerification(state *ReceivedMessageState, request protobuf.CancelContactVerification) error { +func (m *Messenger) HandleCancelContactVerification(state *ReceivedMessageState, request *protobuf.CancelContactVerification, statusMessage *v1protocol.StatusMessage) error { myPubKey := hexutil.Encode(crypto.FromECDSAPub(&m.identity.PublicKey)) contactID := hexutil.Encode(crypto.FromECDSAPub(state.CurrentMessageState.PublicKey)) @@ -1075,7 +1076,7 @@ func (m *Messenger) createOrUpdateIncomingContactVerificationNotification(contac } func (m *Messenger) createContactVerificationMessage(challenge string, chat *Chat, state *ReceivedMessageState, verificationStatus common.ContactVerificationState) (*common.Message, error) { - chatMessage := &common.Message{} + chatMessage := common.NewMessage() chatMessage.ID = state.CurrentMessageState.MessageID chatMessage.From = state.CurrentMessageState.Contact.ID chatMessage.Alias = state.CurrentMessageState.Contact.Alias @@ -1097,7 +1098,7 @@ func (m *Messenger) createContactVerificationMessage(challenge string, chat *Cha func (m *Messenger) createLocalContactVerificationMessage(challenge string, chat *Chat, id string, status common.ContactVerificationState) (*common.Message, error) { - chatMessage := &common.Message{} + chatMessage := common.NewMessage() chatMessage.ID = id err := extendMessageFromChat(chatMessage, chat, &m.identity.PublicKey, m.getTimesource()) if err != nil { diff --git a/protocol/messenger_contacts.go b/protocol/messenger_contacts.go index d85d68064..275a4df09 100644 --- a/protocol/messenger_contacts.go +++ b/protocol/messenger_contacts.go @@ -68,7 +68,7 @@ func (m *Messenger) prepareMutualStateUpdateMessage(contactID string, updateType } message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: contactID, Text: text, MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -537,7 +537,7 @@ func (m *Messenger) generateContactRequest(clock uint64, timestamp uint64, conta return nil, errors.New("contact cannot be nil") } - contactRequest := &common.Message{} + contactRequest := common.NewMessage() contactRequest.ChatId = contact.ID contactRequest.WhisperTimestamp = timestamp contactRequest.Seen = true diff --git a/protocol/messenger_delete_message_for_everyone_test.go b/protocol/messenger_delete_message_for_everyone_test.go index e11f08b48..04de66b31 100644 --- a/protocol/messenger_delete_message_for_everyone_test.go +++ b/protocol/messenger_delete_message_for_everyone_test.go @@ -97,7 +97,7 @@ func (s *MessengerDeleteMessageForEveryoneSuite) TestDeleteMessageForEveryone() s.Require().NoError(err) ctx := context.Background() - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = communityChat.ID inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN inputMessage.Text = "some text" diff --git a/protocol/messenger_delete_message_test.go b/protocol/messenger_delete_message_test.go index 1d3bf3858..261dc7d13 100644 --- a/protocol/messenger_delete_message_test.go +++ b/protocol/messenger_delete_message_test.go @@ -170,8 +170,8 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageFirstThenMessage() { inputMessage := buildTestMessage(*theirChat) inputMessage.Clock = 1 - deleteMessage := DeleteMessage{ - DeleteMessage: protobuf.DeleteMessage{ + deleteMessage := &DeleteMessage{ + DeleteMessage: &protobuf.DeleteMessage{ Clock: 2, MessageType: protobuf.MessageType_ONE_TO_ONE, MessageId: messageID, @@ -185,21 +185,20 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageFirstThenMessage() { } // Handle Delete first - err = s.m.HandleDeleteMessage(state, deleteMessage) + err = s.m.handleDeleteMessage(state, deleteMessage) s.Require().NoError(err) // // Handle chat message state = &ReceivedMessageState{ Response: &MessengerResponse{}, CurrentMessageState: &CurrentMessageState{ - Message: inputMessage.ChatMessage, MessageID: messageID, WhisperTimestamp: s.m.getTimesource().GetCurrentTime(), Contact: contact, PublicKey: &theirMessenger.identity.PublicKey, }, } - err = s.m.HandleChatMessage(state) + err = s.m.HandleChatMessage(state, inputMessage.ChatMessage, nil) s.Require().NoError(err) s.Require().Len(state.Response.Messages(), 0) // Message should not be added to response s.Require().Len(state.Response.RemovedMessages(), 0) @@ -311,8 +310,8 @@ func (s *MessengerDeleteMessageSuite) TestDeleteImageMessageFirstThenMessage() { album = append(album, image) } - deleteMessage := DeleteMessage{ - DeleteMessage: protobuf.DeleteMessage{ + deleteMessage := &DeleteMessage{ + DeleteMessage: &protobuf.DeleteMessage{ Clock: 2, MessageType: protobuf.MessageType_ONE_TO_ONE, MessageId: messageID1, @@ -326,21 +325,20 @@ func (s *MessengerDeleteMessageSuite) TestDeleteImageMessageFirstThenMessage() { } // Handle Delete first - err = s.m.HandleDeleteMessage(state, deleteMessage) + err = s.m.handleDeleteMessage(state, deleteMessage) s.Require().NoError(err) // Handle first image message state = &ReceivedMessageState{ Response: &MessengerResponse{}, CurrentMessageState: &CurrentMessageState{ - Message: album[0].ChatMessage, MessageID: messageID1, WhisperTimestamp: s.m.getTimesource().GetCurrentTime(), Contact: contact, PublicKey: &theirMessenger.identity.PublicKey, }, } - err = s.m.HandleChatMessage(state) + err = s.m.HandleChatMessage(state, album[0].ChatMessage, nil) s.Require().NoError(err) s.Require().Len(state.Response.Messages(), 0) // Message should not be added to response s.Require().Len(state.Response.RemovedMessages(), 0) @@ -350,14 +348,13 @@ func (s *MessengerDeleteMessageSuite) TestDeleteImageMessageFirstThenMessage() { state = &ReceivedMessageState{ Response: &MessengerResponse{}, CurrentMessageState: &CurrentMessageState{ - Message: album[1].ChatMessage, MessageID: messageID2, WhisperTimestamp: s.m.getTimesource().GetCurrentTime(), Contact: contact, PublicKey: &theirMessenger.identity.PublicKey, }, } - err = s.m.HandleChatMessage(state) + err = s.m.HandleChatMessage(state, album[1].ChatMessage, nil) s.Require().NoError(err) s.Require().Len(state.Response.Messages(), 0) // Message should not be added to response even if we didn't delete that ID s.Require().Len(state.Response.RemovedMessages(), 0) @@ -399,8 +396,8 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageWithAMention() { s.Require().Equal(int(response.Chats()[0].UnviewedMentionsCount), 1) s.Require().True(response.Messages()[0].Mentioned) - deleteMessage := DeleteMessage{ - DeleteMessage: protobuf.DeleteMessage{ + deleteMessage := &DeleteMessage{ + DeleteMessage: &protobuf.DeleteMessage{ Clock: 2, MessageType: protobuf.MessageType_ONE_TO_ONE, MessageId: messageID, @@ -414,7 +411,7 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageWithAMention() { } // Handle Delete first - err = s.m.HandleDeleteMessage(state, deleteMessage) + err = s.m.handleDeleteMessage(state, deleteMessage) s.Require().NoError(err) s.Require().Len(response.Chats(), 1) @@ -463,8 +460,8 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageAndChatIsAlreadyRead() { ogMessage := sendResponse.Messages()[0] - deleteMessage := DeleteMessage{ - DeleteMessage: protobuf.DeleteMessage{ + deleteMessage := &DeleteMessage{ + DeleteMessage: &protobuf.DeleteMessage{ Clock: 2, MessageType: protobuf.MessageType_ONE_TO_ONE, MessageId: ogMessage.ID, @@ -478,7 +475,7 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageAndChatIsAlreadyRead() { } // Handle Delete first - err = s.m.HandleDeleteMessage(state, deleteMessage) + err = s.m.handleDeleteMessage(state, deleteMessage) s.Require().NoError(err) s.Require().Len(response.Chats(), 1) diff --git a/protocol/messenger_edit_message_test.go b/protocol/messenger_edit_message_test.go index a7c1e9a00..2ea95e0e4 100644 --- a/protocol/messenger_edit_message_test.go +++ b/protocol/messenger_edit_message_test.go @@ -129,7 +129,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { s.Require().NoError(err) editMessage := EditMessage{ - EditMessage: protobuf.EditMessage{ + EditMessage: &protobuf.EditMessage{ Clock: editedMessage.Clock + 1, Text: "some text", MessageId: editedMessage.ID, @@ -144,7 +144,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { } state.AllChats.Store(ourChat.ID, ourChat) - err = s.m.HandleEditMessage(state, editMessage) + err = s.m.handleEditMessage(state, editMessage) // It should error as the user can't edit this message s.Require().Error(err) @@ -154,7 +154,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { s.Require().NoError(err) editMessage = EditMessage{ - EditMessage: protobuf.EditMessage{ + EditMessage: &protobuf.EditMessage{ Clock: editedMessage.Clock + 2, Text: "some text", MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -164,7 +164,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { From: contact.ID, } - err = s.m.HandleEditMessage(state, editMessage) + err = s.m.handleEditMessage(state, editMessage) s.Require().NoError(err) // It save the edit s.Require().Len(state.Response.Messages(), 1) @@ -176,7 +176,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { // In-between edit editMessage = EditMessage{ - EditMessage: protobuf.EditMessage{ + EditMessage: &protobuf.EditMessage{ Clock: editedMessage.Clock + 1, Text: "some other text", MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -188,7 +188,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() { state.Response = &MessengerResponse{} - err = s.m.HandleEditMessage(state, editMessage) + err = s.m.handleEditMessage(state, editMessage) // It should error as the user can't edit this message s.Require().NoError(err) // It discards the edit @@ -216,7 +216,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageFirstEditsThenMessage() { inputMessage := buildTestMessage(*theirChat) inputMessage.Clock = 1 editMessage := EditMessage{ - EditMessage: protobuf.EditMessage{ + EditMessage: &protobuf.EditMessage{ Clock: 2, Text: "some text", MessageType: protobuf.MessageType_ONE_TO_ONE, @@ -230,7 +230,7 @@ func (s *MessengerEditMessageSuite) TestEditMessageFirstEditsThenMessage() { } // Handle edit first - err = s.m.HandleEditMessage(state, editMessage) + err = s.m.handleEditMessage(state, editMessage) s.Require().NoError(err) // Handle chat message @@ -238,14 +238,13 @@ func (s *MessengerEditMessageSuite) TestEditMessageFirstEditsThenMessage() { state = &ReceivedMessageState{ Response: response, CurrentMessageState: &CurrentMessageState{ - Message: inputMessage.ChatMessage, MessageID: messageID, WhisperTimestamp: s.m.getTimesource().GetCurrentTime(), Contact: contact, PublicKey: &theirMessenger.identity.PublicKey, }, } - err = s.m.HandleChatMessage(state) + err = s.m.HandleChatMessage(state, inputMessage.ChatMessage, nil) s.Require().NoError(err) s.Require().Len(response.Messages(), 1) diff --git a/protocol/messenger_emoji_test.go b/protocol/messenger_emoji_test.go index fc6b31765..044efc68c 100644 --- a/protocol/messenger_emoji_test.go +++ b/protocol/messenger_emoji_test.go @@ -168,7 +168,7 @@ func (s *MessengerEmojiSuite) TestEmojiPrivateGroup() { } func (s *MessengerEmojiSuite) TestCompressedKeyReturnedWithEmoji() { - emojiReaction := &EmojiReaction{} + emojiReaction := NewEmojiReaction() id, err := crypto.GenerateKey() s.Require().NoError(err) diff --git a/protocol/messenger_group_chat.go b/protocol/messenger_group_chat.go index 33b9d69bf..ad09f1387 100644 --- a/protocol/messenger_group_chat.go +++ b/protocol/messenger_group_chat.go @@ -213,7 +213,7 @@ func (m *Messenger) AddMembersToGroupChat(ctx context.Context, chatID string, me logger.Info("ApproveInvitationByChatIdAndFrom", zap.String("chatID", chatID), zap.Any("member", member)) groupChatInvitation := &GroupChatInvitation{ - GroupChatInvitation: protobuf.GroupChatInvitation{ + GroupChatInvitation: &protobuf.GroupChatInvitation{ ChatId: chat.ID, }, From: member, @@ -433,7 +433,7 @@ func (m *Messenger) SendGroupChatInvitationRequest(ctx context.Context, chatID s clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) invitationR := &GroupChatInvitation{ - GroupChatInvitation: protobuf.GroupChatInvitation{ + GroupChatInvitation: &protobuf.GroupChatInvitation{ Clock: clock, ChatId: chatID, IntroductionMessage: message, diff --git a/protocol/messenger_group_chat_test.go b/protocol/messenger_group_chat_test.go index bfb86b29c..a9d946e2c 100644 --- a/protocol/messenger_group_chat_test.go +++ b/protocol/messenger_group_chat_test.go @@ -385,8 +385,8 @@ func (s *MessengerGroupChatSuite) TestGroupChatHandleDeleteMemberMessage() { s.Require().Len(response.Messages(), 1) s.Require().Equal(inputMessage.Text, response.Messages()[0].Text) - deleteMessage := DeleteMessage{ - DeleteMessage: protobuf.DeleteMessage{ + deleteMessage := &DeleteMessage{ + DeleteMessage: &protobuf.DeleteMessage{ Clock: 2, MessageType: protobuf.MessageType_PRIVATE_GROUP, MessageId: inputMessage.ID, @@ -399,7 +399,7 @@ func (s *MessengerGroupChatSuite) TestGroupChatHandleDeleteMemberMessage() { Response: &MessengerResponse{}, } - err = member.HandleDeleteMessage(state, deleteMessage) + err = member.handleDeleteMessage(state, deleteMessage) s.Require().NoError(err) removedMessages := state.Response.RemovedMessages() diff --git a/protocol/messenger_handler.go b/protocol/messenger_handler.go index 9deacdd56..1950a24fc 100644 --- a/protocol/messenger_handler.go +++ b/protocol/messenger_handler.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/status-im/status-go/services/browsers" "github.com/status-im/status-go/signal" "github.com/pkg/errors" @@ -55,13 +56,24 @@ var ( // HandleMembershipUpdate updates a Chat instance according to the membership updates. // It retrieves chat, if exists, and merges membership updates from the message. // Finally, the Chat is updated with the new group events. -func (m *Messenger) HandleMembershipUpdate(messageState *ReceivedMessageState, chat *Chat, rawMembershipUpdate protobuf.MembershipUpdateMessage, translations *systemMessageTranslationsMap) error { +func (m *Messenger) HandleMembershipUpdateMessage(messageState *ReceivedMessageState, rawMembershipUpdate *protobuf.MembershipUpdateMessage, statusMessage *v1protocol.StatusMessage) error { + chat, _ := messageState.AllChats.Load(rawMembershipUpdate.ChatId) + + return m.HandleMembershipUpdate(messageState, chat, rawMembershipUpdate, m.systemMessagesTranslations) +} + +func (m *Messenger) HandleMembershipUpdate(messageState *ReceivedMessageState, chat *Chat, rawMembershipUpdate *protobuf.MembershipUpdateMessage, translations *systemMessageTranslationsMap) error { + var group *v1protocol.Group var err error + if rawMembershipUpdate == nil { + return nil + } + logger := m.logger.With(zap.String("site", "HandleMembershipUpdate")) - message, err := v1protocol.MembershipUpdateMessageFromProtobuf(&rawMembershipUpdate) + message, err := v1protocol.MembershipUpdateMessageFromProtobuf(rawMembershipUpdate) if err != nil { return err @@ -100,7 +112,7 @@ func (m *Messenger) HandleMembershipUpdate(messageState *ReceivedMessageState, c if waitingForApproval { groupChatInvitation := &GroupChatInvitation{ - GroupChatInvitation: protobuf.GroupChatInvitation{ + GroupChatInvitation: &protobuf.GroupChatInvitation{ ChatId: message.ChatID, }, From: types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)), @@ -228,10 +240,9 @@ func (m *Messenger) HandleMembershipUpdate(messageState *ReceivedMessageState, c } if message.Message != nil { - messageState.CurrentMessageState.Message = *message.Message - return m.HandleChatMessage(messageState) + return m.HandleChatMessage(messageState, message.Message, nil) } else if message.EmojiReaction != nil { - return m.HandleEmojiReaction(messageState, *message.EmojiReaction) + return m.HandleEmojiReaction(messageState, message.EmojiReaction, nil) } return nil @@ -278,8 +289,9 @@ func (m *Messenger) PendingNotificationContactRequest(contactID string) (*Activi } func (m *Messenger) createContactRequestForContactUpdate(contact *Contact, messageState *ReceivedMessageState) (*common.Message, error) { + contactRequest, err := m.generateContactRequest( - messageState.CurrentMessageState.Message.Clock, + contact.ContactRequestRemoteClock, messageState.CurrentMessageState.WhisperTimestamp, contact, defaultContactRequestText(), @@ -471,11 +483,16 @@ func (m *Messenger) syncContactRequestForInstallationContact(contact *Contact, s return nil } -func (m *Messenger) HandleSyncInstallationContact(state *ReceivedMessageState, message protobuf.SyncInstallationContactV2) error { +func (m *Messenger) HandleSyncInstallationAccount(state *ReceivedMessageState, message *protobuf.SyncInstallationAccount, statusMessage *v1protocol.StatusMessage) error { + // Noop + return nil +} + +func (m *Messenger) HandleSyncInstallationContactV2(state *ReceivedMessageState, message *protobuf.SyncInstallationContactV2, statusMessage *v1protocol.StatusMessage) error { // Ignore own contact installation if message.Id == m.myHexIdentity() { - m.logger.Warn("HandleSyncInstallationContact: skipping own contact") + m.logger.Warn("HandleSyncInstallationContactV2: skipping own contact") return nil } @@ -648,7 +665,7 @@ func (m *Messenger) HandleSyncInstallationContact(state *ReceivedMessageState, m return nil } -func (m *Messenger) HandleSyncProfilePictures(state *ReceivedMessageState, message protobuf.SyncProfilePictures) error { +func (m *Messenger) HandleSyncProfilePictures(state *ReceivedMessageState, message *protobuf.SyncProfilePictures, statusMessage *v1protocol.StatusMessage) error { dbImages, err := m.multiAccounts.GetIdentityImages(message.KeyUid) if err != nil { return err @@ -688,7 +705,7 @@ func (m *Messenger) HandleSyncProfilePictures(state *ReceivedMessageState, messa return err } -func (m *Messenger) HandleSyncInstallationPublicChat(state *ReceivedMessageState, message protobuf.SyncInstallationPublicChat) *Chat { +func (m *Messenger) HandleSyncInstallationPublicChat(state *ReceivedMessageState, message *protobuf.SyncInstallationPublicChat, statusMessage *v1protocol.StatusMessage) error { chatID := message.Id existingChat, ok := state.AllChats.Load(chatID) if ok && (existingChat.Active || uint32(message.GetClock()/1000) < existingChat.SyncedTo) { @@ -706,10 +723,12 @@ func (m *Messenger) HandleSyncInstallationPublicChat(state *ReceivedMessageState state.AllChats.Store(chat.ID, chat) state.Response.AddChat(chat) - return chat + // We join and re-register as we want to receive mentions from the newly joined public chat + _, err := m.createPublicChat(chat.ID, state.Response) + return err } -func (m *Messenger) HandleSyncChatRemoved(state *ReceivedMessageState, message protobuf.SyncChatRemoved) error { +func (m *Messenger) HandleSyncChatRemoved(state *ReceivedMessageState, message *protobuf.SyncChatRemoved, statusMessage *v1protocol.StatusMessage) error { chat, ok := m.allChats.Load(message.Id) if !ok { return ErrChatNotFound @@ -738,7 +757,7 @@ func (m *Messenger) HandleSyncChatRemoved(state *ReceivedMessageState, message p return state.Response.Merge(response) } -func (m *Messenger) HandleSyncChatMessagesRead(state *ReceivedMessageState, message protobuf.SyncChatMessagesRead) error { +func (m *Messenger) HandleSyncChatMessagesRead(state *ReceivedMessageState, message *protobuf.SyncChatMessagesRead, statusMessage *v1protocol.StatusMessage) error { chat, ok := m.allChats.Load(message.Id) if !ok { return ErrChatNotFound @@ -757,7 +776,7 @@ func (m *Messenger) HandleSyncChatMessagesRead(state *ReceivedMessageState, mess return nil } -func (m *Messenger) handlePinMessage(pinner *Contact, whisperTimestamp uint64, response *MessengerResponse, message protobuf.PinMessage) error { +func (m *Messenger) handlePinMessage(pinner *Contact, whisperTimestamp uint64, response *MessengerResponse, message *protobuf.PinMessage) error { logger := m.logger.With(zap.String("site", "HandlePinMessage")) logger.Info("Handling pin message") @@ -819,7 +838,7 @@ func (m *Messenger) handlePinMessage(pinner *Contact, whisperTimestamp uint64, r return err } message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: message.Clock, Timestamp: whisperTimestamp, ChatId: chat.ID, @@ -848,7 +867,7 @@ func (m *Messenger) handlePinMessage(pinner *Contact, whisperTimestamp uint64, r return nil } -func (m *Messenger) HandlePinMessage(state *ReceivedMessageState, message protobuf.PinMessage) error { +func (m *Messenger) HandlePinMessage(state *ReceivedMessageState, message *protobuf.PinMessage, statusMessage *v1protocol.StatusMessage) error { return m.handlePinMessage(state.CurrentMessageState.Contact, state.CurrentMessageState.WhisperTimestamp, state.Response, message) } @@ -970,7 +989,7 @@ func (m *Messenger) handleAcceptContactRequestMessage(state *ReceivedMessageStat return nil } -func (m *Messenger) HandleAcceptContactRequest(state *ReceivedMessageState, message protobuf.AcceptContactRequest, senderID string) error { +func (m *Messenger) HandleAcceptContactRequest(state *ReceivedMessageState, message *protobuf.AcceptContactRequest, statusMessage *v1protocol.StatusMessage) error { err := m.handleAcceptContactRequestMessage(state, message.Clock, message.Id, false) if err != nil { m.logger.Warn("could not accept contact request", zap.Error(err)) @@ -979,7 +998,7 @@ func (m *Messenger) HandleAcceptContactRequest(state *ReceivedMessageState, mess return nil } -func (m *Messenger) handleRetractContactRequest(state *ReceivedMessageState, contact *Contact, message protobuf.RetractContactRequest) error { +func (m *Messenger) handleRetractContactRequest(state *ReceivedMessageState, contact *Contact, message *protobuf.RetractContactRequest) error { if contact.ID == m.myHexIdentity() { m.logger.Debug("retraction coming from us, ignoring") return nil @@ -1040,7 +1059,7 @@ func (m *Messenger) handleRetractContactRequest(state *ReceivedMessageState, con return nil } -func (m *Messenger) HandleRetractContactRequest(state *ReceivedMessageState, message protobuf.RetractContactRequest) error { +func (m *Messenger) HandleRetractContactRequest(state *ReceivedMessageState, message *protobuf.RetractContactRequest, statusMessage *v1protocol.StatusMessage) error { contact := state.CurrentMessageState.Contact err := m.handleRetractContactRequest(state, contact, message) if err != nil { @@ -1053,8 +1072,14 @@ func (m *Messenger) HandleRetractContactRequest(state *ReceivedMessageState, mes return nil } -func (m *Messenger) HandleContactUpdate(state *ReceivedMessageState, message protobuf.ContactUpdate) error { +func (m *Messenger) HandleContactUpdate(state *ReceivedMessageState, message *protobuf.ContactUpdate, statusMessage *v1protocol.StatusMessage) error { + logger := m.logger.With(zap.String("site", "HandleContactUpdate")) + if common.IsPubKeyEqual(state.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + logger.Warn("coming from us, ignoring") + return nil + } + contact := state.CurrentMessageState.Contact chat, ok := state.AllChats.Load(contact.ID) @@ -1145,9 +1170,9 @@ func (m *Messenger) HandleContactUpdate(state *ReceivedMessageState, message pro return nil } -func (m *Messenger) HandlePairInstallation(state *ReceivedMessageState, message protobuf.PairInstallation) error { +func (m *Messenger) HandleSyncPairInstallation(state *ReceivedMessageState, message *protobuf.SyncPairInstallation, statusMessage *v1protocol.StatusMessage) error { logger := m.logger.With(zap.String("site", "HandlePairInstallation")) - if err := ValidateReceivedPairInstallation(&message, state.CurrentMessageState.WhisperTimestamp); err != nil { + if err := ValidateReceivedPairInstallation(message, state.CurrentMessageState.WhisperTimestamp); err != nil { logger.Warn("failed to validate message", zap.Error(err)) return err } @@ -1332,12 +1357,13 @@ func (m *Messenger) handleArchiveMessages(archiveMessages []*protobuf.WakuMessag return response, nil } -func (m *Messenger) HandleCommunityCancelRequestToJoin(state *ReceivedMessageState, signer *ecdsa.PublicKey, cancelRequestToJoinProto protobuf.CommunityCancelRequestToJoin) error { +func (m *Messenger) HandleCommunityCancelRequestToJoin(state *ReceivedMessageState, cancelRequestToJoinProto *protobuf.CommunityCancelRequestToJoin, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey if cancelRequestToJoinProto.CommunityId == nil { return ErrInvalidCommunityID } - requestToJoin, err := m.communitiesManager.HandleCommunityCancelRequestToJoin(signer, &cancelRequestToJoinProto) + requestToJoin, err := m.communitiesManager.HandleCommunityCancelRequestToJoin(signer, cancelRequestToJoinProto) if err != nil { return err } @@ -1375,7 +1401,9 @@ func (m *Messenger) HandleCommunityCancelRequestToJoin(state *ReceivedMessageSta } // HandleCommunityRequestToJoin handles an community request to join -func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToJoinProto protobuf.CommunityRequestToJoin) error { +func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, requestToJoinProto *protobuf.CommunityRequestToJoin, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey + if requestToJoinProto.CommunityId == nil { return ErrInvalidCommunityID } @@ -1391,7 +1419,7 @@ func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, si return errors.New("request is expired") } - requestToJoin, err := m.communitiesManager.HandleCommunityRequestToJoin(signer, &requestToJoinProto) + requestToJoin, err := m.communitiesManager.HandleCommunityRequestToJoin(signer, requestToJoinProto) if err != nil { return err } @@ -1490,12 +1518,13 @@ func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, si } // HandleCommunityEditSharedAddresses handles an edit a user has made to their shared addresses -func (m *Messenger) HandleCommunityEditSharedAddresses(state *ReceivedMessageState, signer *ecdsa.PublicKey, editRevealedAddressesProto protobuf.CommunityEditRevealedAccounts) error { +func (m *Messenger) HandleCommunityEditSharedAddresses(state *ReceivedMessageState, editRevealedAddressesProto *protobuf.CommunityEditSharedAddresses, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey if editRevealedAddressesProto.CommunityId == nil { return ErrInvalidCommunityID } - err := m.communitiesManager.HandleCommunityEditSharedAddresses(signer, &editRevealedAddressesProto) + err := m.communitiesManager.HandleCommunityEditSharedAddresses(signer, editRevealedAddressesProto) if err != nil { return err } @@ -1509,12 +1538,13 @@ func (m *Messenger) HandleCommunityEditSharedAddresses(state *ReceivedMessageSta return nil } -func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToJoinResponseProto protobuf.CommunityRequestToJoinResponse) error { +func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageState, requestToJoinResponseProto *protobuf.CommunityRequestToJoinResponse, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey if requestToJoinResponseProto.CommunityId == nil { return ErrInvalidCommunityID } - updatedRequest, err := m.communitiesManager.HandleCommunityRequestToJoinResponse(signer, &requestToJoinResponseProto) + updatedRequest, err := m.communitiesManager.HandleCommunityRequestToJoinResponse(signer, requestToJoinResponseProto) if err != nil { return err } @@ -1594,12 +1624,13 @@ func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageS return nil } -func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToLeaveProto protobuf.CommunityRequestToLeave) error { +func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, requestToLeaveProto *protobuf.CommunityRequestToLeave, statusMessage *v1protocol.StatusMessage) error { + signer := state.CurrentMessageState.PublicKey if requestToLeaveProto.CommunityId == nil { return ErrInvalidCommunityID } - err := m.communitiesManager.HandleCommunityRequestToLeave(signer, &requestToLeaveProto) + err := m.communitiesManager.HandleCommunityRequestToLeave(signer, requestToLeaveProto) if err != nil { return err } @@ -1621,7 +1652,7 @@ func (m *Messenger) handleWrappedCommunityDescriptionMessage(payload []byte) (*c return m.communitiesManager.HandleWrappedCommunityDescriptionMessage(payload) } -func (m *Messenger) HandleEditMessage(state *ReceivedMessageState, editMessage EditMessage) error { +func (m *Messenger) handleEditMessage(state *ReceivedMessageState, editMessage EditMessage) error { if err := ValidateEditMessage(editMessage.EditMessage); err != nil { return err } @@ -1630,7 +1661,7 @@ func (m *Messenger) HandleEditMessage(state *ReceivedMessageState, editMessage E originalMessage, err := m.getMessageFromResponseOrDatabase(state.Response, messageID) if err == common.ErrRecordNotFound { - return m.persistence.SaveEdit(editMessage) + return m.persistence.SaveEdit(&editMessage) } else if err != nil { return err } @@ -1649,13 +1680,13 @@ func (m *Messenger) HandleEditMessage(state *ReceivedMessageState, editMessage E // Check that edit should be applied if originalMessage.EditedAt >= editMessage.Clock { - return m.persistence.SaveEdit(editMessage) + return m.persistence.SaveEdit(&editMessage) } // applyEditMessage modifies the message. Changing the variable name to make it clearer editedMessage := originalMessage // Update message and return it - err = m.applyEditMessage(&editMessage.EditMessage, editedMessage) + err = m.applyEditMessage(editMessage.EditMessage, editedMessage) if err != nil { return err } @@ -1708,7 +1739,19 @@ func (m *Messenger) HandleEditMessage(state *ReceivedMessageState, editMessage E return nil } -func (m *Messenger) HandleDeleteMessage(state *ReceivedMessageState, deleteMessage DeleteMessage) error { +func (m *Messenger) HandleEditMessage(state *ReceivedMessageState, editProto *protobuf.EditMessage, statusMessage *v1protocol.StatusMessage) error { + return m.handleEditMessage(state, EditMessage{ + EditMessage: editProto, + From: state.CurrentMessageState.Contact.ID, + ID: state.CurrentMessageState.MessageID, + SigPubKey: state.CurrentMessageState.PublicKey, + }) +} + +func (m *Messenger) handleDeleteMessage(state *ReceivedMessageState, deleteMessage *DeleteMessage) error { + if deleteMessage == nil { + return nil + } if err := ValidateDeleteMessage(deleteMessage.DeleteMessage); err != nil { return err } @@ -1841,6 +1884,15 @@ func (m *Messenger) HandleDeleteMessage(state *ReceivedMessageState, deleteMessa return nil } +func (m *Messenger) HandleDeleteMessage(state *ReceivedMessageState, deleteProto *protobuf.DeleteMessage, statusMessage *v1protocol.StatusMessage) error { + return m.handleDeleteMessage(state, &DeleteMessage{ + DeleteMessage: deleteProto, + From: state.CurrentMessageState.Contact.ID, + ID: state.CurrentMessageState.MessageID, + SigPubKey: state.CurrentMessageState.PublicKey, + }) +} + func (m *Messenger) getMessageFromResponseOrDatabase(response *MessengerResponse, messageID string) (*common.Message, error) { originalMessage := response.GetMessage(messageID) // otherwise pull from database @@ -1851,7 +1903,7 @@ func (m *Messenger) getMessageFromResponseOrDatabase(response *MessengerResponse return m.persistence.MessageByID(messageID) } -func (m *Messenger) HandleDeleteForMeMessage(state *ReceivedMessageState, deleteForMeMessage protobuf.DeleteForMeMessage) error { +func (m *Messenger) HandleSyncDeleteForMeMessage(state *ReceivedMessageState, deleteForMeMessage *protobuf.SyncDeleteForMeMessage, statusMessage *v1protocol.StatusMessage) error { if err := ValidateDeleteForMeMessage(deleteForMeMessage); err != nil { return err } @@ -1861,7 +1913,7 @@ func (m *Messenger) HandleDeleteForMeMessage(state *ReceivedMessageState, delete originalMessage, err := m.getMessageFromResponseOrDatabase(state.Response, messageID) if err == common.ErrRecordNotFound { - return m.persistence.SaveOrUpdateDeleteForMeMessage(&deleteForMeMessage) + return m.persistence.SaveOrUpdateDeleteForMeMessage(deleteForMeMessage) } else if err != nil { return err } @@ -1938,7 +1990,8 @@ func handleContactRequestChatMessage(receivedMessage *common.Message, contact *C func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen bool) error { logger := m.logger.With(zap.String("site", "handleChatMessage")) - if err := ValidateReceivedChatMessage(&state.CurrentMessageState.Message, state.CurrentMessageState.WhisperTimestamp); err != nil { + logger.Info("state", zap.Any("state", state)) + if err := ValidateReceivedChatMessage(state.CurrentMessageState.Message, state.CurrentMessageState.WhisperTimestamp); err != nil { logger.Warn("failed to validate message", zap.Error(err)) return err } @@ -2209,7 +2262,8 @@ func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen boo return nil } -func (m *Messenger) HandleChatMessage(state *ReceivedMessageState) error { +func (m *Messenger) HandleChatMessage(state *ReceivedMessageState, message *protobuf.ChatMessage, statusMessage *v1protocol.StatusMessage) error { + state.CurrentMessageState.Message = message return m.handleChatMessage(state, false) } @@ -2244,13 +2298,13 @@ func (m *Messenger) addActivityCenterNotification(response *MessengerResponse, n return nil } -func (m *Messenger) HandleRequestAddressForTransaction(messageState *ReceivedMessageState, command protobuf.RequestAddressForTransaction) error { - err := ValidateReceivedRequestAddressForTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleRequestAddressForTransaction(messageState *ReceivedMessageState, command *protobuf.RequestAddressForTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedRequestAddressForTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: command.Clock, Timestamp: messageState.CurrentMessageState.WhisperTimestamp, Text: "Request address for transaction", @@ -2269,7 +2323,7 @@ func (m *Messenger) HandleRequestAddressForTransaction(messageState *ReceivedMes return m.handleCommandMessage(messageState, message) } -func (m *Messenger) handleSyncSetting(messageState *ReceivedMessageState, message *protobuf.SyncSetting) error { +func (m *Messenger) HandleSyncSetting(messageState *ReceivedMessageState, message *protobuf.SyncSetting, statusMessage *v1protocol.StatusMessage) error { settingField, err := m.extractAndSaveSyncSetting(message) if err != nil { return err @@ -2300,7 +2354,7 @@ func (m *Messenger) handleSyncSetting(messageState *ReceivedMessageState, messag return nil } -func (m *Messenger) handleSyncAccountCustomizationColor(state *ReceivedMessageState, message protobuf.SyncAccountCustomizationColor) error { +func (m *Messenger) HandleSyncAccountCustomizationColor(state *ReceivedMessageState, message *protobuf.SyncAccountCustomizationColor, statusMessage *v1protocol.StatusMessage) error { err := m.multiAccounts.UpdateAccountCustomizationColor(message.GetKeyUid(), message.GetCustomizationColor(), message.GetUpdatedAt()) if err != nil { return err @@ -2310,13 +2364,13 @@ func (m *Messenger) handleSyncAccountCustomizationColor(state *ReceivedMessageSt return nil } -func (m *Messenger) HandleRequestTransaction(messageState *ReceivedMessageState, command protobuf.RequestTransaction) error { - err := ValidateReceivedRequestTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleRequestTransaction(messageState *ReceivedMessageState, command *protobuf.RequestTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedRequestTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: command.Clock, Timestamp: messageState.CurrentMessageState.WhisperTimestamp, Text: "Request transaction", @@ -2336,8 +2390,8 @@ func (m *Messenger) HandleRequestTransaction(messageState *ReceivedMessageState, return m.handleCommandMessage(messageState, message) } -func (m *Messenger) HandleAcceptRequestAddressForTransaction(messageState *ReceivedMessageState, command protobuf.AcceptRequestAddressForTransaction) error { - err := ValidateReceivedAcceptRequestAddressForTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleAcceptRequestAddressForTransaction(messageState *ReceivedMessageState, command *protobuf.AcceptRequestAddressForTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedAcceptRequestAddressForTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } @@ -2387,8 +2441,8 @@ func (m *Messenger) HandleAcceptRequestAddressForTransaction(messageState *Recei return m.handleCommandMessage(messageState, initialMessage) } -func (m *Messenger) HandleSendTransaction(messageState *ReceivedMessageState, command protobuf.SendTransaction) error { - err := ValidateReceivedSendTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleSendTransaction(messageState *ReceivedMessageState, command *protobuf.SendTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedSendTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } @@ -2407,8 +2461,8 @@ func (m *Messenger) HandleSendTransaction(messageState *ReceivedMessageState, co return m.persistence.SaveTransactionToValidate(transactionToValidate) } -func (m *Messenger) HandleDeclineRequestAddressForTransaction(messageState *ReceivedMessageState, command protobuf.DeclineRequestAddressForTransaction) error { - err := ValidateReceivedDeclineRequestAddressForTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleDeclineRequestAddressForTransaction(messageState *ReceivedMessageState, command *protobuf.DeclineRequestAddressForTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedDeclineRequestAddressForTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } @@ -2449,8 +2503,8 @@ func (m *Messenger) HandleDeclineRequestAddressForTransaction(messageState *Rece return m.handleCommandMessage(messageState, oldMessage) } -func (m *Messenger) HandleDeclineRequestTransaction(messageState *ReceivedMessageState, command protobuf.DeclineRequestTransaction) error { - err := ValidateReceivedDeclineRequestTransaction(&command, messageState.CurrentMessageState.WhisperTimestamp) +func (m *Messenger) HandleDeclineRequestTransaction(messageState *ReceivedMessageState, command *protobuf.DeclineRequestTransaction, statusMessage *v1protocol.StatusMessage) error { + err := ValidateReceivedDeclineRequestTransaction(command, messageState.CurrentMessageState.WhisperTimestamp) if err != nil { return err } @@ -2639,9 +2693,9 @@ func (m *Messenger) messageExists(messageID string, existingMessagesMap map[stri return false, nil } -func (m *Messenger) HandleEmojiReaction(state *ReceivedMessageState, pbEmojiR protobuf.EmojiReaction) error { +func (m *Messenger) HandleEmojiReaction(state *ReceivedMessageState, pbEmojiR *protobuf.EmojiReaction, statusMessage *v1protocol.StatusMessage) error { logger := m.logger.With(zap.String("site", "HandleEmojiReaction")) - if err := ValidateReceivedEmojiReaction(&pbEmojiR, state.Timesource.GetCurrentTime()); err != nil { + if err := ValidateReceivedEmojiReaction(pbEmojiR, state.Timesource.GetCurrentTime()); err != nil { logger.Error("invalid emoji reaction", zap.Error(err)) return err } @@ -2693,7 +2747,7 @@ func (m *Messenger) HandleEmojiReaction(state *ReceivedMessageState, pbEmojiR pr return nil } -func (m *Messenger) HandleGroupChatInvitation(state *ReceivedMessageState, pbGHInvitations protobuf.GroupChatInvitation) error { +func (m *Messenger) HandleGroupChatInvitation(state *ReceivedMessageState, pbGHInvitations *protobuf.GroupChatInvitation, statusMessage *v1protocol.StatusMessage) error { allowed, err := m.isMessageAllowedFrom(state.CurrentMessageState.Contact.ID, nil) if err != nil { return err @@ -2703,7 +2757,7 @@ func (m *Messenger) HandleGroupChatInvitation(state *ReceivedMessageState, pbGHI return ErrMessageNotAllowed } logger := m.logger.With(zap.String("site", "HandleGroupChatInvitation")) - if err := ValidateReceivedGroupChatInvitation(&pbGHInvitations); err != nil { + if err := ValidateReceivedGroupChatInvitation(pbGHInvitations); err != nil { logger.Error("invalid group chat invitation", zap.Error(err)) return err } @@ -2743,9 +2797,16 @@ func (m *Messenger) HandleGroupChatInvitation(state *ReceivedMessageState, pbGHI return nil } +func (m *Messenger) HandleContactCodeAdvertisement(state *ReceivedMessageState, cca *protobuf.ContactCodeAdvertisement, statusMessage *v1protocol.StatusMessage) error { + if cca.ChatIdentity == nil { + return nil + } + return m.HandleChatIdentity(state, cca.ChatIdentity, nil) +} + // HandleChatIdentity handles an incoming protobuf.ChatIdentity // extracts contact information stored in the protobuf and adds it to the user's contact for update. -func (m *Messenger) HandleChatIdentity(state *ReceivedMessageState, ci protobuf.ChatIdentity) error { +func (m *Messenger) HandleChatIdentity(state *ReceivedMessageState, ci *protobuf.ChatIdentity, statusMessage *v1protocol.StatusMessage) error { s, err := m.settings.GetSettings() if err != nil { return err @@ -2795,7 +2856,7 @@ func (m *Messenger) HandleChatIdentity(state *ReceivedMessageState, ci protobuf. } } - clockChanged, imagesChanged, err := m.persistence.SaveContactChatIdentity(contact.ID, &ci) + clockChanged, imagesChanged, err := m.persistence.SaveContactChatIdentity(contact.ID, ci) if err != nil { return err } @@ -2854,7 +2915,7 @@ func (m *Messenger) HandleChatIdentity(state *ReceivedMessageState, ci protobuf. return nil } -func (m *Messenger) HandleAnonymousMetricBatch(amb protobuf.AnonymousMetricBatch) error { +func (m *Messenger) HandleAnonymousMetricBatch(state *ReceivedMessageState, amb *protobuf.AnonymousMetricBatch, statusMessage *v1protocol.StatusMessage) error { // TODO return nil @@ -2876,7 +2937,7 @@ func (m *Messenger) checkForEdits(message *common.Message) error { for _, e := range edits { if e.Clock >= message.Clock { // Update message and return it - err := m.applyEditMessage(&e.EditMessage, message) + err := m.applyEditMessage(e.EditMessage, message) if err != nil { return err } @@ -2945,7 +3006,7 @@ func (m *Messenger) checkForDeleteForMes(message *common.Message) error { return err } - var messageDeleteForMes []*protobuf.DeleteForMeMessage + var messageDeleteForMes []*protobuf.SyncDeleteForMeMessage applyDelete := false for _, messageToCheck := range messagesToCheck { if !applyDelete { @@ -3288,8 +3349,8 @@ func (m *Messenger) handleSyncKeypair(message *protobuf.SyncKeypair, fromLocalPa return dbKeypair, nil } -func (m *Messenger) HandleSyncAccountsPositions(state *ReceivedMessageState, message protobuf.SyncAccountsPositions) error { - accs, err := m.handleSyncAccountsPositions(&message) +func (m *Messenger) HandleSyncAccountsPositions(state *ReceivedMessageState, message *protobuf.SyncAccountsPositions, statusMessage *v1protocol.StatusMessage) error { + accs, err := m.handleSyncAccountsPositions(message) if err != nil { if err == ErrTryingToApplyOldWalletAccountsOrder || err == accounts.ErrAccountWrongPosition || @@ -3306,8 +3367,8 @@ func (m *Messenger) HandleSyncAccountsPositions(state *ReceivedMessageState, mes return nil } -func (m *Messenger) HandleSyncWatchOnlyAccount(state *ReceivedMessageState, message protobuf.SyncAccount) error { - acc, err := m.handleSyncWatchOnlyAccount(&message, false) +func (m *Messenger) HandleSyncAccount(state *ReceivedMessageState, message *protobuf.SyncAccount, statusMessage *v1protocol.StatusMessage) error { + acc, err := m.handleSyncWatchOnlyAccount(message, false) if err != nil { if err == ErrTryingToStoreOldWalletAccount { return nil @@ -3320,8 +3381,12 @@ func (m *Messenger) HandleSyncWatchOnlyAccount(state *ReceivedMessageState, mess return nil } -func (m *Messenger) HandleSyncKeypair(state *ReceivedMessageState, message protobuf.SyncKeypair, fromLocalPairing bool) error { - kp, err := m.handleSyncKeypair(&message, fromLocalPairing) +func (m *Messenger) HandleSyncKeypair(state *ReceivedMessageState, message *protobuf.SyncKeypair, statusMessage *v1protocol.StatusMessage) error { + return m.handleSyncKeypairInternal(state, message, false) +} + +func (m *Messenger) handleSyncKeypairInternal(state *ReceivedMessageState, message *protobuf.SyncKeypair, fromLocalPairing bool) error { + kp, err := m.handleSyncKeypair(message, fromLocalPairing) if err != nil { if err == ErrTryingToStoreOldKeypair { return nil @@ -3334,7 +3399,7 @@ func (m *Messenger) HandleSyncKeypair(state *ReceivedMessageState, message proto return nil } -func (m *Messenger) HandleSyncContactRequestDecision(state *ReceivedMessageState, message protobuf.SyncContactRequestDecision) error { +func (m *Messenger) HandleSyncContactRequestDecision(state *ReceivedMessageState, message *protobuf.SyncContactRequestDecision, statusMessage *v1protocol.StatusMessage) error { var err error var response *MessengerResponse @@ -3351,3 +3416,144 @@ func (m *Messenger) HandleSyncContactRequestDecision(state *ReceivedMessageState return nil } + +func (m *Messenger) HandlePushNotificationRegistration(state *ReceivedMessageState, encryptedRegistration []byte, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationServer == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationServer.HandlePushNotificationRegistration(publicKey, encryptedRegistration) +} + +func (m *Messenger) HandlePushNotificationResponse(state *ReceivedMessageState, message *protobuf.PushNotificationResponse, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationClient == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationClient.HandlePushNotificationResponse(publicKey, message) +} + +func (m *Messenger) HandlePushNotificationRegistrationResponse(state *ReceivedMessageState, message *protobuf.PushNotificationRegistrationResponse, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationClient == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationClient.HandlePushNotificationRegistrationResponse(publicKey, message) +} + +func (m *Messenger) HandlePushNotificationQuery(state *ReceivedMessageState, message *protobuf.PushNotificationQuery, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationServer == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationServer.HandlePushNotificationQuery(publicKey, statusMessage.ID, message) +} + +func (m *Messenger) HandlePushNotificationQueryResponse(state *ReceivedMessageState, message *protobuf.PushNotificationQueryResponse, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationClient == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationClient.HandlePushNotificationQueryResponse(publicKey, message) +} + +func (m *Messenger) HandlePushNotificationRequest(state *ReceivedMessageState, message *protobuf.PushNotificationRequest, statusMessage *v1protocol.StatusMessage) error { + if m.pushNotificationServer == nil { + return nil + } + publicKey := state.CurrentMessageState.PublicKey + + return m.pushNotificationServer.HandlePushNotificationRequest(publicKey, statusMessage.ID, message) +} + +func (m *Messenger) HandleCommunityDescription(state *ReceivedMessageState, message *protobuf.CommunityDescription, statusMessage *v1protocol.StatusMessage) error { + + err := m.handleCommunityDescription(state, state.CurrentMessageState.PublicKey, message, statusMessage.DecryptedPayload) + if err != nil { + m.logger.Warn("failed to handle CommunityDescription", zap.Error(err)) + return err + } + + //if community was among requested ones, send its info and remove filter + for communityID := range m.requestedCommunities { + if _, ok := state.Response.communities[communityID]; ok { + m.passStoredCommunityInfoToSignalHandler(communityID) + } + } + return nil +} + +func (m *Messenger) HandleSyncBookmark(state *ReceivedMessageState, message *protobuf.SyncBookmark, statusMessage *v1protocol.StatusMessage) error { + bookmark := &browsers.Bookmark{ + URL: message.Url, + Name: message.Name, + ImageURL: message.ImageUrl, + Removed: message.Removed, + Clock: message.Clock, + } + state.AllBookmarks[message.Url] = bookmark + return nil +} + +func (m *Messenger) HandleSyncClearHistory(state *ReceivedMessageState, message *protobuf.SyncClearHistory, statusMessage *v1protocol.StatusMessage) error { + chatID := message.ChatId + existingChat, ok := state.AllChats.Load(chatID) + if !ok { + return ErrChatNotFound + } + + if existingChat.DeletedAtClockValue >= message.ClearedAt { + return nil + } + + err := m.persistence.ClearHistoryFromSyncMessage(existingChat, message.ClearedAt) + if err != nil { + return err + } + + if existingChat.Public() { + err = m.transport.ClearProcessedMessageIDsCache() + if err != nil { + return err + } + } + + state.AllChats.Store(chatID, existingChat) + state.Response.AddChat(existingChat) + state.Response.AddClearedHistory(&ClearedHistory{ + ClearedAt: message.ClearedAt, + ChatID: chatID, + }) + return nil +} + +func (m *Messenger) HandleSyncTrustedUser(state *ReceivedMessageState, message *protobuf.SyncTrustedUser, statusMessage *v1protocol.StatusMessage) error { + updated, err := m.verificationDatabase.UpsertTrustStatus(message.Id, verification.TrustStatus(message.Status), message.Clock) + if err != nil { + return err + } + + if updated { + state.AllTrustStatus[message.Id] = verification.TrustStatus(message.Status) + + contact, ok := m.allContacts.Load(message.Id) + if !ok { + m.logger.Info("contact not found") + return nil + } + + contact.TrustStatus = verification.TrustStatus(message.Status) + m.allContacts.Store(contact.ID, contact) + state.ModifiedContacts.Store(contact.ID, true) + } + + return nil +} +func (m *Messenger) HandleCommunityMessageArchiveMagnetlink(state *ReceivedMessageState, message *protobuf.CommunityMessageArchiveMagnetlink, statusMessage *v1protocol.StatusMessage) error { + return m.HandleHistoryArchiveMagnetlinkMessage(state, state.CurrentMessageState.PublicKey, message.MagnetUri, message.Clock) +} diff --git a/protocol/messenger_handler_test.go b/protocol/messenger_handler_test.go index 204103fa4..943099983 100644 --- a/protocol/messenger_handler_test.go +++ b/protocol/messenger_handler_test.go @@ -184,7 +184,7 @@ func (s *EventToSystemMessageSuite) TestHandleMembershipUpdate() { AllChats: s.m.allChats, } - err = s.m.HandleMembershipUpdate(state, nil, *rawMembershipUpdateMessage2, defaultSystemMessagesTranslations) + err = s.m.HandleMembershipUpdate(state, nil, rawMembershipUpdateMessage2, defaultSystemMessagesTranslations) s.Require().NoError(err) s.Require().Len(state.Response.Notifications(), 1) s.Require().Equal(state.Response.Notifications()[0].Category, localnotifications.CategoryGroupInvite) @@ -202,7 +202,7 @@ func (s *EventToSystemMessageSuite) TestHandleMembershipUpdate() { // If the same response is handled, it should not show another notification & the chat should remain inactive state.Response = &MessengerResponse{} - err = s.m.HandleMembershipUpdate(state, chat, *rawMembershipUpdateMessage2, defaultSystemMessagesTranslations) + err = s.m.HandleMembershipUpdate(state, chat, rawMembershipUpdateMessage2, defaultSystemMessagesTranslations) s.Require().NoError(err) s.Require().Len(state.Response.Notifications(), 0) s.Require().Len(state.Response.Chats(), 1) diff --git a/protocol/messenger_handlers.go b/protocol/messenger_handlers.go new file mode 100644 index 000000000..20cb1a353 --- /dev/null +++ b/protocol/messenger_handlers.go @@ -0,0 +1,1610 @@ +//nolint +// Code generated by generate_handlers.go. DO NOT EDIT. +// source: geneate_handlers.go + +package protocol + +import ( + "errors" + + "github.com/golang/protobuf/proto" + "go.uber.org/zap" + + "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/protocol/transport" + v1protocol "github.com/status-im/status-go/protocol/v1" +) + +func (m *Messenger) dispatchToHandler(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + switch msg.Type { + + case protobuf.ApplicationMetadataMessage_CHAT_MESSAGE: + return m.handleChatMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_CONTACT_UPDATE: + return m.handleContactUpdateProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE: + return m.handleMembershipUpdateMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION: + return m.handleSyncPairInstallationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION: + return m.handleRequestAddressForTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION: + return m.handleAcceptRequestAddressForTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION: + return m.handleDeclineRequestAddressForTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_REQUEST_TRANSACTION: + return m.handleRequestTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SEND_TRANSACTION: + return m.handleSendTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION: + return m.handleDeclineRequestTransactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2: + return m.handleSyncInstallationContactV2Protobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT: + return m.handleSyncInstallationAccountProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_PUBLIC_CHAT: + return m.handleSyncInstallationPublicChatProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT: + return m.handleContactCodeAdvertisementProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION: + return m.handlePushNotificationRegistrationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION_RESPONSE: + return m.handlePushNotificationRegistrationResponseProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY: + return m.handlePushNotificationQueryProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY_RESPONSE: + return m.handlePushNotificationQueryResponseProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REQUEST: + return m.handlePushNotificationRequestProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_RESPONSE: + return m.handlePushNotificationResponseProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_EMOJI_REACTION: + return m.handleEmojiReactionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_GROUP_CHAT_INVITATION: + return m.handleGroupChatInvitationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_CHAT_IDENTITY: + return m.handleChatIdentityProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION: + return m.handleCommunityDescriptionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN: + return m.handleCommunityRequestToJoinProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_PIN_MESSAGE: + return m.handlePinMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_EDIT_MESSAGE: + return m.handleEditMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_STATUS_UPDATE: + return m.handleStatusUpdateProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_DELETE_MESSAGE: + return m.handleDeleteMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_COMMUNITY: + return m.handleSyncInstallationCommunityProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_ANONYMOUS_METRIC_BATCH: + return m.handleAnonymousMetricBatchProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_CHAT_REMOVED: + return m.handleSyncChatRemovedProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_CHAT_MESSAGES_READ: + return m.handleSyncChatMessagesReadProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_BACKUP: + return m.handleBackupProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_READ: + return m.handleSyncActivityCenterReadProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_ACCEPTED: + return m.handleSyncActivityCenterAcceptedProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DISMISSED: + return m.handleSyncActivityCenterDismissedProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_BOOKMARK: + return m.handleSyncBookmarkProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_CLEAR_HISTORY: + return m.handleSyncClearHistoryProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_SETTING: + return m.handleSyncSettingProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK: + return m.handleCommunityMessageArchiveMagnetlinkProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURES: + return m.handleSyncProfilePicturesProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNT: + return m.handleSyncAccountProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_ACCEPT_CONTACT_REQUEST: + return m.handleAcceptContactRequestProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_RETRACT_CONTACT_REQUEST: + return m.handleRetractContactRequestProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN_RESPONSE: + return m.handleCommunityRequestToJoinResponseProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_COMMUNITY_SETTINGS: + return m.handleSyncCommunitySettingsProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_REQUEST_CONTACT_VERIFICATION: + return m.handleRequestContactVerificationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_ACCEPT_CONTACT_VERIFICATION: + return m.handleAcceptContactVerificationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_DECLINE_CONTACT_VERIFICATION: + return m.handleDeclineContactVerificationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_TRUSTED_USER: + return m.handleSyncTrustedUserProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_VERIFICATION_REQUEST: + return m.handleSyncVerificationRequestProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_CONTACT_REQUEST_DECISION: + return m.handleSyncContactRequestDecisionProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE: + return m.handleCommunityRequestToLeaveProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE: + return m.handleSyncDeleteForMeMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_SAVED_ADDRESS: + return m.handleSyncSavedAddressProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN: + return m.handleCommunityCancelRequestToJoinProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_CANCEL_CONTACT_VERIFICATION: + return m.handleCancelContactVerificationProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_KEYPAIR: + return m.handleSyncKeypairProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_SOCIAL_LINKS: + return m.handleSyncSocialLinksProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ENS_USERNAME_DETAIL: + return m.handleSyncEnsUsernameDetailProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATIONS: + return m.handleSyncActivityCenterNotificationsProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE: + return m.handleSyncActivityCenterNotificationStateProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE: + return m.handleCommunityEventsMessageProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES: + return m.handleCommunityEditSharedAddressesProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNT_CUSTOMIZATION_COLOR: + return m.handleSyncAccountCustomizationColorProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS: + return m.handleSyncAccountsPositionsProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED: + return m.handleCommunityEventsMessageRejectedProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE: + return m.handleCommunityPrivilegedUserSyncMessageProtobuf(messageState, protoBytes, msg, filter) + + default: + m.logger.Info("protobuf type not found", zap.String("type", string(msg.Type))) + return errors.New("protobuf type not found") + } + return nil +} + + +func (m *Messenger) handleChatMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling ChatMessage") + + + + p := &protobuf.ChatMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleChatMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleContactUpdateProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling ContactUpdate") + + + + p := &protobuf.ContactUpdate{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleContactUpdate(messageState, p, msg) + +} + + +func (m *Messenger) handleMembershipUpdateMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling MembershipUpdateMessage") + + + + p := &protobuf.MembershipUpdateMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleMembershipUpdateMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncPairInstallationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncPairInstallation") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncPairInstallation{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncPairInstallation(messageState, p, msg) + +} + + +func (m *Messenger) handleRequestAddressForTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling RequestAddressForTransaction") + + + + p := &protobuf.RequestAddressForTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleRequestAddressForTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleAcceptRequestAddressForTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling AcceptRequestAddressForTransaction") + + + + p := &protobuf.AcceptRequestAddressForTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleAcceptRequestAddressForTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleDeclineRequestAddressForTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling DeclineRequestAddressForTransaction") + + + + p := &protobuf.DeclineRequestAddressForTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleDeclineRequestAddressForTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleRequestTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling RequestTransaction") + + + + p := &protobuf.RequestTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleRequestTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleSendTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SendTransaction") + + + + p := &protobuf.SendTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSendTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleDeclineRequestTransactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling DeclineRequestTransaction") + + + + p := &protobuf.DeclineRequestTransaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleDeclineRequestTransaction(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncInstallationContactV2Protobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncInstallationContactV2") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncInstallationContactV2{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncInstallationContactV2(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncInstallationAccountProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncInstallationAccount") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncInstallationAccount{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncInstallationAccount(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncInstallationPublicChatProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncInstallationPublicChat") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncInstallationPublicChat{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncInstallationPublicChat(messageState, p, msg) + +} + + +func (m *Messenger) handleContactCodeAdvertisementProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling ContactCodeAdvertisement") + + + + p := &protobuf.ContactCodeAdvertisement{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleContactCodeAdvertisement(messageState, p, msg) + +} + + +func (m *Messenger) handlePushNotificationRegistrationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationRegistration") + + + + return m.HandlePushNotificationRegistration(messageState, protoBytes, msg) + +} + + +func (m *Messenger) handlePushNotificationRegistrationResponseProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationRegistrationResponse") + + + + p := &protobuf.PushNotificationRegistrationResponse{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePushNotificationRegistrationResponse(messageState, p, msg) + +} + + +func (m *Messenger) handlePushNotificationQueryProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationQuery") + + + + p := &protobuf.PushNotificationQuery{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePushNotificationQuery(messageState, p, msg) + +} + + +func (m *Messenger) handlePushNotificationQueryResponseProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationQueryResponse") + + + + p := &protobuf.PushNotificationQueryResponse{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePushNotificationQueryResponse(messageState, p, msg) + +} + + +func (m *Messenger) handlePushNotificationRequestProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationRequest") + + + + p := &protobuf.PushNotificationRequest{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePushNotificationRequest(messageState, p, msg) + +} + + +func (m *Messenger) handlePushNotificationResponseProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PushNotificationResponse") + + + + p := &protobuf.PushNotificationResponse{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePushNotificationResponse(messageState, p, msg) + +} + + +func (m *Messenger) handleEmojiReactionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling EmojiReaction") + + + + p := &protobuf.EmojiReaction{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleEmojiReaction(messageState, p, msg) + +} + + +func (m *Messenger) handleGroupChatInvitationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling GroupChatInvitation") + + + + p := &protobuf.GroupChatInvitation{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleGroupChatInvitation(messageState, p, msg) + +} + + +func (m *Messenger) handleChatIdentityProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling ChatIdentity") + + + + p := &protobuf.ChatIdentity{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleChatIdentity(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityDescriptionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityDescription") + + + + p := &protobuf.CommunityDescription{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityDescription(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityRequestToJoinProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityRequestToJoin") + + + + p := &protobuf.CommunityRequestToJoin{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityRequestToJoin(messageState, p, msg) + +} + + +func (m *Messenger) handlePinMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling PinMessage") + + + + p := &protobuf.PinMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandlePinMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleEditMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling EditMessage") + + + + p := &protobuf.EditMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleEditMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleStatusUpdateProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling StatusUpdate") + + + + p := &protobuf.StatusUpdate{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleStatusUpdate(messageState, p, msg) + +} + + +func (m *Messenger) handleDeleteMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling DeleteMessage") + + + + p := &protobuf.DeleteMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleDeleteMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncInstallationCommunityProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncInstallationCommunity") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncInstallationCommunity{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncInstallationCommunity(messageState, p, msg) + +} + + +func (m *Messenger) handleAnonymousMetricBatchProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling AnonymousMetricBatch") + + + + p := &protobuf.AnonymousMetricBatch{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleAnonymousMetricBatch(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncChatRemovedProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncChatRemoved") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncChatRemoved{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncChatRemoved(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncChatMessagesReadProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncChatMessagesRead") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncChatMessagesRead{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncChatMessagesRead(messageState, p, msg) + +} + + +func (m *Messenger) handleBackupProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling Backup") + + + + p := &protobuf.Backup{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleBackup(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncActivityCenterReadProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncActivityCenterRead") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncActivityCenterRead{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncActivityCenterRead(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncActivityCenterAcceptedProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncActivityCenterAccepted") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncActivityCenterAccepted{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncActivityCenterAccepted(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncActivityCenterDismissedProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncActivityCenterDismissed") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncActivityCenterDismissed{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncActivityCenterDismissed(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncBookmarkProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncBookmark") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncBookmark{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncBookmark(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncClearHistoryProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncClearHistory") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncClearHistory{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncClearHistory(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncSettingProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncSetting") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncSetting{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncSetting(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityMessageArchiveMagnetlinkProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityMessageArchiveMagnetlink") + + + + p := &protobuf.CommunityMessageArchiveMagnetlink{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityMessageArchiveMagnetlink(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncProfilePicturesProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncProfilePictures") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncProfilePictures{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncProfilePictures(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncAccountProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncAccount") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncAccount{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncAccount(messageState, p, msg) + +} + + +func (m *Messenger) handleAcceptContactRequestProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling AcceptContactRequest") + + + + p := &protobuf.AcceptContactRequest{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleAcceptContactRequest(messageState, p, msg) + +} + + +func (m *Messenger) handleRetractContactRequestProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling RetractContactRequest") + + + + p := &protobuf.RetractContactRequest{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleRetractContactRequest(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityRequestToJoinResponseProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityRequestToJoinResponse") + + + + p := &protobuf.CommunityRequestToJoinResponse{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityRequestToJoinResponse(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncCommunitySettingsProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncCommunitySettings") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncCommunitySettings{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncCommunitySettings(messageState, p, msg) + +} + + +func (m *Messenger) handleRequestContactVerificationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling RequestContactVerification") + + + + p := &protobuf.RequestContactVerification{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleRequestContactVerification(messageState, p, msg) + +} + + +func (m *Messenger) handleAcceptContactVerificationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling AcceptContactVerification") + + + + p := &protobuf.AcceptContactVerification{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleAcceptContactVerification(messageState, p, msg) + +} + + +func (m *Messenger) handleDeclineContactVerificationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling DeclineContactVerification") + + + + p := &protobuf.DeclineContactVerification{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleDeclineContactVerification(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncTrustedUserProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncTrustedUser") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncTrustedUser{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncTrustedUser(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncVerificationRequestProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncVerificationRequest") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncVerificationRequest{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncVerificationRequest(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncContactRequestDecisionProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncContactRequestDecision") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncContactRequestDecision{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncContactRequestDecision(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityRequestToLeaveProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityRequestToLeave") + + + + p := &protobuf.CommunityRequestToLeave{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityRequestToLeave(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncDeleteForMeMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncDeleteForMeMessage") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncDeleteForMeMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncDeleteForMeMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncSavedAddressProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncSavedAddress") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncSavedAddress{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncSavedAddress(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityCancelRequestToJoinProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityCancelRequestToJoin") + + + + p := &protobuf.CommunityCancelRequestToJoin{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityCancelRequestToJoin(messageState, p, msg) + +} + + +func (m *Messenger) handleCancelContactVerificationProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CancelContactVerification") + + + + p := &protobuf.CancelContactVerification{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCancelContactVerification(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncKeypairProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncKeypair") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncKeypair{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncKeypair(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncSocialLinksProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncSocialLinks") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncSocialLinks{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncSocialLinks(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncEnsUsernameDetailProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncEnsUsernameDetail") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncEnsUsernameDetail{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncEnsUsernameDetail(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncActivityCenterNotificationsProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncActivityCenterNotifications") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncActivityCenterNotifications{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncActivityCenterNotifications(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncActivityCenterNotificationStateProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncActivityCenterNotificationState") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncActivityCenterNotificationState{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncActivityCenterNotificationState(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityEventsMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityEventsMessage") + + + + p := &protobuf.CommunityEventsMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityEventsMessage(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityEditSharedAddressesProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityEditSharedAddresses") + + + + p := &protobuf.CommunityEditSharedAddresses{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityEditSharedAddresses(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncAccountCustomizationColorProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncAccountCustomizationColor") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncAccountCustomizationColor{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncAccountCustomizationColor(messageState, p, msg) + +} + + +func (m *Messenger) handleSyncAccountsPositionsProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncAccountsPositions") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncAccountsPositions{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleSyncAccountsPositions(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityEventsMessageRejectedProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityEventsMessageRejected") + + + + p := &protobuf.CommunityEventsMessageRejected{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityEventsMessageRejected(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityPrivilegedUserSyncMessageProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityPrivilegedUserSyncMessage") + + + + p := &protobuf.CommunityPrivilegedUserSyncMessage{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.Topic, filter.ChatID, msg.Type, p) + + return m.HandleCommunityPrivilegedUserSyncMessage(messageState, p, msg) + +} + + diff --git a/protocol/messenger_mailserver.go b/protocol/messenger_mailserver.go index 2310232c1..232807e8b 100644 --- a/protocol/messenger_mailserver.go +++ b/protocol/messenger_mailserver.go @@ -563,7 +563,7 @@ func (m *Messenger) calculateGapForChat(chat *Chat, from uint32) (*common.Messag timestamp := m.getTimesource().GetCurrentTime() message := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chat.ID, Text: "Gap message", MessageType: protobuf.MessageType_SYSTEM_MESSAGE_GAP, diff --git a/protocol/messenger_messages.go b/protocol/messenger_messages.go index f2baf7168..5812d9cc6 100644 --- a/protocol/messenger_messages.go +++ b/protocol/messenger_messages.go @@ -54,7 +54,7 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) - editMessage := &EditMessage{} + editMessage := NewEditMessage() editMessage.Text = request.Text editMessage.ContentType = request.ContentType @@ -62,7 +62,7 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa editMessage.MessageId = message.ID editMessage.Clock = clock - err = m.applyEditMessage(&editMessage.EditMessage, message) + err = m.applyEditMessage(editMessage.EditMessage, message) if err != nil { return nil, err } @@ -180,7 +180,7 @@ func (m *Messenger) DeleteMessageAndSend(ctx context.Context, messageID string) clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) - deleteMessage := &DeleteMessage{} + deleteMessage := NewDeleteMessage() deleteMessage.ChatId = message.ChatId deleteMessage.MessageId = messageID deleteMessage.Clock = clock @@ -297,7 +297,7 @@ func (m *Messenger) DeleteMessageForMeAndSync(ctx context.Context, localChatID s response.AddChat(chat) err = m.withChatClock(func(chatID string, clock uint64) error { - deletedForMeMessage := &protobuf.DeleteForMeMessage{ + deletedForMeMessage := &protobuf.SyncDeleteForMeMessage{ MessageId: messageID, Clock: clock, } @@ -341,7 +341,7 @@ func (m *Messenger) applyEditMessage(editMessage *protobuf.EditMessage, message // Save original message as edit so we can retrieve history if message.EditedAt == 0 { - originalEdit := EditMessage{} + originalEdit := NewEditMessage() originalEdit.Clock = message.Clock originalEdit.LocalChatID = message.LocalChatID originalEdit.MessageId = message.ID @@ -447,7 +447,7 @@ func (m *Messenger) SendOneToOneMessage(request *requests.SendOneToOneMessage) ( } } - message := &common.Message{} + message := common.NewMessage() message.Text = request.Message message.ChatId = chatID message.ContentType = protobuf.ChatMessage_TEXT_PLAIN @@ -467,7 +467,7 @@ func (m *Messenger) SendGroupChatMessage(request *requests.SendGroupChatMessage) return nil, ErrChatNotFound } - message := &common.Message{} + message := common.NewMessage() message.Text = request.Message message.ChatId = chatID message.ContentType = protobuf.ChatMessage_TEXT_PLAIN diff --git a/protocol/messenger_pin_message_test.go b/protocol/messenger_pin_message_test.go index 425dd3375..d86cc38c4 100644 --- a/protocol/messenger_pin_message_test.go +++ b/protocol/messenger_pin_message_test.go @@ -45,9 +45,8 @@ func (s *MessengerPinMessageSuite) TestPinMessage() { s.Require().NoError(err) s.Require().Len(response.Chats(), 1) - pinMessage := &common.PinMessage{ - LocalChatID: theirChat.ID, - } + pinMessage := common.NewPinMessage() + pinMessage.LocalChatID = theirChat.ID pinMessage.MessageId = inputMessage.ID pinMessage.Pinned = true pinMessage.ChatId = theirChat.ID @@ -133,7 +132,7 @@ func (s *MessengerPinMessageSuite) TestPinMessageOutOfOrder() { &Contact{ID: s.m.myHexIdentity()}, 1000, handlePinMessageResponse, - unpinMessage, + &unpinMessage, ) s.Require().NoError(err) @@ -156,7 +155,7 @@ func (s *MessengerPinMessageSuite) TestPinMessageOutOfOrder() { &Contact{ID: s.m.myHexIdentity()}, 1000, handlePinMessageResponse, - pinMessage, + &pinMessage, ) s.Require().NoError(err) @@ -180,7 +179,7 @@ func (s *MessengerPinMessageSuite) TestPinMessageOutOfOrder() { &Contact{ID: s.m.myHexIdentity()}, 1000, handlePinMessageResponse, - pinMessage, + &pinMessage, ) s.Require().NoError(err) diff --git a/protocol/messenger_pin_messages.go b/protocol/messenger_pin_messages.go index d95fa17c3..474c9af45 100644 --- a/protocol/messenger_pin_messages.go +++ b/protocol/messenger_pin_messages.go @@ -87,7 +87,7 @@ func (m *Messenger) sendPinMessage(ctx context.Context, message *common.PinMessa return nil, err } chatMessage := &common.Message{ - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: message.Clock, Timestamp: m.getTimesource().GetCurrentTime(), ChatId: chat.ID, diff --git a/protocol/messenger_saved_address.go b/protocol/messenger_saved_address.go index 98134d396..a84ff44a6 100644 --- a/protocol/messenger_saved_address.go +++ b/protocol/messenger_saved_address.go @@ -9,6 +9,7 @@ import ( gethcommon "github.com/ethereum/go-ethereum/common" "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/protobuf" + v1protocol "github.com/status-im/status-go/protocol/v1" "github.com/status-im/status-go/services/wallet" ) @@ -33,14 +34,14 @@ func (m *Messenger) garbageCollectRemovedSavedAddresses() error { return m.savedAddressesManager.DeleteSoftRemovedSavedAddresses(uint64(time.Now().AddDate(0, 0, -30).Unix())) } -func (m *Messenger) dispatchSyncSavedAddress(ctx context.Context, syncMessage protobuf.SyncSavedAddress, rawMessageHandler RawMessageHandler) error { +func (m *Messenger) dispatchSyncSavedAddress(ctx context.Context, syncMessage *protobuf.SyncSavedAddress, rawMessageHandler RawMessageHandler) error { if !m.hasPairedDevices() { return nil } clock, chat := m.getLastClockWithRelatedChat() - encodedMessage, err := proto.Marshal(&syncMessage) + encodedMessage, err := proto.Marshal(syncMessage) if err != nil { return err } @@ -62,7 +63,7 @@ func (m *Messenger) dispatchSyncSavedAddress(ctx context.Context, syncMessage pr } func (m *Messenger) syncNewSavedAddress(ctx context.Context, savedAddress *wallet.SavedAddress, updateClock uint64, rawMessageHandler RawMessageHandler) error { - return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{ + return m.dispatchSyncSavedAddress(ctx, &protobuf.SyncSavedAddress{ Address: savedAddress.Address.Bytes(), Name: savedAddress.Name, Favourite: savedAddress.Favourite, @@ -75,7 +76,7 @@ func (m *Messenger) syncNewSavedAddress(ctx context.Context, savedAddress *walle } func (m *Messenger) syncDeletedSavedAddress(ctx context.Context, address gethcommon.Address, ens string, isTest bool, updateClock uint64, rawMessageHandler RawMessageHandler) error { - return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{ + return m.dispatchSyncSavedAddress(ctx, &protobuf.SyncSavedAddress{ Address: address.Bytes(), UpdateClock: updateClock, Removed: true, @@ -97,7 +98,7 @@ func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.Sa return } -func (m *Messenger) handleSyncSavedAddress(state *ReceivedMessageState, syncMessage protobuf.SyncSavedAddress) (err error) { +func (m *Messenger) HandleSyncSavedAddress(state *ReceivedMessageState, syncMessage *protobuf.SyncSavedAddress, statusMessage *v1protocol.StatusMessage) (err error) { address := gethcommon.BytesToAddress(syncMessage.Address) if syncMessage.Removed { _, err = m.savedAddressesManager.DeleteSavedAddress( diff --git a/protocol/messenger_share_image_test.go b/protocol/messenger_share_image_test.go index 69f45ab4f..b565c8afc 100644 --- a/protocol/messenger_share_image_test.go +++ b/protocol/messenger_share_image_test.go @@ -74,7 +74,7 @@ func buildImageMessage(s *MessengerShareMessageSuite, chat Chat) *common.Message s.Require().NoError(err) clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.ChatId = chat.ID message.Clock = clock message.Timestamp = timestamp diff --git a/protocol/messenger_status_updates.go b/protocol/messenger_status_updates.go index 04825349e..1250bd0c8 100644 --- a/protocol/messenger_status_updates.go +++ b/protocol/messenger_status_updates.go @@ -13,6 +13,7 @@ import ( "github.com/status-im/status-go/protocol/communities" "github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/transport" + v1protocol "github.com/status-im/status-go/protocol/v1" ) func (m *Messenger) GetCurrentUserStatus() (*UserStatus, error) { @@ -231,8 +232,8 @@ func (m *Messenger) SetUserStatus(ctx context.Context, newStatus int, newCustomT return m.sendUserStatus(ctx, *currStatus) } -func (m *Messenger) HandleStatusUpdate(state *ReceivedMessageState, statusMessage protobuf.StatusUpdate) error { - if err := ValidateStatusUpdate(statusMessage); err != nil { +func (m *Messenger) HandleStatusUpdate(state *ReceivedMessageState, message *protobuf.StatusUpdate, statusMessage *v1protocol.StatusMessage) error { + if err := ValidateStatusUpdate(message); err != nil { return err } @@ -243,17 +244,17 @@ func (m *Messenger) HandleStatusUpdate(state *ReceivedMessageState, statusMessag return err } - if currentStatus.Clock >= statusMessage.Clock { + if currentStatus.Clock >= message.Clock { return nil // older status message, or status does not change ignoring it } - newStatus := ToUserStatus(statusMessage) + newStatus := ToUserStatus(message) err = m.settings.SaveSettingField(settings.CurrentUserStatus, newStatus) if err != nil { return err } state.Response.SetCurrentStatus(newStatus) } else { - statusUpdate := ToUserStatus(statusMessage) + statusUpdate := ToUserStatus(message) statusUpdate.PublicKey = state.CurrentMessageState.Contact.ID err := m.persistence.InsertStatusUpdate(statusUpdate) diff --git a/protocol/messenger_sync_raw_messages.go b/protocol/messenger_sync_raw_messages.go index cd08700d1..42917481a 100644 --- a/protocol/messenger_sync_raw_messages.go +++ b/protocol/messenger_sync_raw_messages.go @@ -43,7 +43,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er state.AllContacts.Store(message.PublicKey, contact) } currentMessageState := &CurrentMessageState{ - Message: protobuf.ChatMessage{ + Message: &protobuf.ChatMessage{ Clock: message.Clock, }, MessageID: " ", // make it not empty to bypass this validation: https://github.com/status-im/status-go/blob/7cd7430d3141b08f7c455d7918f4160ea8fd0559/protocol/messenger_handler.go#L325 @@ -52,7 +52,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er Contact: contact, } state.CurrentMessageState = currentMessageState - err = m.HandleContactUpdate(state, message) + err = m.HandleContactUpdate(state, &message, nil) if err != nil { m.logger.Warn("failed to HandleContactUpdate when HandleSyncRawMessages", zap.Error(err)) continue @@ -63,13 +63,10 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - addedChat := m.HandleSyncInstallationPublicChat(state, message) - if addedChat != nil { - _, err = m.createPublicChat(addedChat.ID, state.Response) - if err != nil { - m.logger.Error("error createPublicChat when HandleSyncRawMessages", zap.Error(err)) - continue - } + err = m.HandleSyncInstallationPublicChat(state, &message, nil) + if err != nil { + m.logger.Error("error createPublicChat when HandleSyncRawMessages", zap.Error(err)) + continue } case protobuf.ApplicationMetadataMessage_SYNC_CHAT_REMOVED: var message protobuf.SyncChatRemoved @@ -77,7 +74,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncChatRemoved(state, message) + err = m.HandleSyncChatRemoved(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncChatRemoved when HandleSyncRawMessages", zap.Error(err)) continue @@ -88,7 +85,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncChatMessagesRead(state, message) + err = m.HandleSyncChatMessagesRead(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncChatMessagesRead when HandleSyncRawMessages", zap.Error(err)) continue @@ -99,29 +96,29 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncClearHistory(state, message) + err = m.HandleSyncClearHistory(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncClearHistory when HandleSyncRawMessages", zap.Error(err)) continue } - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT: + case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2: var message protobuf.SyncInstallationContactV2 err := proto.Unmarshal(rawMessage.GetPayload(), &message) if err != nil { return err } - err = m.HandleSyncInstallationContact(state, message) + err = m.HandleSyncInstallationContactV2(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncInstallationContact when HandleSyncRawMessages", zap.Error(err)) continue } case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_COMMUNITY: - var message protobuf.SyncCommunity + var message protobuf.SyncInstallationCommunity err := proto.Unmarshal(rawMessage.GetPayload(), &message) if err != nil { return err } - err = m.handleSyncCommunity(state, message) + err = m.handleSyncInstallationCommunity(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncCommunity when HandleSyncRawMessages", zap.Error(err)) continue @@ -132,7 +129,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncBookmark(state, message) + err = m.HandleSyncBookmark(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncBookmark when HandleSyncRawMessages", zap.Error(err)) continue @@ -143,7 +140,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncTrustedUser(state, message) + err = m.HandleSyncTrustedUser(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncTrustedUser when HandleSyncRawMessages", zap.Error(err)) continue @@ -154,7 +151,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncVerificationRequest(state, message) + err = m.HandleSyncVerificationRequest(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncVerificationRequest when HandleSyncRawMessages", zap.Error(err)) continue @@ -165,18 +162,18 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncSetting(state, &message) + err = m.HandleSyncSetting(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncSetting when HandleSyncRawMessages", zap.Error(err)) continue } - case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURE: + case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURES: var message protobuf.SyncProfilePictures err := proto.Unmarshal(rawMessage.GetPayload(), &message) if err != nil { return err } - err = m.HandleSyncProfilePictures(state, message) + err = m.HandleSyncProfilePictures(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncProfilePictures when HandleSyncRawMessages", zap.Error(err)) continue @@ -187,7 +184,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncContactRequestDecision(state, message) + err = m.HandleSyncContactRequestDecision(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncContactRequestDecision when HandleSyncRawMessages", zap.Error(err)) continue @@ -198,7 +195,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncWatchOnlyAccount(state, message) + err = m.HandleSyncAccount(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncWatchOnlyAccount when HandleSyncRawMessages", zap.Error(err)) continue @@ -209,7 +206,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncKeypair(state, message, true) + err = m.handleSyncKeypairInternal(state, &message, true) if err != nil { m.logger.Error("failed to HandleSyncKeypair when HandleSyncRawMessages", zap.Error(err)) continue @@ -220,7 +217,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncAccountsPositions(state, message) + err = m.HandleSyncAccountsPositions(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncAccountsPositions when HandleSyncRawMessages", zap.Error(err)) continue @@ -231,7 +228,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncSavedAddress(state, message) + err = m.HandleSyncSavedAddress(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncSavedAddress when HandleSyncRawMessages", zap.Error(err)) continue @@ -242,7 +239,7 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.HandleSyncSocialLinks(state, message) + err = m.HandleSyncSocialLinks(state, &message, nil) if err != nil { m.logger.Error("failed to HandleSyncSocialLinks when HandleSyncRawMessages", zap.Error(err)) continue @@ -253,24 +250,24 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } - err = m.handleSyncEnsUsernameDetail(state, message) + err = m.HandleSyncEnsUsernameDetail(state, &message, nil) if err != nil { m.logger.Error("failed to handleSyncEnsUsernameDetail when HandleSyncRawMessages", zap.Error(err)) continue } case protobuf.ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE: - var message protobuf.DeleteForMeMessage + var message protobuf.SyncDeleteForMeMessage err := proto.Unmarshal(rawMessage.GetPayload(), &message) if err != nil { return err } - err = m.HandleDeleteForMeMessage(state, message) + err = m.HandleSyncDeleteForMeMessage(state, &message, nil) if err != nil { m.logger.Error("failed to HandleDeleteForMeMessage when HandleSyncRawMessages", zap.Error(err)) continue } - case protobuf.ApplicationMetadataMessage_PAIR_INSTALLATION: - var message protobuf.PairInstallation + case protobuf.ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION: + var message protobuf.SyncPairInstallation err := proto.Unmarshal(rawMessage.GetPayload(), &message) if err != nil { return err @@ -289,9 +286,9 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er }, }} m.handleInstallations(installations) - // set WhisperTimestamp to pass the validation in HandlePairInstallation + // set WhisperTimestamp to pass the validation in HandleSyncPairInstallation state.CurrentMessageState = &CurrentMessageState{WhisperTimestamp: message.Clock} - err = m.HandlePairInstallation(state, message) + err = m.HandleSyncPairInstallation(state, &message, nil) if err != nil { return err } diff --git a/protocol/messenger_test.go b/protocol/messenger_test.go index e1b154401..ef20fa640 100644 --- a/protocol/messenger_test.go +++ b/protocol/messenger_test.go @@ -183,7 +183,7 @@ func (s *MessengerSuite) TestInit() { func buildAudioMessage(s *MessengerSuite, chat Chat) *common.Message { clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "text-input-message" message.ChatId = chat.ID message.Clock = clock @@ -204,7 +204,7 @@ func buildAudioMessage(s *MessengerSuite, chat Chat) *common.Message { func buildTestMessage(chat Chat) *common.Message { clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "text-input-message" message.ChatId = chat.ID message.Clock = clock @@ -226,7 +226,7 @@ func buildTestMessage(chat Chat) *common.Message { func buildTestGapMessage(chat Chat) *common.Message { clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.ChatId = chat.ID message.Clock = clock message.Timestamp = timestamp @@ -380,7 +380,7 @@ func (s *MessengerSuite) TestSendPrivateOneToOne() { pkString := hex.EncodeToString(crypto.FromECDSAPub(&recipientKey.PublicKey)) chat := CreateOneToOneChat(pkString, &recipientKey.PublicKey, s.m.transport) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID chat.LastClockValue = uint64(100000000000000) err = s.m.SaveChat(chat) @@ -416,7 +416,7 @@ func (s *MessengerSuite) TestSendPrivateGroup() { _, err = s.m.AddMembersToGroupChat(context.Background(), chat.ID, members) s.NoError(err) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID chat.LastClockValue = uint64(100000000000000) err = s.m.SaveChat(chat) @@ -444,7 +444,7 @@ func (s *MessengerSuite) TestSendPrivateEmptyGroup() { chat := response.Chats()[0] - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID chat.LastClockValue = uint64(100000000000000) err = s.m.SaveChat(chat) @@ -1057,7 +1057,7 @@ func (s *MessengerSuite) TestChatPersistencePublic() { LastClockValue: 20, DeletedAtClockValue: 30, UnviewedMessagesCount: 40, - LastMessage: &common.Message{}, + LastMessage: common.NewMessage(), Highlight: false, } @@ -1078,7 +1078,7 @@ func (s *MessengerSuite) TestDeleteChat() { LastClockValue: 20, DeletedAtClockValue: 30, UnviewedMessagesCount: 40, - LastMessage: &common.Message{}, + LastMessage: common.NewMessage(), Highlight: false, } @@ -1102,7 +1102,7 @@ func (s *MessengerSuite) TestChatPersistenceUpdate() { LastClockValue: 20, DeletedAtClockValue: 30, UnviewedMessagesCount: 40, - LastMessage: &common.Message{}, + LastMessage: common.NewMessage(), Highlight: false, } @@ -1146,7 +1146,7 @@ func (s *MessengerSuite) TestChatPersistenceOneToOne() { LastClockValue: 20, DeletedAtClockValue: 30, UnviewedMessagesCount: 40, - LastMessage: &common.Message{}, + LastMessage: common.NewMessage(), Highlight: false, } @@ -1234,7 +1234,7 @@ func (s *MessengerSuite) TestChatPersistencePrivateGroupChat() { LastClockValue: 20, DeletedAtClockValue: 30, UnviewedMessagesCount: 40, - LastMessage: &common.Message{}, + LastMessage: common.NewMessage(), Highlight: false, } s.Require().NoError(s.m.SaveChat(chat)) @@ -1320,7 +1320,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-1", LocalChatID: chat2.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 1, Text: "test-1", Clock: 1, @@ -1330,7 +1330,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-2", LocalChatID: chat2.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 2, Text: "test-2", Clock: 2, @@ -1340,7 +1340,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-3", LocalChatID: chat2.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 3, Text: "test-3", Clock: 3, @@ -1351,7 +1351,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-4", LocalChatID: chat2.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 4, Text: "test-4", Clock: 4, @@ -1362,7 +1362,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-5", LocalChatID: chat2.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 5, Text: "test-5", Clock: 5, @@ -1373,7 +1373,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-6", LocalChatID: chat3.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 6, Text: "test-6", Clock: 6, @@ -1384,7 +1384,7 @@ func (s *MessengerSuite) TestBlockContact() { { ID: "test-7", LocalChatID: chat3.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ContentType: 7, Text: "test-7", Clock: 7, @@ -2161,7 +2161,7 @@ func (s *MessengerSuite) TestMessageJSON() { ID: "test-1", LocalChatID: "local-chat-id", Alias: "alias", - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: "remote-chat-id", ContentType: 0, Text: "test-1", @@ -2417,7 +2417,7 @@ func buildImageWithAlbumIDMessage(chat Chat, albumID string) (*common.Message, e } clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.ChatId = chat.ID message.Clock = clock message.Timestamp = timestamp diff --git a/protocol/migrations/migrations.go b/protocol/migrations/migrations.go index 44bd1c8b4..fb2e9e95b 100644 --- a/protocol/migrations/migrations.go +++ b/protocol/migrations/migrations.go @@ -111,7 +111,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -121,7 +120,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -129,7 +128,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -185,7 +184,7 @@ func _000001_initDownDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}} return a, nil } @@ -205,7 +204,7 @@ func _000001_initUpDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}} return a, nil } @@ -225,7 +224,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}} return a, nil } @@ -245,7 +244,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}} return a, nil } @@ -265,7 +264,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}} return a, nil } @@ -285,7 +284,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}} return a, nil } @@ -305,7 +304,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}} return a, nil } @@ -325,7 +324,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}} return a, nil } @@ -345,7 +344,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}} return a, nil } @@ -365,7 +364,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}} return a, nil } @@ -385,7 +384,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}} return a, nil } @@ -405,7 +404,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}} return a, nil } @@ -425,7 +424,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}} return a, nil } @@ -445,7 +444,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}} return a, nil } @@ -465,7 +464,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}} return a, nil } @@ -485,7 +484,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}} return a, nil } @@ -505,7 +504,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}} return a, nil } @@ -525,7 +524,7 @@ func _1603816533_add_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}} return a, nil } @@ -545,7 +544,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}} return a, nil } @@ -565,7 +564,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}} return a, nil } @@ -585,7 +584,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}} return a, nil } @@ -605,7 +604,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}} return a, nil } @@ -625,7 +624,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}} return a, nil } @@ -645,7 +644,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}} return a, nil } @@ -665,7 +664,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}} return a, nil } @@ -685,7 +684,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}} return a, nil } @@ -705,7 +704,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}} return a, nil } @@ -725,7 +724,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}} return a, nil } @@ -745,7 +744,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}} return a, nil } @@ -765,7 +764,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}} return a, nil } @@ -785,7 +784,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}} return a, nil } @@ -805,7 +804,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}} return a, nil } @@ -825,7 +824,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}} return a, nil } @@ -845,7 +844,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}} return a, nil } @@ -865,7 +864,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}} return a, nil } @@ -885,7 +884,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}} return a, nil } @@ -905,7 +904,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}} return a, nil } @@ -925,7 +924,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}} return a, nil } @@ -945,7 +944,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}} return a, nil } @@ -965,7 +964,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (* return nil, err } - info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}} return a, nil } @@ -985,7 +984,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}} return a, nil } @@ -1005,7 +1004,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}} return a, nil } @@ -1025,7 +1024,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}} return a, nil } @@ -1045,7 +1044,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}} return a, nil } @@ -1065,7 +1064,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}} return a, nil } @@ -1085,7 +1084,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}} return a, nil } @@ -1105,7 +1104,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}} return a, nil } @@ -1125,7 +1124,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}} return a, nil } @@ -1145,7 +1144,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}} return a, nil } @@ -1165,7 +1164,7 @@ func _1645034601_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}} return a, nil } @@ -1185,7 +1184,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}} return a, nil } @@ -1205,7 +1204,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}} return a, nil } @@ -1225,7 +1224,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}} return a, nil } @@ -1245,7 +1244,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}} return a, nil } @@ -1265,7 +1264,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}} return a, nil } @@ -1285,7 +1284,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}} return a, nil } @@ -1305,7 +1304,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}} return a, nil } @@ -1325,7 +1324,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}} return a, nil } @@ -1345,7 +1344,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}} return a, nil } @@ -1365,7 +1364,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}} return a, nil } @@ -1385,7 +1384,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}} return a, nil } @@ -1405,7 +1404,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}} return a, nil } @@ -1425,7 +1424,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}} return a, nil } @@ -1445,7 +1444,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}} return a, nil } @@ -1465,7 +1464,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}} return a, nil } @@ -1485,7 +1484,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}} return a, nil } @@ -1505,7 +1504,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}} return a, nil } @@ -1525,7 +1524,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}} return a, nil } @@ -1545,7 +1544,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}} return a, nil } @@ -1565,7 +1564,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}} return a, nil } @@ -1585,7 +1584,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}} return a, nil } @@ -1605,7 +1604,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}} return a, nil } @@ -1625,7 +1624,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}} return a, nil } @@ -1645,7 +1644,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}} return a, nil } @@ -1665,7 +1664,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}} return a, nil } @@ -1685,7 +1684,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql( return nil, err } - info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}} return a, nil } @@ -1705,7 +1704,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}} return a, nil } @@ -1725,7 +1724,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}} return a, nil } @@ -1745,7 +1744,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}} return a, nil } @@ -1765,7 +1764,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql( return nil, err } - info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}} return a, nil } @@ -1785,7 +1784,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}} return a, nil } @@ -1805,7 +1804,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}} return a, nil } @@ -1825,7 +1824,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}} return a, nil } @@ -1845,7 +1844,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}} return a, nil } @@ -1865,7 +1864,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}} return a, nil } @@ -1885,7 +1884,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}} return a, nil } @@ -1905,7 +1904,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}} return a, nil } @@ -1925,7 +1924,7 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}} return a, nil } @@ -1945,7 +1944,7 @@ func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}} return a, nil } @@ -1965,7 +1964,7 @@ func _1684175608_add_token_balancesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}} return a, nil } @@ -1985,7 +1984,7 @@ func _1684979808_sync_activity_center_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}} return a, nil } @@ -2005,7 +2004,7 @@ func _1685383829_add_communities_mute_tillUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}} return a, nil } @@ -2025,7 +2024,7 @@ func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}} return a, nil } @@ -2045,7 +2044,7 @@ func _1687370421_add_communities_muted_till_newUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}} return a, nil } @@ -2065,7 +2064,7 @@ func _1687416607_add_communities_check_channel_permission_responses_tableUpSql() return nil, err } - info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}} return a, nil } @@ -2085,7 +2084,7 @@ func _1687856939_add_community_tokens_decimalsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}} return a, nil } @@ -2105,7 +2104,7 @@ func _1687959987_modify_community_tokens_supply_as_stringUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}} return a, nil } @@ -2125,7 +2124,7 @@ func _1689258900_add_airdrop_address_to_revealed_addressesUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1689667416, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}} return a, nil } @@ -2145,7 +2144,7 @@ func _1689266326_create_communities_events_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1691488641, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}} return a, nil } @@ -2165,7 +2164,7 @@ func _1689931300_add_community_tokens_deployer_and_priv_levelUpSql() (*asset, er return nil, err } - info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1692086375, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}} return a, nil } @@ -2185,7 +2184,7 @@ func readmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}} return a, nil } @@ -2205,7 +2204,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}} return a, nil } @@ -2301,220 +2300,124 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "000001_init.down.db.sql": _000001_initDownDbSql, - - "000001_init.up.db.sql": _000001_initUpDbSql, - - "000002_add_last_ens_clock_value.up.sql": _000002_add_last_ens_clock_valueUpSql, - - "1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql, - - "1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql, - - "1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql, - - "1591277220_add_index_messages.up.sql": _1591277220_add_index_messagesUpSql, - - "1593087212_add_mute_chat_and_raw_message_fields.up.sql": _1593087212_add_mute_chat_and_raw_message_fieldsUpSql, - - "1595862781_add_audio_data.up.sql": _1595862781_add_audio_dataUpSql, - - "1595865249_create_emoji_reactions_table.up.sql": _1595865249_create_emoji_reactions_tableUpSql, - - "1596805115_create_group_chat_invitations_table.up.sql": _1596805115_create_group_chat_invitations_tableUpSql, - - "1597322655_add_invitation_admin_chat_field.up.sql": _1597322655_add_invitation_admin_chat_fieldUpSql, - - "1597757544_add_nickname.up.sql": _1597757544_add_nicknameUpSql, - - "1598955122_add_mentions.up.sql": _1598955122_add_mentionsUpSql, - - "1599641390_add_emoji_reactions_index.up.sql": _1599641390_add_emoji_reactions_indexUpSql, - - "1599720851_add_seen_index_remove_long_messages.up.sql": _1599720851_add_seen_index_remove_long_messagesUpSql, - - "1603198582_add_profile_chat_field.up.sql": _1603198582_add_profile_chat_fieldUpSql, - - "1603816533_add_links.up.sql": _1603816533_add_linksUpSql, - - "1603888149_create_chat_identity_last_published_table.up.sql": _1603888149_create_chat_identity_last_published_tableUpSql, - - "1605075346_add_communities.up.sql": _1605075346_add_communitiesUpSql, - - "1610117927_add_message_cache.up.sql": _1610117927_add_message_cacheUpSql, - - "1610959908_add_dont_wrap_to_raw_messages.up.sql": _1610959908_add_dont_wrap_to_raw_messagesUpSql, - - "1610960912_add_send_on_personal_topic.up.sql": _1610960912_add_send_on_personal_topicUpSql, - - "1612870480_add_datasync_id.up.sql": _1612870480_add_datasync_idUpSql, - - "1614152139_add_communities_request_to_join.up.sql": _1614152139_add_communities_request_to_joinUpSql, - - "1615374373_add_confirmations.up.sql": _1615374373_add_confirmationsUpSql, - - "1617694931_add_notification_center.up.sql": _1617694931_add_notification_centerUpSql, - - "1618923660_create_pin_messages.up.sql": _1618923660_create_pin_messagesUpSql, - - "1619094007_add_joined_chat_field.up.sql": _1619094007_add_joined_chat_fieldUpSql, - - "1619099821_add_last_synced_field.up.sql": _1619099821_add_last_synced_fieldUpSql, - - "1621933219_add_mentioned.up.sql": _1621933219_add_mentionedUpSql, - - "1622010048_add_unviewed_mentions_count.up.sql": _1622010048_add_unviewed_mentions_countUpSql, - - "1622061278_add_message_activity_center_notification_field.up.sql": _1622061278_add_message_activity_center_notification_fieldUpSql, - - "1622464518_set_synced_to_from.up.sql": _1622464518_set_synced_to_fromUpSql, - - "1622464519_add_chat_description.up.sql": _1622464519_add_chat_descriptionUpSql, - - "1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql, - - "1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql, - - "1623938330_add_edit_messages.up.sql": _1623938330_add_edit_messagesUpSql, - - "1624978434_add_muted_community.up.sql": _1624978434_add_muted_communityUpSql, - - "1625018910_add_repply_message_activity_center_notification_field.up.sql": _1625018910_add_repply_message_activity_center_notification_fieldUpSql, - - "1625762506_add_deleted_messages.up.sql": _1625762506_add_deleted_messagesUpSql, - - "1627388946_add_communities_synced_at.up.sql": _1627388946_add_communities_synced_atUpSql, - - "1628280060_create-usermessages-index.sql": _1628280060_createUsermessagesIndexSql, - - "1632303896_modify_contacts_table.up.sql": _1632303896_modify_contacts_tableUpSql, - - "1633349838_add_emoji_column_in_chats.up.sql": _1633349838_add_emoji_column_in_chatsUpSql, - - "1634831235_add_highlight_column_in_chats.up.sql": _1634831235_add_highlight_column_in_chatsUpSql, - - "1634896007_add_last_updated_locally_and_removed.up.sql": _1634896007_add_last_updated_locally_and_removedUpSql, - - "1635840039_add_clock_read_at_column_in_chats.up.sql": _1635840039_add_clock_read_at_column_in_chatsUpSql, - - "1637852321_add_received_invitation_admin_column_in_chats.up.sql": _1637852321_add_received_invitation_admin_column_in_chatsUpSql, - - "1645034601_display_name.up.sql": _1645034601_display_nameUpSql, - - "1645034602_add_mutual_contact_request.up.sql": _1645034602_add_mutual_contact_requestUpSql, - - "1650373957_add_contact_request_state.up.sql": _1650373957_add_contact_request_stateUpSql, - - "1656958989_contact_verification.up.sql": _1656958989_contact_verificationUpSql, - - "1658236268_add_discord_message_authors_table.up.sql": _1658236268_add_discord_message_authors_tableUpSql, - - "1659619997_add_discord_messages_table.up.sql": _1659619997_add_discord_messages_tableUpSql, - - "1660226788_create_chat_identity_social_links.up.sql": _1660226788_create_chat_identity_social_linksUpSql, - - "1660226789_add_walletconnectsessions_table.up.sql": _1660226789_add_walletconnectsessions_tableUpSql, - - "1661242854_add_communities_requests_to_leave.up.sql": _1661242854_add_communities_requests_to_leaveUpSql, - - "1662044232_add_chat_image.up.sql": _1662044232_add_chat_imageUpSql, - - "1662106895_add_chat_first_message_timestamp.up.sql": _1662106895_add_chat_first_message_timestampUpSql, - - "1662723928_add_discord_author_image_fields.up.sql": _1662723928_add_discord_author_image_fieldsUpSql, - - "1664195977_add_deleted_for_mes.up.sql": _1664195977_add_deleted_for_mesUpSql, - - "1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql, - - "1665079662_add_spectated_column_in_communities.up.sql": _1665079662_add_spectated_column_in_communitiesUpSql, - - "1665479047_add_community_id_in_notifications.up.sql": _1665479047_add_community_id_in_notificationsUpSql, - - "1665484435_add_encrypted_messages.up.sql": _1665484435_add_encrypted_messagesUpSql, - - "1665560200_add_contact_verification_individual.up.sql": _1665560200_add_contact_verification_individualUpSql, - - "1670921937_add_album_id.up.sql": _1670921937_add_album_idUpSql, - - "1673373000_add_replied.up.sql": _1673373000_add_repliedUpSql, - - "1673428910_add_image_width_height.up.sql": _1673428910_add_image_width_heightUpSql, - - "1674210659_add_contact_request_local_clock.up.sql": _1674210659_add_contact_request_local_clockUpSql, - - "1675212323_add_deleted_by.up.sql": _1675212323_add_deleted_byUpSql, - - "1675247084_add_activity_center_states.up.sql": _1675247084_add_activity_center_statesUpSql, - - "1675272329_fix_protocol_migration.up.sql": _1675272329_fix_protocol_migrationUpSql, - - "1676998418_fix_activity_center_migration.up.sql": _1676998418_fix_activity_center_migrationUpSql, - + "000001_init.down.db.sql": _000001_initDownDbSql, + "000001_init.up.db.sql": _000001_initUpDbSql, + "000002_add_last_ens_clock_value.up.sql": _000002_add_last_ens_clock_valueUpSql, + "1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql, + "1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql, + "1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql, + "1591277220_add_index_messages.up.sql": _1591277220_add_index_messagesUpSql, + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": _1593087212_add_mute_chat_and_raw_message_fieldsUpSql, + "1595862781_add_audio_data.up.sql": _1595862781_add_audio_dataUpSql, + "1595865249_create_emoji_reactions_table.up.sql": _1595865249_create_emoji_reactions_tableUpSql, + "1596805115_create_group_chat_invitations_table.up.sql": _1596805115_create_group_chat_invitations_tableUpSql, + "1597322655_add_invitation_admin_chat_field.up.sql": _1597322655_add_invitation_admin_chat_fieldUpSql, + "1597757544_add_nickname.up.sql": _1597757544_add_nicknameUpSql, + "1598955122_add_mentions.up.sql": _1598955122_add_mentionsUpSql, + "1599641390_add_emoji_reactions_index.up.sql": _1599641390_add_emoji_reactions_indexUpSql, + "1599720851_add_seen_index_remove_long_messages.up.sql": _1599720851_add_seen_index_remove_long_messagesUpSql, + "1603198582_add_profile_chat_field.up.sql": _1603198582_add_profile_chat_fieldUpSql, + "1603816533_add_links.up.sql": _1603816533_add_linksUpSql, + "1603888149_create_chat_identity_last_published_table.up.sql": _1603888149_create_chat_identity_last_published_tableUpSql, + "1605075346_add_communities.up.sql": _1605075346_add_communitiesUpSql, + "1610117927_add_message_cache.up.sql": _1610117927_add_message_cacheUpSql, + "1610959908_add_dont_wrap_to_raw_messages.up.sql": _1610959908_add_dont_wrap_to_raw_messagesUpSql, + "1610960912_add_send_on_personal_topic.up.sql": _1610960912_add_send_on_personal_topicUpSql, + "1612870480_add_datasync_id.up.sql": _1612870480_add_datasync_idUpSql, + "1614152139_add_communities_request_to_join.up.sql": _1614152139_add_communities_request_to_joinUpSql, + "1615374373_add_confirmations.up.sql": _1615374373_add_confirmationsUpSql, + "1617694931_add_notification_center.up.sql": _1617694931_add_notification_centerUpSql, + "1618923660_create_pin_messages.up.sql": _1618923660_create_pin_messagesUpSql, + "1619094007_add_joined_chat_field.up.sql": _1619094007_add_joined_chat_fieldUpSql, + "1619099821_add_last_synced_field.up.sql": _1619099821_add_last_synced_fieldUpSql, + "1621933219_add_mentioned.up.sql": _1621933219_add_mentionedUpSql, + "1622010048_add_unviewed_mentions_count.up.sql": _1622010048_add_unviewed_mentions_countUpSql, + "1622061278_add_message_activity_center_notification_field.up.sql": _1622061278_add_message_activity_center_notification_fieldUpSql, + "1622464518_set_synced_to_from.up.sql": _1622464518_set_synced_to_fromUpSql, + "1622464519_add_chat_description.up.sql": _1622464519_add_chat_descriptionUpSql, + "1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql, + "1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql, + "1623938330_add_edit_messages.up.sql": _1623938330_add_edit_messagesUpSql, + "1624978434_add_muted_community.up.sql": _1624978434_add_muted_communityUpSql, + "1625018910_add_repply_message_activity_center_notification_field.up.sql": _1625018910_add_repply_message_activity_center_notification_fieldUpSql, + "1625762506_add_deleted_messages.up.sql": _1625762506_add_deleted_messagesUpSql, + "1627388946_add_communities_synced_at.up.sql": _1627388946_add_communities_synced_atUpSql, + "1628280060_create-usermessages-index.sql": _1628280060_createUsermessagesIndexSql, + "1632303896_modify_contacts_table.up.sql": _1632303896_modify_contacts_tableUpSql, + "1633349838_add_emoji_column_in_chats.up.sql": _1633349838_add_emoji_column_in_chatsUpSql, + "1634831235_add_highlight_column_in_chats.up.sql": _1634831235_add_highlight_column_in_chatsUpSql, + "1634896007_add_last_updated_locally_and_removed.up.sql": _1634896007_add_last_updated_locally_and_removedUpSql, + "1635840039_add_clock_read_at_column_in_chats.up.sql": _1635840039_add_clock_read_at_column_in_chatsUpSql, + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": _1637852321_add_received_invitation_admin_column_in_chatsUpSql, + "1645034601_display_name.up.sql": _1645034601_display_nameUpSql, + "1645034602_add_mutual_contact_request.up.sql": _1645034602_add_mutual_contact_requestUpSql, + "1650373957_add_contact_request_state.up.sql": _1650373957_add_contact_request_stateUpSql, + "1656958989_contact_verification.up.sql": _1656958989_contact_verificationUpSql, + "1658236268_add_discord_message_authors_table.up.sql": _1658236268_add_discord_message_authors_tableUpSql, + "1659619997_add_discord_messages_table.up.sql": _1659619997_add_discord_messages_tableUpSql, + "1660226788_create_chat_identity_social_links.up.sql": _1660226788_create_chat_identity_social_linksUpSql, + "1660226789_add_walletconnectsessions_table.up.sql": _1660226789_add_walletconnectsessions_tableUpSql, + "1661242854_add_communities_requests_to_leave.up.sql": _1661242854_add_communities_requests_to_leaveUpSql, + "1662044232_add_chat_image.up.sql": _1662044232_add_chat_imageUpSql, + "1662106895_add_chat_first_message_timestamp.up.sql": _1662106895_add_chat_first_message_timestampUpSql, + "1662723928_add_discord_author_image_fields.up.sql": _1662723928_add_discord_author_image_fieldsUpSql, + "1664195977_add_deleted_for_mes.up.sql": _1664195977_add_deleted_for_mesUpSql, + "1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql, + "1665079662_add_spectated_column_in_communities.up.sql": _1665079662_add_spectated_column_in_communitiesUpSql, + "1665479047_add_community_id_in_notifications.up.sql": _1665479047_add_community_id_in_notificationsUpSql, + "1665484435_add_encrypted_messages.up.sql": _1665484435_add_encrypted_messagesUpSql, + "1665560200_add_contact_verification_individual.up.sql": _1665560200_add_contact_verification_individualUpSql, + "1670921937_add_album_id.up.sql": _1670921937_add_album_idUpSql, + "1673373000_add_replied.up.sql": _1673373000_add_repliedUpSql, + "1673428910_add_image_width_height.up.sql": _1673428910_add_image_width_heightUpSql, + "1674210659_add_contact_request_local_clock.up.sql": _1674210659_add_contact_request_local_clockUpSql, + "1675212323_add_deleted_by.up.sql": _1675212323_add_deleted_byUpSql, + "1675247084_add_activity_center_states.up.sql": _1675247084_add_activity_center_statesUpSql, + "1675272329_fix_protocol_migration.up.sql": _1675272329_fix_protocol_migrationUpSql, + "1676998418_fix_activity_center_migration.up.sql": _1676998418_fix_activity_center_migrationUpSql, "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, - - "1677486338_add_community_tokens_table.up.sql": _1677486338_add_community_tokens_tableUpSql, - - "1678292329_add_collapsed_categories.up.sql": _1678292329_add_collapsed_categoriesUpSql, - - "1678800760_add_index_to_raw_messages.up.sql": _1678800760_add_index_to_raw_messagesUpSql, - + "1677486338_add_community_tokens_table.up.sql": _1677486338_add_community_tokens_tableUpSql, + "1678292329_add_collapsed_categories.up.sql": _1678292329_add_collapsed_categoriesUpSql, + "1678800760_add_index_to_raw_messages.up.sql": _1678800760_add_index_to_raw_messagesUpSql, "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, - - "1679326850_add_community_token_owners.up.sql": _1679326850_add_community_token_ownersUpSql, - - "1680011500_add_album_images_count.up.sql": _1680011500_add_album_images_countUpSql, - - "1680114896_add_index_on_album_id.up.sql": _1680114896_add_index_on_album_idUpSql, - - "1681655289_add_mute_till.up.sql": _1681655289_add_mute_tillUpSql, - - "1681934966_add_index_response_to.up.sql": _1681934966_add_index_response_toUpSql, - - "1682528339_add_index_user_messages_unseen.up.sql": _1682528339_add_index_user_messages_unseenUpSql, - - "1683707289_recreate_deleted_for_mes.up.sql": _1683707289_recreate_deleted_for_mesUpSql, - - "1683725607_mark_discord_messages_as_seen.up.sql": _1683725607_mark_discord_messages_as_seenUpSql, - - "1684174617_add_url_previews_to_user_messages.up.sql": _1684174617_add_url_previews_to_user_messagesUpSql, - - "1684175608_add_token_balances.up.sql": _1684175608_add_token_balancesUpSql, - - "1684979808_sync_activity_center_notifications.up.sql": _1684979808_sync_activity_center_notificationsUpSql, - - "1685383829_add_communities_mute_till.up.sql": _1685383829_add_communities_mute_tillUpSql, - - "1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql, - - "1687370421_add_communities_muted_till_new.up.sql": _1687370421_add_communities_muted_till_newUpSql, - - "1687416607_add_communities_check_channel_permission_responses_table.up.sql": _1687416607_add_communities_check_channel_permission_responses_tableUpSql, - - "1687856939_add_community_tokens_decimals.up.sql": _1687856939_add_community_tokens_decimalsUpSql, - - "1687959987_modify_community_tokens_supply_as_string.up.sql": _1687959987_modify_community_tokens_supply_as_stringUpSql, - - "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": _1689258900_add_airdrop_address_to_revealed_addressesUpSql, - - "1689266326_create_communities_events_table.up.sql": _1689266326_create_communities_events_tableUpSql, - - "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": _1689931300_add_community_tokens_deployer_and_priv_levelUpSql, - + "1679326850_add_community_token_owners.up.sql": _1679326850_add_community_token_ownersUpSql, + "1680011500_add_album_images_count.up.sql": _1680011500_add_album_images_countUpSql, + "1680114896_add_index_on_album_id.up.sql": _1680114896_add_index_on_album_idUpSql, + "1681655289_add_mute_till.up.sql": _1681655289_add_mute_tillUpSql, + "1681934966_add_index_response_to.up.sql": _1681934966_add_index_response_toUpSql, + "1682528339_add_index_user_messages_unseen.up.sql": _1682528339_add_index_user_messages_unseenUpSql, + "1683707289_recreate_deleted_for_mes.up.sql": _1683707289_recreate_deleted_for_mesUpSql, + "1683725607_mark_discord_messages_as_seen.up.sql": _1683725607_mark_discord_messages_as_seenUpSql, + "1684174617_add_url_previews_to_user_messages.up.sql": _1684174617_add_url_previews_to_user_messagesUpSql, + "1684175608_add_token_balances.up.sql": _1684175608_add_token_balancesUpSql, + "1684979808_sync_activity_center_notifications.up.sql": _1684979808_sync_activity_center_notificationsUpSql, + "1685383829_add_communities_mute_till.up.sql": _1685383829_add_communities_mute_tillUpSql, + "1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql, + "1687370421_add_communities_muted_till_new.up.sql": _1687370421_add_communities_muted_till_newUpSql, + "1687416607_add_communities_check_channel_permission_responses_table.up.sql": _1687416607_add_communities_check_channel_permission_responses_tableUpSql, + "1687856939_add_community_tokens_decimals.up.sql": _1687856939_add_community_tokens_decimalsUpSql, + "1687959987_modify_community_tokens_supply_as_string.up.sql": _1687959987_modify_community_tokens_supply_as_stringUpSql, + "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": _1689258900_add_airdrop_address_to_revealed_addressesUpSql, + "1689266326_create_communities_events_table.up.sql": _1689266326_create_communities_events_tableUpSql, + "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": _1689931300_add_community_tokens_deployer_and_priv_levelUpSql, "README.md": readmeMd, - - "doc.go": docGo, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -2547,108 +2450,108 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "000001_init.down.db.sql": &bintree{_000001_initDownDbSql, map[string]*bintree{}}, - "000001_init.up.db.sql": &bintree{_000001_initUpDbSql, map[string]*bintree{}}, - "000002_add_last_ens_clock_value.up.sql": &bintree{_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, - "1586358095_add_replace.up.sql": &bintree{_1586358095_add_replaceUpSql, map[string]*bintree{}}, - "1588665364_add_image_data.up.sql": &bintree{_1588665364_add_image_dataUpSql, map[string]*bintree{}}, - "1589365189_add_pow_target.up.sql": &bintree{_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, - "1591277220_add_index_messages.up.sql": &bintree{_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, - "1593087212_add_mute_chat_and_raw_message_fields.up.sql": &bintree{_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, - "1595862781_add_audio_data.up.sql": &bintree{_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, - "1595865249_create_emoji_reactions_table.up.sql": &bintree{_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, - "1596805115_create_group_chat_invitations_table.up.sql": &bintree{_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, - "1597322655_add_invitation_admin_chat_field.up.sql": &bintree{_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, - "1597757544_add_nickname.up.sql": &bintree{_1597757544_add_nicknameUpSql, map[string]*bintree{}}, - "1598955122_add_mentions.up.sql": &bintree{_1598955122_add_mentionsUpSql, map[string]*bintree{}}, - "1599641390_add_emoji_reactions_index.up.sql": &bintree{_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, - "1599720851_add_seen_index_remove_long_messages.up.sql": &bintree{_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, - "1603198582_add_profile_chat_field.up.sql": &bintree{_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, - "1603816533_add_links.up.sql": &bintree{_1603816533_add_linksUpSql, map[string]*bintree{}}, - "1603888149_create_chat_identity_last_published_table.up.sql": &bintree{_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, - "1605075346_add_communities.up.sql": &bintree{_1605075346_add_communitiesUpSql, map[string]*bintree{}}, - "1610117927_add_message_cache.up.sql": &bintree{_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, - "1610959908_add_dont_wrap_to_raw_messages.up.sql": &bintree{_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, - "1610960912_add_send_on_personal_topic.up.sql": &bintree{_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, - "1612870480_add_datasync_id.up.sql": &bintree{_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, - "1614152139_add_communities_request_to_join.up.sql": &bintree{_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, - "1615374373_add_confirmations.up.sql": &bintree{_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, - "1617694931_add_notification_center.up.sql": &bintree{_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, - "1618923660_create_pin_messages.up.sql": &bintree{_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, - "1619094007_add_joined_chat_field.up.sql": &bintree{_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, - "1619099821_add_last_synced_field.up.sql": &bintree{_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, - "1621933219_add_mentioned.up.sql": &bintree{_1621933219_add_mentionedUpSql, map[string]*bintree{}}, - "1622010048_add_unviewed_mentions_count.up.sql": &bintree{_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, - "1622061278_add_message_activity_center_notification_field.up.sql": &bintree{_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1622464518_set_synced_to_from.up.sql": &bintree{_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, - "1622464519_add_chat_description.up.sql": &bintree{_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, - "1622622253_add_pinned_by_to_pin_messages.up.sql": &bintree{_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, - "1623938329_add_author_activity_center_notification_field.up.sql": &bintree{_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1623938330_add_edit_messages.up.sql": &bintree{_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, - "1624978434_add_muted_community.up.sql": &bintree{_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, - "1625018910_add_repply_message_activity_center_notification_field.up.sql": &bintree{_1625018910_add_repply_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1625762506_add_deleted_messages.up.sql": &bintree{_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, - "1627388946_add_communities_synced_at.up.sql": &bintree{_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, - "1628280060_create-usermessages-index.sql": &bintree{_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, - "1632303896_modify_contacts_table.up.sql": &bintree{_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, - "1633349838_add_emoji_column_in_chats.up.sql": &bintree{_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, - "1634831235_add_highlight_column_in_chats.up.sql": &bintree{_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, - "1634896007_add_last_updated_locally_and_removed.up.sql": &bintree{_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, - "1635840039_add_clock_read_at_column_in_chats.up.sql": &bintree{_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, - "1637852321_add_received_invitation_admin_column_in_chats.up.sql": &bintree{_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, - "1645034601_display_name.up.sql": &bintree{_1645034601_display_nameUpSql, map[string]*bintree{}}, - "1645034602_add_mutual_contact_request.up.sql": &bintree{_1645034602_add_mutual_contact_requestUpSql, map[string]*bintree{}}, - "1650373957_add_contact_request_state.up.sql": &bintree{_1650373957_add_contact_request_stateUpSql, map[string]*bintree{}}, - "1656958989_contact_verification.up.sql": &bintree{_1656958989_contact_verificationUpSql, map[string]*bintree{}}, - "1658236268_add_discord_message_authors_table.up.sql": &bintree{_1658236268_add_discord_message_authors_tableUpSql, map[string]*bintree{}}, - "1659619997_add_discord_messages_table.up.sql": &bintree{_1659619997_add_discord_messages_tableUpSql, map[string]*bintree{}}, - "1660226788_create_chat_identity_social_links.up.sql": &bintree{_1660226788_create_chat_identity_social_linksUpSql, map[string]*bintree{}}, - "1660226789_add_walletconnectsessions_table.up.sql": &bintree{_1660226789_add_walletconnectsessions_tableUpSql, map[string]*bintree{}}, - "1661242854_add_communities_requests_to_leave.up.sql": &bintree{_1661242854_add_communities_requests_to_leaveUpSql, map[string]*bintree{}}, - "1662044232_add_chat_image.up.sql": &bintree{_1662044232_add_chat_imageUpSql, map[string]*bintree{}}, - "1662106895_add_chat_first_message_timestamp.up.sql": &bintree{_1662106895_add_chat_first_message_timestampUpSql, map[string]*bintree{}}, - "1662723928_add_discord_author_image_fields.up.sql": &bintree{_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}}, - "1664195977_add_deleted_for_mes.up.sql": &bintree{_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}}, - "1664367420_add_discord_attachments_table.up.sql": &bintree{_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}}, - "1665079662_add_spectated_column_in_communities.up.sql": &bintree{_1665079662_add_spectated_column_in_communitiesUpSql, map[string]*bintree{}}, - "1665479047_add_community_id_in_notifications.up.sql": &bintree{_1665479047_add_community_id_in_notificationsUpSql, map[string]*bintree{}}, - "1665484435_add_encrypted_messages.up.sql": &bintree{_1665484435_add_encrypted_messagesUpSql, map[string]*bintree{}}, - "1665560200_add_contact_verification_individual.up.sql": &bintree{_1665560200_add_contact_verification_individualUpSql, map[string]*bintree{}}, - "1670921937_add_album_id.up.sql": &bintree{_1670921937_add_album_idUpSql, map[string]*bintree{}}, - "1673373000_add_replied.up.sql": &bintree{_1673373000_add_repliedUpSql, map[string]*bintree{}}, - "1673428910_add_image_width_height.up.sql": &bintree{_1673428910_add_image_width_heightUpSql, map[string]*bintree{}}, - "1674210659_add_contact_request_local_clock.up.sql": &bintree{_1674210659_add_contact_request_local_clockUpSql, map[string]*bintree{}}, - "1675212323_add_deleted_by.up.sql": &bintree{_1675212323_add_deleted_byUpSql, map[string]*bintree{}}, - "1675247084_add_activity_center_states.up.sql": &bintree{_1675247084_add_activity_center_statesUpSql, map[string]*bintree{}}, - "1675272329_fix_protocol_migration.up.sql": &bintree{_1675272329_fix_protocol_migrationUpSql, map[string]*bintree{}}, - "1676998418_fix_activity_center_migration.up.sql": &bintree{_1676998418_fix_activity_center_migrationUpSql, map[string]*bintree{}}, - "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": &bintree{_1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, map[string]*bintree{}}, - "1677486338_add_community_tokens_table.up.sql": &bintree{_1677486338_add_community_tokens_tableUpSql, map[string]*bintree{}}, - "1678292329_add_collapsed_categories.up.sql": &bintree{_1678292329_add_collapsed_categoriesUpSql, map[string]*bintree{}}, - "1678800760_add_index_to_raw_messages.up.sql": &bintree{_1678800760_add_index_to_raw_messagesUpSql, map[string]*bintree{}}, - "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": &bintree{_1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, map[string]*bintree{}}, - "1679326850_add_community_token_owners.up.sql": &bintree{_1679326850_add_community_token_ownersUpSql, map[string]*bintree{}}, - "1680011500_add_album_images_count.up.sql": &bintree{_1680011500_add_album_images_countUpSql, map[string]*bintree{}}, - "1680114896_add_index_on_album_id.up.sql": &bintree{_1680114896_add_index_on_album_idUpSql, map[string]*bintree{}}, - "1681655289_add_mute_till.up.sql": &bintree{_1681655289_add_mute_tillUpSql, map[string]*bintree{}}, - "1681934966_add_index_response_to.up.sql": &bintree{_1681934966_add_index_response_toUpSql, map[string]*bintree{}}, - "1682528339_add_index_user_messages_unseen.up.sql": &bintree{_1682528339_add_index_user_messages_unseenUpSql, map[string]*bintree{}}, - "1683707289_recreate_deleted_for_mes.up.sql": &bintree{_1683707289_recreate_deleted_for_mesUpSql, map[string]*bintree{}}, - "1683725607_mark_discord_messages_as_seen.up.sql": &bintree{_1683725607_mark_discord_messages_as_seenUpSql, map[string]*bintree{}}, - "1684174617_add_url_previews_to_user_messages.up.sql": &bintree{_1684174617_add_url_previews_to_user_messagesUpSql, map[string]*bintree{}}, - "1684175608_add_token_balances.up.sql": &bintree{_1684175608_add_token_balancesUpSql, map[string]*bintree{}}, - "1684979808_sync_activity_center_notifications.up.sql": &bintree{_1684979808_sync_activity_center_notificationsUpSql, map[string]*bintree{}}, - "1685383829_add_communities_mute_till.up.sql": &bintree{_1685383829_add_communities_mute_tillUpSql, map[string]*bintree{}}, - "1685964183_add_chainids_to_revealed_addresses.up.sql": &bintree{_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}}, - "1687370421_add_communities_muted_till_new.up.sql": &bintree{_1687370421_add_communities_muted_till_newUpSql, map[string]*bintree{}}, - "1687416607_add_communities_check_channel_permission_responses_table.up.sql": &bintree{_1687416607_add_communities_check_channel_permission_responses_tableUpSql, map[string]*bintree{}}, - "1687856939_add_community_tokens_decimals.up.sql": &bintree{_1687856939_add_community_tokens_decimalsUpSql, map[string]*bintree{}}, - "1687959987_modify_community_tokens_supply_as_string.up.sql": &bintree{_1687959987_modify_community_tokens_supply_as_stringUpSql, map[string]*bintree{}}, - "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": &bintree{_1689258900_add_airdrop_address_to_revealed_addressesUpSql, map[string]*bintree{}}, - "1689266326_create_communities_events_table.up.sql": &bintree{_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}}, - "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}}, - "README.md": &bintree{readmeMd, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "000001_init.down.db.sql": {_000001_initDownDbSql, map[string]*bintree{}}, + "000001_init.up.db.sql": {_000001_initUpDbSql, map[string]*bintree{}}, + "000002_add_last_ens_clock_value.up.sql": {_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, + "1586358095_add_replace.up.sql": {_1586358095_add_replaceUpSql, map[string]*bintree{}}, + "1588665364_add_image_data.up.sql": {_1588665364_add_image_dataUpSql, map[string]*bintree{}}, + "1589365189_add_pow_target.up.sql": {_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, + "1591277220_add_index_messages.up.sql": {_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": {_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, + "1595862781_add_audio_data.up.sql": {_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, + "1595865249_create_emoji_reactions_table.up.sql": {_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, + "1596805115_create_group_chat_invitations_table.up.sql": {_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, + "1597322655_add_invitation_admin_chat_field.up.sql": {_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, + "1597757544_add_nickname.up.sql": {_1597757544_add_nicknameUpSql, map[string]*bintree{}}, + "1598955122_add_mentions.up.sql": {_1598955122_add_mentionsUpSql, map[string]*bintree{}}, + "1599641390_add_emoji_reactions_index.up.sql": {_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, + "1599720851_add_seen_index_remove_long_messages.up.sql": {_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, + "1603198582_add_profile_chat_field.up.sql": {_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, + "1603816533_add_links.up.sql": {_1603816533_add_linksUpSql, map[string]*bintree{}}, + "1603888149_create_chat_identity_last_published_table.up.sql": {_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, + "1605075346_add_communities.up.sql": {_1605075346_add_communitiesUpSql, map[string]*bintree{}}, + "1610117927_add_message_cache.up.sql": {_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, + "1610959908_add_dont_wrap_to_raw_messages.up.sql": {_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, + "1610960912_add_send_on_personal_topic.up.sql": {_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, + "1612870480_add_datasync_id.up.sql": {_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, + "1614152139_add_communities_request_to_join.up.sql": {_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, + "1615374373_add_confirmations.up.sql": {_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, + "1617694931_add_notification_center.up.sql": {_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, + "1618923660_create_pin_messages.up.sql": {_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, + "1619094007_add_joined_chat_field.up.sql": {_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, + "1619099821_add_last_synced_field.up.sql": {_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, + "1621933219_add_mentioned.up.sql": {_1621933219_add_mentionedUpSql, map[string]*bintree{}}, + "1622010048_add_unviewed_mentions_count.up.sql": {_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, + "1622061278_add_message_activity_center_notification_field.up.sql": {_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1622464518_set_synced_to_from.up.sql": {_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, + "1622464519_add_chat_description.up.sql": {_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, + "1622622253_add_pinned_by_to_pin_messages.up.sql": {_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, + "1623938329_add_author_activity_center_notification_field.up.sql": {_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1623938330_add_edit_messages.up.sql": {_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, + "1624978434_add_muted_community.up.sql": {_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, + "1625018910_add_repply_message_activity_center_notification_field.up.sql": {_1625018910_add_repply_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1625762506_add_deleted_messages.up.sql": {_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, + "1627388946_add_communities_synced_at.up.sql": {_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, + "1628280060_create-usermessages-index.sql": {_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, + "1632303896_modify_contacts_table.up.sql": {_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, + "1633349838_add_emoji_column_in_chats.up.sql": {_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, + "1634831235_add_highlight_column_in_chats.up.sql": {_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, + "1634896007_add_last_updated_locally_and_removed.up.sql": {_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, + "1635840039_add_clock_read_at_column_in_chats.up.sql": {_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": {_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, + "1645034601_display_name.up.sql": {_1645034601_display_nameUpSql, map[string]*bintree{}}, + "1645034602_add_mutual_contact_request.up.sql": {_1645034602_add_mutual_contact_requestUpSql, map[string]*bintree{}}, + "1650373957_add_contact_request_state.up.sql": {_1650373957_add_contact_request_stateUpSql, map[string]*bintree{}}, + "1656958989_contact_verification.up.sql": {_1656958989_contact_verificationUpSql, map[string]*bintree{}}, + "1658236268_add_discord_message_authors_table.up.sql": {_1658236268_add_discord_message_authors_tableUpSql, map[string]*bintree{}}, + "1659619997_add_discord_messages_table.up.sql": {_1659619997_add_discord_messages_tableUpSql, map[string]*bintree{}}, + "1660226788_create_chat_identity_social_links.up.sql": {_1660226788_create_chat_identity_social_linksUpSql, map[string]*bintree{}}, + "1660226789_add_walletconnectsessions_table.up.sql": {_1660226789_add_walletconnectsessions_tableUpSql, map[string]*bintree{}}, + "1661242854_add_communities_requests_to_leave.up.sql": {_1661242854_add_communities_requests_to_leaveUpSql, map[string]*bintree{}}, + "1662044232_add_chat_image.up.sql": {_1662044232_add_chat_imageUpSql, map[string]*bintree{}}, + "1662106895_add_chat_first_message_timestamp.up.sql": {_1662106895_add_chat_first_message_timestampUpSql, map[string]*bintree{}}, + "1662723928_add_discord_author_image_fields.up.sql": {_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}}, + "1664195977_add_deleted_for_mes.up.sql": {_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}}, + "1664367420_add_discord_attachments_table.up.sql": {_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}}, + "1665079662_add_spectated_column_in_communities.up.sql": {_1665079662_add_spectated_column_in_communitiesUpSql, map[string]*bintree{}}, + "1665479047_add_community_id_in_notifications.up.sql": {_1665479047_add_community_id_in_notificationsUpSql, map[string]*bintree{}}, + "1665484435_add_encrypted_messages.up.sql": {_1665484435_add_encrypted_messagesUpSql, map[string]*bintree{}}, + "1665560200_add_contact_verification_individual.up.sql": {_1665560200_add_contact_verification_individualUpSql, map[string]*bintree{}}, + "1670921937_add_album_id.up.sql": {_1670921937_add_album_idUpSql, map[string]*bintree{}}, + "1673373000_add_replied.up.sql": {_1673373000_add_repliedUpSql, map[string]*bintree{}}, + "1673428910_add_image_width_height.up.sql": {_1673428910_add_image_width_heightUpSql, map[string]*bintree{}}, + "1674210659_add_contact_request_local_clock.up.sql": {_1674210659_add_contact_request_local_clockUpSql, map[string]*bintree{}}, + "1675212323_add_deleted_by.up.sql": {_1675212323_add_deleted_byUpSql, map[string]*bintree{}}, + "1675247084_add_activity_center_states.up.sql": {_1675247084_add_activity_center_statesUpSql, map[string]*bintree{}}, + "1675272329_fix_protocol_migration.up.sql": {_1675272329_fix_protocol_migrationUpSql, map[string]*bintree{}}, + "1676998418_fix_activity_center_migration.up.sql": {_1676998418_fix_activity_center_migrationUpSql, map[string]*bintree{}}, + "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": {_1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, map[string]*bintree{}}, + "1677486338_add_community_tokens_table.up.sql": {_1677486338_add_community_tokens_tableUpSql, map[string]*bintree{}}, + "1678292329_add_collapsed_categories.up.sql": {_1678292329_add_collapsed_categoriesUpSql, map[string]*bintree{}}, + "1678800760_add_index_to_raw_messages.up.sql": {_1678800760_add_index_to_raw_messagesUpSql, map[string]*bintree{}}, + "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": {_1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, map[string]*bintree{}}, + "1679326850_add_community_token_owners.up.sql": {_1679326850_add_community_token_ownersUpSql, map[string]*bintree{}}, + "1680011500_add_album_images_count.up.sql": {_1680011500_add_album_images_countUpSql, map[string]*bintree{}}, + "1680114896_add_index_on_album_id.up.sql": {_1680114896_add_index_on_album_idUpSql, map[string]*bintree{}}, + "1681655289_add_mute_till.up.sql": {_1681655289_add_mute_tillUpSql, map[string]*bintree{}}, + "1681934966_add_index_response_to.up.sql": {_1681934966_add_index_response_toUpSql, map[string]*bintree{}}, + "1682528339_add_index_user_messages_unseen.up.sql": {_1682528339_add_index_user_messages_unseenUpSql, map[string]*bintree{}}, + "1683707289_recreate_deleted_for_mes.up.sql": {_1683707289_recreate_deleted_for_mesUpSql, map[string]*bintree{}}, + "1683725607_mark_discord_messages_as_seen.up.sql": {_1683725607_mark_discord_messages_as_seenUpSql, map[string]*bintree{}}, + "1684174617_add_url_previews_to_user_messages.up.sql": {_1684174617_add_url_previews_to_user_messagesUpSql, map[string]*bintree{}}, + "1684175608_add_token_balances.up.sql": {_1684175608_add_token_balancesUpSql, map[string]*bintree{}}, + "1684979808_sync_activity_center_notifications.up.sql": {_1684979808_sync_activity_center_notificationsUpSql, map[string]*bintree{}}, + "1685383829_add_communities_mute_till.up.sql": {_1685383829_add_communities_mute_tillUpSql, map[string]*bintree{}}, + "1685964183_add_chainids_to_revealed_addresses.up.sql": {_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}}, + "1687370421_add_communities_muted_till_new.up.sql": {_1687370421_add_communities_muted_till_newUpSql, map[string]*bintree{}}, + "1687416607_add_communities_check_channel_permission_responses_table.up.sql": {_1687416607_add_communities_check_channel_permission_responses_tableUpSql, map[string]*bintree{}}, + "1687856939_add_community_tokens_decimals.up.sql": {_1687856939_add_community_tokens_decimalsUpSql, map[string]*bintree{}}, + "1687959987_modify_community_tokens_supply_as_string.up.sql": {_1687959987_modify_community_tokens_supply_as_stringUpSql, map[string]*bintree{}}, + "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": {_1689258900_add_airdrop_address_to_revealed_addressesUpSql, map[string]*bintree{}}, + "1689266326_create_communities_events_table.up.sql": {_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}}, + "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": {_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}}, + "README.md": {readmeMd, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -2665,7 +2568,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/persistence.go b/protocol/persistence.go index 287fb4934..2274399a1 100644 --- a/protocol/persistence.go +++ b/protocol/persistence.go @@ -384,7 +384,7 @@ func (db sqlitePersistence) chats(tx *sql.Tx) (chats []*Chat, err error) { // Restore last message if lastMessageBytes != nil { - message := &common.Message{} + message := common.NewMessage() if err = json.Unmarshal(lastMessageBytes, message); err != nil { return } @@ -529,7 +529,7 @@ func (db sqlitePersistence) Chat(chatID string) (*Chat, error) { // Restore last message if lastMessageBytes != nil { - message := &common.Message{} + message := common.NewMessage() if err = json.Unmarshal(lastMessageBytes, message); err != nil { return nil, err } diff --git a/protocol/persistence_test.go b/protocol/persistence_test.go index 5176a527a..c4b084a42 100644 --- a/protocol/persistence_test.go +++ b/protocol/persistence_test.go @@ -178,7 +178,7 @@ func TestMessageByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(i), LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, From: testPK, @@ -189,7 +189,7 @@ func TestMessageByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(count + i), LocalChatID: "other-chat", - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, @@ -205,7 +205,7 @@ func TestMessageByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(count*2 + i), LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, @@ -261,7 +261,7 @@ func TestFirstUnseenMessageIDByChatID(t *testing.T) { { ID: "1", LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: 1, Text: "some-text"}, From: testPK, @@ -270,7 +270,7 @@ func TestFirstUnseenMessageIDByChatID(t *testing.T) { { ID: "2", LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: 2, Text: "some-text"}, From: testPK, @@ -279,7 +279,7 @@ func TestFirstUnseenMessageIDByChatID(t *testing.T) { { ID: "3", LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: 3, Text: "some-text"}, From: testPK, @@ -336,7 +336,7 @@ func TestOldestMessageWhisperTimestampByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(i), LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, WhisperTimestamp: uint64(i + 10), @@ -368,7 +368,7 @@ func TestPinMessageByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(i), LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, From: testPK, @@ -381,11 +381,10 @@ func TestPinMessageByChatID(t *testing.T) { from = "them" } - pinMessage := &common.PinMessage{ - ID: strconv.Itoa(i), - LocalChatID: chatID, - From: from, - } + pinMessage := common.NewPinMessage() + pinMessage.ID = strconv.Itoa(i) + pinMessage.LocalChatID = chatID + pinMessage.From = from pinMessage.MessageId = strconv.Itoa(i) pinMessage.Clock = 111 @@ -395,11 +394,12 @@ func TestPinMessageByChatID(t *testing.T) { if i%200 == 0 { // unpin a message - unpinMessage := &common.PinMessage{ - ID: strconv.Itoa(i), - LocalChatID: chatID, - From: testPK, - } + unpinMessage := common.NewPinMessage() + + unpinMessage.ID = strconv.Itoa(i) + unpinMessage.LocalChatID = chatID + unpinMessage.From = testPK + pinMessage.MessageId = strconv.Itoa(i) unpinMessage.Clock = 333 unpinMessage.Pinned = false @@ -407,11 +407,11 @@ func TestPinMessageByChatID(t *testing.T) { pinnedMessagesCount-- // pinned before the unpin - pinMessage2 := &common.PinMessage{ - ID: strconv.Itoa(i), - LocalChatID: chatID, - From: testPK, - } + pinMessage2 := common.NewPinMessage() + pinMessage2.ID = strconv.Itoa(i) + pinMessage2.LocalChatID = chatID + pinMessage2.From = testPK + pinMessage2.MessageId = strconv.Itoa(i) pinMessage2.Clock = 222 pinMessage2.Pinned = true @@ -424,7 +424,7 @@ func TestPinMessageByChatID(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(messagesCount + i), LocalChatID: "chat-without-pinned-messages", - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), }, @@ -485,7 +485,7 @@ func TestMessageReplies(t *testing.T) { message1 := &common.Message{ ID: "id-1", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-1", Clock: uint64(1), }, @@ -494,7 +494,7 @@ func TestMessageReplies(t *testing.T) { message2 := &common.Message{ ID: "id-2", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-2", Clock: uint64(2), ResponseTo: "id-1", @@ -506,7 +506,7 @@ func TestMessageReplies(t *testing.T) { message3 := &common.Message{ ID: "id-3", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-3", Clock: uint64(3), ResponseTo: "non-existing", @@ -519,7 +519,7 @@ func TestMessageReplies(t *testing.T) { ID: "id-4", LocalChatID: chatID, Deleted: true, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-4", Clock: uint64(4), }, @@ -530,7 +530,7 @@ func TestMessageReplies(t *testing.T) { message5 := &common.Message{ ID: "id-5", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-4", Clock: uint64(5), ResponseTo: "id-4", @@ -576,7 +576,7 @@ func TestMessageByChatIDWithTheSameClocks(t *testing.T) { messages = append(messages, &common.Message{ ID: strconv.Itoa(i), LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: clock, }, From: testPK, @@ -815,7 +815,7 @@ func TestPersistenceEmojiReactions(t *testing.T) { // Insert normal emoji reaction require.NoError(t, p.SaveEmojiReaction(&EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: 1, MessageId: id3, ChatId: chatID, @@ -827,7 +827,7 @@ func TestPersistenceEmojiReactions(t *testing.T) { // Insert retracted emoji reaction require.NoError(t, p.SaveEmojiReaction(&EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: 1, MessageId: id3, ChatId: chatID, @@ -840,7 +840,7 @@ func TestPersistenceEmojiReactions(t *testing.T) { // Insert retracted emoji reaction out of pagination require.NoError(t, p.SaveEmojiReaction(&EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: 1, MessageId: id1, ChatId: chatID, @@ -852,7 +852,7 @@ func TestPersistenceEmojiReactions(t *testing.T) { // Insert retracted emoji reaction out of pagination require.NoError(t, p.SaveEmojiReaction(&EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: 1, MessageId: id1, ChatId: chatID, @@ -864,7 +864,7 @@ func TestPersistenceEmojiReactions(t *testing.T) { // Wrong local chat id require.NoError(t, p.SaveEmojiReaction(&EmojiReaction{ - EmojiReaction: protobuf.EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ Clock: 1, MessageId: id1, ChatId: chatID, @@ -902,7 +902,7 @@ func insertMinimalMessage(p *sqlitePersistence, id string) error { return p.SaveMessages([]*common.Message{{ ID: id, LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, }}) } @@ -912,7 +912,7 @@ func insertMinimalDeletedMessage(p *sqlitePersistence, id string) error { ID: id, Deleted: true, LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, }}) } @@ -922,7 +922,7 @@ func insertMinimalDeletedForMeMessage(p *sqlitePersistence, id string) error { ID: id, DeletedForMe: true, LocalChatID: testPublicChatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, }}) } @@ -974,7 +974,7 @@ func insertMinimalDiscordMessage(p *sqlitePersistence, id string, discordMessage ID: id, LocalChatID: testPublicChatID, From: testPK, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "some-text", ContentType: protobuf.ChatMessage_DISCORD_MESSAGE, ChatId: testPublicChatID, @@ -1021,7 +1021,7 @@ func TestSaveChat(t *testing.T) { p := newSQLitePersistence(db) chat := CreatePublicChat("test-chat", &testTimeSource{}) - chat.LastMessage = &common.Message{} + chat.LastMessage = common.NewMessage() err = p.SaveChat(*chat) require.NoError(t, err) @@ -1044,7 +1044,7 @@ func TestSaveMentions(t *testing.T) { message := common.Message{ ID: "1", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, Mentions: []string{pkString}, } @@ -1179,7 +1179,7 @@ func TestSaveLinks(t *testing.T) { message := common.Message{ ID: "1", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, Links: []string{"https://github.com/status-im/status-mobile"}, } @@ -1205,7 +1205,7 @@ func TestSaveWithUnfurledLinks(t *testing.T) { ID: "1", LocalChatID: chatID, From: testPK, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "some-text", UnfurledLinks: []*protobuf.UnfurledLink{ { @@ -1244,7 +1244,7 @@ func TestHideMessage(t *testing.T) { message := &common.Message{ ID: "id-1", LocalChatID: chatID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Text: "content-1", Clock: uint64(1), }, @@ -1278,7 +1278,7 @@ func TestDeactivatePublicChat(t *testing.T) { lastMessage := common.Message{ ID: "0x01", LocalChatID: publicChatID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, } lastMessage.Clock = 20 @@ -1348,7 +1348,7 @@ func TestDeactivateOneToOneChat(t *testing.T) { lastMessage := common.Message{ ID: "0x01", LocalChatID: chat.ID, - ChatMessage: protobuf.ChatMessage{Text: "some-text"}, + ChatMessage: &protobuf.ChatMessage{Text: "some-text"}, From: testPK, } lastMessage.Clock = 20 @@ -1530,7 +1530,7 @@ func TestSaveCommunityChat(t *testing.T) { } chat := CreateCommunityChat("test-or-gid", "test-chat-id", communityChat, &testTimeSource{}) - chat.LastMessage = &common.Message{} + chat.LastMessage = common.NewMessage() err = p.SaveChat(*chat) require.NoError(t, err) @@ -1717,7 +1717,7 @@ func TestCountActiveChattersInCommunity(t *testing.T) { messages = append(messages, &common.Message{ ID: fmt.Sprintf("%smsg%d", chat.Name, i), LocalChatID: chat.ID, - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ Clock: uint64(i), Timestamp: uint64(i + offset), }, diff --git a/protocol/protobuf/anon_metrics.pb.go b/protocol/protobuf/anon_metrics.pb.go index 799226b2f..1fd708d64 100644 --- a/protocol/protobuf/anon_metrics.pb.go +++ b/protocol/protobuf/anon_metrics.pb.go @@ -1,28 +1,32 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: anon_metrics.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - math "math" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // AnonymousMetric represents a single metric data point type AnonymousMetric struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // id is the unique id of the metric message Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // event is the app metric event type @@ -36,153 +40,243 @@ type AnonymousMetric struct { // session_id is the id of the session the metric was recorded in SessionId string `protobuf:"bytes,6,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // created_at is the datetime at which the metric was stored in the local db - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` } -func (m *AnonymousMetric) Reset() { *m = AnonymousMetric{} } -func (m *AnonymousMetric) String() string { return proto.CompactTextString(m) } -func (*AnonymousMetric) ProtoMessage() {} +func (x *AnonymousMetric) Reset() { + *x = AnonymousMetric{} + if protoimpl.UnsafeEnabled { + mi := &file_anon_metrics_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnonymousMetric) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnonymousMetric) ProtoMessage() {} + +func (x *AnonymousMetric) ProtoReflect() protoreflect.Message { + mi := &file_anon_metrics_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnonymousMetric.ProtoReflect.Descriptor instead. func (*AnonymousMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_4be044a92fa0408c, []int{0} + return file_anon_metrics_proto_rawDescGZIP(), []int{0} } -func (m *AnonymousMetric) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AnonymousMetric.Unmarshal(m, b) -} -func (m *AnonymousMetric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AnonymousMetric.Marshal(b, m, deterministic) -} -func (m *AnonymousMetric) XXX_Merge(src proto.Message) { - xxx_messageInfo_AnonymousMetric.Merge(m, src) -} -func (m *AnonymousMetric) XXX_Size() int { - return xxx_messageInfo_AnonymousMetric.Size(m) -} -func (m *AnonymousMetric) XXX_DiscardUnknown() { - xxx_messageInfo_AnonymousMetric.DiscardUnknown(m) -} - -var xxx_messageInfo_AnonymousMetric proto.InternalMessageInfo - -func (m *AnonymousMetric) GetId() string { - if m != nil { - return m.Id +func (x *AnonymousMetric) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AnonymousMetric) GetEvent() string { - if m != nil { - return m.Event +func (x *AnonymousMetric) GetEvent() string { + if x != nil { + return x.Event } return "" } -func (m *AnonymousMetric) GetValue() []byte { - if m != nil { - return m.Value +func (x *AnonymousMetric) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *AnonymousMetric) GetAppVersion() string { - if m != nil { - return m.AppVersion +func (x *AnonymousMetric) GetAppVersion() string { + if x != nil { + return x.AppVersion } return "" } -func (m *AnonymousMetric) GetOs() string { - if m != nil { - return m.Os +func (x *AnonymousMetric) GetOs() string { + if x != nil { + return x.Os } return "" } -func (m *AnonymousMetric) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *AnonymousMetric) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } -func (m *AnonymousMetric) GetCreatedAt() *timestamppb.Timestamp { - if m != nil { - return m.CreatedAt +func (x *AnonymousMetric) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } // AnonymousMetricBatch represents a batch of AnonymousMetrics allowing broadcast of AnonymousMetrics with fewer messages type AnonymousMetricBatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // metrics is an array of AnonymousMetric metrics - Metrics []*AnonymousMetric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Metrics []*AnonymousMetric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` } -func (m *AnonymousMetricBatch) Reset() { *m = AnonymousMetricBatch{} } -func (m *AnonymousMetricBatch) String() string { return proto.CompactTextString(m) } -func (*AnonymousMetricBatch) ProtoMessage() {} +func (x *AnonymousMetricBatch) Reset() { + *x = AnonymousMetricBatch{} + if protoimpl.UnsafeEnabled { + mi := &file_anon_metrics_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnonymousMetricBatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnonymousMetricBatch) ProtoMessage() {} + +func (x *AnonymousMetricBatch) ProtoReflect() protoreflect.Message { + mi := &file_anon_metrics_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnonymousMetricBatch.ProtoReflect.Descriptor instead. func (*AnonymousMetricBatch) Descriptor() ([]byte, []int) { - return fileDescriptor_4be044a92fa0408c, []int{1} + return file_anon_metrics_proto_rawDescGZIP(), []int{1} } -func (m *AnonymousMetricBatch) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AnonymousMetricBatch.Unmarshal(m, b) -} -func (m *AnonymousMetricBatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AnonymousMetricBatch.Marshal(b, m, deterministic) -} -func (m *AnonymousMetricBatch) XXX_Merge(src proto.Message) { - xxx_messageInfo_AnonymousMetricBatch.Merge(m, src) -} -func (m *AnonymousMetricBatch) XXX_Size() int { - return xxx_messageInfo_AnonymousMetricBatch.Size(m) -} -func (m *AnonymousMetricBatch) XXX_DiscardUnknown() { - xxx_messageInfo_AnonymousMetricBatch.DiscardUnknown(m) -} - -var xxx_messageInfo_AnonymousMetricBatch proto.InternalMessageInfo - -func (m *AnonymousMetricBatch) GetMetrics() []*AnonymousMetric { - if m != nil { - return m.Metrics +func (x *AnonymousMetricBatch) GetMetrics() []*AnonymousMetric { + if x != nil { + return x.Metrics } return nil } -func init() { - proto.RegisterType((*AnonymousMetric)(nil), "protobuf.AnonymousMetric") - proto.RegisterType((*AnonymousMetricBatch)(nil), "protobuf.AnonymousMetricBatch") +var File_anon_metrics_proto protoreflect.FileDescriptor + +var file_anon_metrics_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x61, 0x6e, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xd8, 0x01, 0x0a, 0x0f, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4b, 0x0a, 0x14, 0x41, 0x6e, + 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("anon_metrics.proto", fileDescriptor_4be044a92fa0408c) +var ( + file_anon_metrics_proto_rawDescOnce sync.Once + file_anon_metrics_proto_rawDescData = file_anon_metrics_proto_rawDesc +) + +func file_anon_metrics_proto_rawDescGZIP() []byte { + file_anon_metrics_proto_rawDescOnce.Do(func() { + file_anon_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_anon_metrics_proto_rawDescData) + }) + return file_anon_metrics_proto_rawDescData } -var fileDescriptor_4be044a92fa0408c = []byte{ - // 269 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x3d, 0x6b, 0xc3, 0x30, - 0x10, 0x86, 0x51, 0xd2, 0x24, 0xf5, 0xb9, 0x1f, 0x20, 0x32, 0xa8, 0x81, 0x12, 0x93, 0xc9, 0x93, - 0x0d, 0xc9, 0x54, 0x3a, 0x25, 0x5b, 0x29, 0x5d, 0x4c, 0xe9, 0xd0, 0xc5, 0x28, 0xb6, 0x9a, 0x0a, - 0x62, 0x9d, 0xb0, 0x64, 0x43, 0xff, 0x69, 0x7f, 0x4e, 0xb1, 0x64, 0x51, 0xc8, 0x24, 0xdd, 0xa3, - 0xf7, 0x5e, 0x78, 0x04, 0x94, 0x2b, 0x54, 0x65, 0x23, 0x6c, 0x2b, 0x2b, 0x93, 0xe9, 0x16, 0x2d, - 0xd2, 0x6b, 0x77, 0x1c, 0xbb, 0xaf, 0xd5, 0xfa, 0x84, 0x78, 0x3a, 0x8b, 0x3c, 0x80, 0xdc, 0xca, - 0x46, 0x18, 0xcb, 0x1b, 0xed, 0xa3, 0x9b, 0x5f, 0x02, 0xf7, 0x7b, 0x85, 0xea, 0xa7, 0xc1, 0xce, - 0xbc, 0xb9, 0x16, 0x7a, 0x07, 0x13, 0x59, 0x33, 0x92, 0x90, 0x34, 0x2a, 0x26, 0xb2, 0xa6, 0x4b, - 0x98, 0x89, 0x5e, 0x28, 0xcb, 0x26, 0x0e, 0xf9, 0x61, 0xa0, 0x3d, 0x3f, 0x77, 0x82, 0x4d, 0x13, - 0x92, 0xde, 0x14, 0x7e, 0xa0, 0x6b, 0x88, 0xb9, 0xd6, 0x65, 0x2f, 0x5a, 0x23, 0x51, 0xb1, 0x2b, - 0xb7, 0x01, 0x5c, 0xeb, 0x0f, 0x4f, 0x86, 0x72, 0x34, 0x6c, 0xe6, 0xcb, 0xd1, 0xd0, 0x47, 0x00, - 0x23, 0xcc, 0xf0, 0x54, 0xca, 0x9a, 0xcd, 0x1d, 0x8f, 0x46, 0xf2, 0x52, 0xd3, 0x27, 0x80, 0xaa, - 0x15, 0xdc, 0x8a, 0xba, 0xe4, 0x96, 0x2d, 0x12, 0x92, 0xc6, 0xdb, 0x55, 0xe6, 0xad, 0xb2, 0x60, - 0x95, 0xbd, 0x07, 0xab, 0x22, 0x1a, 0xd3, 0x7b, 0xbb, 0x79, 0x85, 0xe5, 0x85, 0xd9, 0x81, 0xdb, - 0xea, 0x9b, 0xee, 0x60, 0x31, 0x7e, 0x17, 0x23, 0xc9, 0x34, 0x8d, 0xb7, 0x0f, 0xff, 0x45, 0x17, - 0x0b, 0x45, 0x48, 0x1e, 0x6e, 0x3f, 0xe3, 0x2c, 0x7f, 0x0e, 0xb9, 0xe3, 0xdc, 0xdd, 0x76, 0x7f, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x86, 0xa1, 0x32, 0x7e, 0x01, 0x00, 0x00, +var file_anon_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_anon_metrics_proto_goTypes = []interface{}{ + (*AnonymousMetric)(nil), // 0: protobuf.AnonymousMetric + (*AnonymousMetricBatch)(nil), // 1: protobuf.AnonymousMetricBatch + (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp +} +var file_anon_metrics_proto_depIdxs = []int32{ + 2, // 0: protobuf.AnonymousMetric.created_at:type_name -> google.protobuf.Timestamp + 0, // 1: protobuf.AnonymousMetricBatch.metrics:type_name -> protobuf.AnonymousMetric + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_anon_metrics_proto_init() } +func file_anon_metrics_proto_init() { + if File_anon_metrics_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_anon_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnonymousMetric); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_anon_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnonymousMetricBatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_anon_metrics_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_anon_metrics_proto_goTypes, + DependencyIndexes: file_anon_metrics_proto_depIdxs, + MessageInfos: file_anon_metrics_proto_msgTypes, + }.Build() + File_anon_metrics_proto = out.File + file_anon_metrics_proto_rawDesc = nil + file_anon_metrics_proto_goTypes = nil + file_anon_metrics_proto_depIdxs = nil } diff --git a/protocol/protobuf/application_metadata_message.pb.go b/protocol/protobuf/application_metadata_message.pb.go index f694de54b..3f905155a 100644 --- a/protocol/protobuf/application_metadata_message.pb.go +++ b/protocol/protobuf/application_metadata_message.pb.go @@ -1,41 +1,42 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: application_metadata_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationMetadataMessage_Type int32 const ( - ApplicationMetadataMessage_UNKNOWN ApplicationMetadataMessage_Type = 0 - ApplicationMetadataMessage_CHAT_MESSAGE ApplicationMetadataMessage_Type = 1 - ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2 - ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3 - ApplicationMetadataMessage_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4 - ApplicationMetadataMessage_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5 + ApplicationMetadataMessage_UNKNOWN ApplicationMetadataMessage_Type = 0 + ApplicationMetadataMessage_CHAT_MESSAGE ApplicationMetadataMessage_Type = 1 + ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2 + ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3 + ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4 + // Deprecated: Marked as deprecated in application_metadata_message.proto. + ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5 ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 6 ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 7 ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 8 ApplicationMetadataMessage_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 9 ApplicationMetadataMessage_SEND_TRANSACTION ApplicationMetadataMessage_Type = 10 ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 11 - ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT ApplicationMetadataMessage_Type = 12 + ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2 ApplicationMetadataMessage_Type = 12 ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT ApplicationMetadataMessage_Type = 13 ApplicationMetadataMessage_SYNC_INSTALLATION_PUBLIC_CHAT ApplicationMetadataMessage_Type = 14 ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT ApplicationMetadataMessage_Type = 15 @@ -49,7 +50,8 @@ const ( ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23 ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24 ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25 - ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 // Deprecated: Do not use. + // Deprecated: Marked as deprecated in application_metadata_message.proto. + ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27 ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28 ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29 @@ -66,8 +68,8 @@ const ( ApplicationMetadataMessage_SYNC_BOOKMARK ApplicationMetadataMessage_Type = 40 ApplicationMetadataMessage_SYNC_CLEAR_HISTORY ApplicationMetadataMessage_Type = 41 ApplicationMetadataMessage_SYNC_SETTING ApplicationMetadataMessage_Type = 42 - ApplicationMetadataMessage_COMMUNITY_ARCHIVE_MAGNETLINK ApplicationMetadataMessage_Type = 43 - ApplicationMetadataMessage_SYNC_PROFILE_PICTURE ApplicationMetadataMessage_Type = 44 + ApplicationMetadataMessage_COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK ApplicationMetadataMessage_Type = 43 + ApplicationMetadataMessage_SYNC_PROFILE_PICTURES ApplicationMetadataMessage_Type = 44 ApplicationMetadataMessage_SYNC_ACCOUNT ApplicationMetadataMessage_Type = 45 ApplicationMetadataMessage_ACCEPT_CONTACT_REQUEST ApplicationMetadataMessage_Type = 46 ApplicationMetadataMessage_RETRACT_CONTACT_REQUEST ApplicationMetadataMessage_Type = 47 @@ -87,7 +89,7 @@ const ( ApplicationMetadataMessage_SYNC_KEYPAIR ApplicationMetadataMessage_Type = 62 ApplicationMetadataMessage_SYNC_SOCIAL_LINKS ApplicationMetadataMessage_Type = 63 ApplicationMetadataMessage_SYNC_ENS_USERNAME_DETAIL ApplicationMetadataMessage_Type = 64 - ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION ApplicationMetadataMessage_Type = 65 + ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATIONS ApplicationMetadataMessage_Type = 65 ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE ApplicationMetadataMessage_Type = 66 ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE ApplicationMetadataMessage_Type = 67 ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES ApplicationMetadataMessage_Type = 68 @@ -97,297 +99,468 @@ const ( ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE ApplicationMetadataMessage_Type = 72 ) -var ApplicationMetadataMessage_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CHAT_MESSAGE", - 2: "CONTACT_UPDATE", - 3: "MEMBERSHIP_UPDATE_MESSAGE", - 4: "PAIR_INSTALLATION", - 5: "SYNC_INSTALLATION", - 6: "REQUEST_ADDRESS_FOR_TRANSACTION", - 7: "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION", - 8: "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION", - 9: "REQUEST_TRANSACTION", - 10: "SEND_TRANSACTION", - 11: "DECLINE_REQUEST_TRANSACTION", - 12: "SYNC_INSTALLATION_CONTACT", - 13: "SYNC_INSTALLATION_ACCOUNT", - 14: "SYNC_INSTALLATION_PUBLIC_CHAT", - 15: "CONTACT_CODE_ADVERTISEMENT", - 16: "PUSH_NOTIFICATION_REGISTRATION", - 17: "PUSH_NOTIFICATION_REGISTRATION_RESPONSE", - 18: "PUSH_NOTIFICATION_QUERY", - 19: "PUSH_NOTIFICATION_QUERY_RESPONSE", - 20: "PUSH_NOTIFICATION_REQUEST", - 21: "PUSH_NOTIFICATION_RESPONSE", - 22: "EMOJI_REACTION", - 23: "GROUP_CHAT_INVITATION", - 24: "CHAT_IDENTITY", - 25: "COMMUNITY_DESCRIPTION", - 26: "COMMUNITY_INVITATION", - 27: "COMMUNITY_REQUEST_TO_JOIN", - 28: "PIN_MESSAGE", - 29: "EDIT_MESSAGE", - 30: "STATUS_UPDATE", - 31: "DELETE_MESSAGE", - 32: "SYNC_INSTALLATION_COMMUNITY", - 33: "ANONYMOUS_METRIC_BATCH", - 34: "SYNC_CHAT_REMOVED", - 35: "SYNC_CHAT_MESSAGES_READ", - 36: "BACKUP", - 37: "SYNC_ACTIVITY_CENTER_READ", - 38: "SYNC_ACTIVITY_CENTER_ACCEPTED", - 39: "SYNC_ACTIVITY_CENTER_DISMISSED", - 40: "SYNC_BOOKMARK", - 41: "SYNC_CLEAR_HISTORY", - 42: "SYNC_SETTING", - 43: "COMMUNITY_ARCHIVE_MAGNETLINK", - 44: "SYNC_PROFILE_PICTURE", - 45: "SYNC_ACCOUNT", - 46: "ACCEPT_CONTACT_REQUEST", - 47: "RETRACT_CONTACT_REQUEST", - 48: "COMMUNITY_REQUEST_TO_JOIN_RESPONSE", - 49: "SYNC_COMMUNITY_SETTINGS", - 50: "REQUEST_CONTACT_VERIFICATION", - 51: "ACCEPT_CONTACT_VERIFICATION", - 52: "DECLINE_CONTACT_VERIFICATION", - 53: "SYNC_TRUSTED_USER", - 54: "SYNC_VERIFICATION_REQUEST", - 56: "SYNC_CONTACT_REQUEST_DECISION", - 57: "COMMUNITY_REQUEST_TO_LEAVE", - 58: "SYNC_DELETE_FOR_ME_MESSAGE", - 59: "SYNC_SAVED_ADDRESS", - 60: "COMMUNITY_CANCEL_REQUEST_TO_JOIN", - 61: "CANCEL_CONTACT_VERIFICATION", - 62: "SYNC_KEYPAIR", - 63: "SYNC_SOCIAL_LINKS", - 64: "SYNC_ENS_USERNAME_DETAIL", - 65: "SYNC_ACTIVITY_CENTER_NOTIFICATION", - 66: "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE", - 67: "COMMUNITY_EVENTS_MESSAGE", - 68: "COMMUNITY_EDIT_SHARED_ADDRESSES", - 69: "SYNC_ACCOUNT_CUSTOMIZATION_COLOR", - 70: "SYNC_ACCOUNTS_POSITIONS", - 71: "COMMUNITY_EVENTS_MESSAGE_REJECTED", - 72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE", -} +// Enum value maps for ApplicationMetadataMessage_Type. +var ( + ApplicationMetadataMessage_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CHAT_MESSAGE", + 2: "CONTACT_UPDATE", + 3: "MEMBERSHIP_UPDATE_MESSAGE", + 4: "SYNC_PAIR_INSTALLATION", + 5: "DEPRECATED_SYNC_INSTALLATION", + 6: "REQUEST_ADDRESS_FOR_TRANSACTION", + 7: "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION", + 8: "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION", + 9: "REQUEST_TRANSACTION", + 10: "SEND_TRANSACTION", + 11: "DECLINE_REQUEST_TRANSACTION", + 12: "SYNC_INSTALLATION_CONTACT_V2", + 13: "SYNC_INSTALLATION_ACCOUNT", + 14: "SYNC_INSTALLATION_PUBLIC_CHAT", + 15: "CONTACT_CODE_ADVERTISEMENT", + 16: "PUSH_NOTIFICATION_REGISTRATION", + 17: "PUSH_NOTIFICATION_REGISTRATION_RESPONSE", + 18: "PUSH_NOTIFICATION_QUERY", + 19: "PUSH_NOTIFICATION_QUERY_RESPONSE", + 20: "PUSH_NOTIFICATION_REQUEST", + 21: "PUSH_NOTIFICATION_RESPONSE", + 22: "EMOJI_REACTION", + 23: "GROUP_CHAT_INVITATION", + 24: "CHAT_IDENTITY", + 25: "COMMUNITY_DESCRIPTION", + 26: "COMMUNITY_INVITATION", + 27: "COMMUNITY_REQUEST_TO_JOIN", + 28: "PIN_MESSAGE", + 29: "EDIT_MESSAGE", + 30: "STATUS_UPDATE", + 31: "DELETE_MESSAGE", + 32: "SYNC_INSTALLATION_COMMUNITY", + 33: "ANONYMOUS_METRIC_BATCH", + 34: "SYNC_CHAT_REMOVED", + 35: "SYNC_CHAT_MESSAGES_READ", + 36: "BACKUP", + 37: "SYNC_ACTIVITY_CENTER_READ", + 38: "SYNC_ACTIVITY_CENTER_ACCEPTED", + 39: "SYNC_ACTIVITY_CENTER_DISMISSED", + 40: "SYNC_BOOKMARK", + 41: "SYNC_CLEAR_HISTORY", + 42: "SYNC_SETTING", + 43: "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK", + 44: "SYNC_PROFILE_PICTURES", + 45: "SYNC_ACCOUNT", + 46: "ACCEPT_CONTACT_REQUEST", + 47: "RETRACT_CONTACT_REQUEST", + 48: "COMMUNITY_REQUEST_TO_JOIN_RESPONSE", + 49: "SYNC_COMMUNITY_SETTINGS", + 50: "REQUEST_CONTACT_VERIFICATION", + 51: "ACCEPT_CONTACT_VERIFICATION", + 52: "DECLINE_CONTACT_VERIFICATION", + 53: "SYNC_TRUSTED_USER", + 54: "SYNC_VERIFICATION_REQUEST", + 56: "SYNC_CONTACT_REQUEST_DECISION", + 57: "COMMUNITY_REQUEST_TO_LEAVE", + 58: "SYNC_DELETE_FOR_ME_MESSAGE", + 59: "SYNC_SAVED_ADDRESS", + 60: "COMMUNITY_CANCEL_REQUEST_TO_JOIN", + 61: "CANCEL_CONTACT_VERIFICATION", + 62: "SYNC_KEYPAIR", + 63: "SYNC_SOCIAL_LINKS", + 64: "SYNC_ENS_USERNAME_DETAIL", + 65: "SYNC_ACTIVITY_CENTER_NOTIFICATIONS", + 66: "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE", + 67: "COMMUNITY_EVENTS_MESSAGE", + 68: "COMMUNITY_EDIT_SHARED_ADDRESSES", + 69: "SYNC_ACCOUNT_CUSTOMIZATION_COLOR", + 70: "SYNC_ACCOUNTS_POSITIONS", + 71: "COMMUNITY_EVENTS_MESSAGE_REJECTED", + 72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE", + } + ApplicationMetadataMessage_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CHAT_MESSAGE": 1, + "CONTACT_UPDATE": 2, + "MEMBERSHIP_UPDATE_MESSAGE": 3, + "SYNC_PAIR_INSTALLATION": 4, + "DEPRECATED_SYNC_INSTALLATION": 5, + "REQUEST_ADDRESS_FOR_TRANSACTION": 6, + "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION": 7, + "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION": 8, + "REQUEST_TRANSACTION": 9, + "SEND_TRANSACTION": 10, + "DECLINE_REQUEST_TRANSACTION": 11, + "SYNC_INSTALLATION_CONTACT_V2": 12, + "SYNC_INSTALLATION_ACCOUNT": 13, + "SYNC_INSTALLATION_PUBLIC_CHAT": 14, + "CONTACT_CODE_ADVERTISEMENT": 15, + "PUSH_NOTIFICATION_REGISTRATION": 16, + "PUSH_NOTIFICATION_REGISTRATION_RESPONSE": 17, + "PUSH_NOTIFICATION_QUERY": 18, + "PUSH_NOTIFICATION_QUERY_RESPONSE": 19, + "PUSH_NOTIFICATION_REQUEST": 20, + "PUSH_NOTIFICATION_RESPONSE": 21, + "EMOJI_REACTION": 22, + "GROUP_CHAT_INVITATION": 23, + "CHAT_IDENTITY": 24, + "COMMUNITY_DESCRIPTION": 25, + "COMMUNITY_INVITATION": 26, + "COMMUNITY_REQUEST_TO_JOIN": 27, + "PIN_MESSAGE": 28, + "EDIT_MESSAGE": 29, + "STATUS_UPDATE": 30, + "DELETE_MESSAGE": 31, + "SYNC_INSTALLATION_COMMUNITY": 32, + "ANONYMOUS_METRIC_BATCH": 33, + "SYNC_CHAT_REMOVED": 34, + "SYNC_CHAT_MESSAGES_READ": 35, + "BACKUP": 36, + "SYNC_ACTIVITY_CENTER_READ": 37, + "SYNC_ACTIVITY_CENTER_ACCEPTED": 38, + "SYNC_ACTIVITY_CENTER_DISMISSED": 39, + "SYNC_BOOKMARK": 40, + "SYNC_CLEAR_HISTORY": 41, + "SYNC_SETTING": 42, + "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK": 43, + "SYNC_PROFILE_PICTURES": 44, + "SYNC_ACCOUNT": 45, + "ACCEPT_CONTACT_REQUEST": 46, + "RETRACT_CONTACT_REQUEST": 47, + "COMMUNITY_REQUEST_TO_JOIN_RESPONSE": 48, + "SYNC_COMMUNITY_SETTINGS": 49, + "REQUEST_CONTACT_VERIFICATION": 50, + "ACCEPT_CONTACT_VERIFICATION": 51, + "DECLINE_CONTACT_VERIFICATION": 52, + "SYNC_TRUSTED_USER": 53, + "SYNC_VERIFICATION_REQUEST": 54, + "SYNC_CONTACT_REQUEST_DECISION": 56, + "COMMUNITY_REQUEST_TO_LEAVE": 57, + "SYNC_DELETE_FOR_ME_MESSAGE": 58, + "SYNC_SAVED_ADDRESS": 59, + "COMMUNITY_CANCEL_REQUEST_TO_JOIN": 60, + "CANCEL_CONTACT_VERIFICATION": 61, + "SYNC_KEYPAIR": 62, + "SYNC_SOCIAL_LINKS": 63, + "SYNC_ENS_USERNAME_DETAIL": 64, + "SYNC_ACTIVITY_CENTER_NOTIFICATIONS": 65, + "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE": 66, + "COMMUNITY_EVENTS_MESSAGE": 67, + "COMMUNITY_EDIT_SHARED_ADDRESSES": 68, + "SYNC_ACCOUNT_CUSTOMIZATION_COLOR": 69, + "SYNC_ACCOUNTS_POSITIONS": 70, + "COMMUNITY_EVENTS_MESSAGE_REJECTED": 71, + "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72, + } +) -var ApplicationMetadataMessage_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CHAT_MESSAGE": 1, - "CONTACT_UPDATE": 2, - "MEMBERSHIP_UPDATE_MESSAGE": 3, - "PAIR_INSTALLATION": 4, - "SYNC_INSTALLATION": 5, - "REQUEST_ADDRESS_FOR_TRANSACTION": 6, - "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION": 7, - "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION": 8, - "REQUEST_TRANSACTION": 9, - "SEND_TRANSACTION": 10, - "DECLINE_REQUEST_TRANSACTION": 11, - "SYNC_INSTALLATION_CONTACT": 12, - "SYNC_INSTALLATION_ACCOUNT": 13, - "SYNC_INSTALLATION_PUBLIC_CHAT": 14, - "CONTACT_CODE_ADVERTISEMENT": 15, - "PUSH_NOTIFICATION_REGISTRATION": 16, - "PUSH_NOTIFICATION_REGISTRATION_RESPONSE": 17, - "PUSH_NOTIFICATION_QUERY": 18, - "PUSH_NOTIFICATION_QUERY_RESPONSE": 19, - "PUSH_NOTIFICATION_REQUEST": 20, - "PUSH_NOTIFICATION_RESPONSE": 21, - "EMOJI_REACTION": 22, - "GROUP_CHAT_INVITATION": 23, - "CHAT_IDENTITY": 24, - "COMMUNITY_DESCRIPTION": 25, - "COMMUNITY_INVITATION": 26, - "COMMUNITY_REQUEST_TO_JOIN": 27, - "PIN_MESSAGE": 28, - "EDIT_MESSAGE": 29, - "STATUS_UPDATE": 30, - "DELETE_MESSAGE": 31, - "SYNC_INSTALLATION_COMMUNITY": 32, - "ANONYMOUS_METRIC_BATCH": 33, - "SYNC_CHAT_REMOVED": 34, - "SYNC_CHAT_MESSAGES_READ": 35, - "BACKUP": 36, - "SYNC_ACTIVITY_CENTER_READ": 37, - "SYNC_ACTIVITY_CENTER_ACCEPTED": 38, - "SYNC_ACTIVITY_CENTER_DISMISSED": 39, - "SYNC_BOOKMARK": 40, - "SYNC_CLEAR_HISTORY": 41, - "SYNC_SETTING": 42, - "COMMUNITY_ARCHIVE_MAGNETLINK": 43, - "SYNC_PROFILE_PICTURE": 44, - "SYNC_ACCOUNT": 45, - "ACCEPT_CONTACT_REQUEST": 46, - "RETRACT_CONTACT_REQUEST": 47, - "COMMUNITY_REQUEST_TO_JOIN_RESPONSE": 48, - "SYNC_COMMUNITY_SETTINGS": 49, - "REQUEST_CONTACT_VERIFICATION": 50, - "ACCEPT_CONTACT_VERIFICATION": 51, - "DECLINE_CONTACT_VERIFICATION": 52, - "SYNC_TRUSTED_USER": 53, - "SYNC_VERIFICATION_REQUEST": 54, - "SYNC_CONTACT_REQUEST_DECISION": 56, - "COMMUNITY_REQUEST_TO_LEAVE": 57, - "SYNC_DELETE_FOR_ME_MESSAGE": 58, - "SYNC_SAVED_ADDRESS": 59, - "COMMUNITY_CANCEL_REQUEST_TO_JOIN": 60, - "CANCEL_CONTACT_VERIFICATION": 61, - "SYNC_KEYPAIR": 62, - "SYNC_SOCIAL_LINKS": 63, - "SYNC_ENS_USERNAME_DETAIL": 64, - "SYNC_ACTIVITY_CENTER_NOTIFICATION": 65, - "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE": 66, - "COMMUNITY_EVENTS_MESSAGE": 67, - "COMMUNITY_EDIT_SHARED_ADDRESSES": 68, - "SYNC_ACCOUNT_CUSTOMIZATION_COLOR": 69, - "SYNC_ACCOUNTS_POSITIONS": 70, - "COMMUNITY_EVENTS_MESSAGE_REJECTED": 71, - "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72, +func (x ApplicationMetadataMessage_Type) Enum() *ApplicationMetadataMessage_Type { + p := new(ApplicationMetadataMessage_Type) + *p = x + return p } func (x ApplicationMetadataMessage_Type) String() string { - return proto.EnumName(ApplicationMetadataMessage_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ApplicationMetadataMessage_Type) Descriptor() protoreflect.EnumDescriptor { + return file_application_metadata_message_proto_enumTypes[0].Descriptor() +} + +func (ApplicationMetadataMessage_Type) Type() protoreflect.EnumType { + return &file_application_metadata_message_proto_enumTypes[0] +} + +func (x ApplicationMetadataMessage_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ApplicationMetadataMessage_Type.Descriptor instead. func (ApplicationMetadataMessage_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_ad09a6406fcf24c7, []int{0, 0} + return file_application_metadata_message_proto_rawDescGZIP(), []int{0, 0} } type ApplicationMetadataMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // This is the encoded protobuf of the application level message, i.e ChatMessage Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` // The type of protobuf message sent - Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"` } -func (m *ApplicationMetadataMessage) Reset() { *m = ApplicationMetadataMessage{} } -func (m *ApplicationMetadataMessage) String() string { return proto.CompactTextString(m) } -func (*ApplicationMetadataMessage) ProtoMessage() {} +func (x *ApplicationMetadataMessage) Reset() { + *x = ApplicationMetadataMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_application_metadata_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetadataMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetadataMessage) ProtoMessage() {} + +func (x *ApplicationMetadataMessage) ProtoReflect() protoreflect.Message { + mi := &file_application_metadata_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetadataMessage.ProtoReflect.Descriptor instead. func (*ApplicationMetadataMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ad09a6406fcf24c7, []int{0} + return file_application_metadata_message_proto_rawDescGZIP(), []int{0} } -func (m *ApplicationMetadataMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationMetadataMessage.Unmarshal(m, b) -} -func (m *ApplicationMetadataMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationMetadataMessage.Marshal(b, m, deterministic) -} -func (m *ApplicationMetadataMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationMetadataMessage.Merge(m, src) -} -func (m *ApplicationMetadataMessage) XXX_Size() int { - return xxx_messageInfo_ApplicationMetadataMessage.Size(m) -} -func (m *ApplicationMetadataMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationMetadataMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationMetadataMessage proto.InternalMessageInfo - -func (m *ApplicationMetadataMessage) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *ApplicationMetadataMessage) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *ApplicationMetadataMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *ApplicationMetadataMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type { - if m != nil { - return m.Type +func (x *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type { + if x != nil { + return x.Type } return ApplicationMetadataMessage_UNKNOWN } -func init() { - proto.RegisterEnum("protobuf.ApplicationMetadataMessage_Type", ApplicationMetadataMessage_Type_name, ApplicationMetadataMessage_Type_value) - proto.RegisterType((*ApplicationMetadataMessage)(nil), "protobuf.ApplicationMetadataMessage") +var File_application_metadata_message_proto protoreflect.FileDescriptor + +var file_application_metadata_message_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x80, + 0x12, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0xea, 0x10, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, + 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, + 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x48, 0x49, 0x50, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, + 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x1c, 0x44, + 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x07, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f, + 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, + 0x17, 0x0a, 0x13, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x4e, 0x44, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x1f, + 0x0a, 0x1b, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, + 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x32, 0x10, + 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, + 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0d, + 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, + 0x54, 0x10, 0x0e, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x4d, 0x45, 0x4e, + 0x54, 0x10, 0x0f, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x10, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x55, 0x53, 0x48, 0x5f, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, + 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, + 0x53, 0x45, 0x10, 0x11, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, + 0x12, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x53, + 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x55, 0x53, 0x48, 0x5f, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, + 0x55, 0x45, 0x53, 0x54, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, + 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, + 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x5f, + 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x19, 0x12, 0x1c, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, + 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x1b, + 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, + 0x1c, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x1d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1f, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x41, + 0x4e, 0x4f, 0x4e, 0x59, 0x4d, 0x4f, 0x55, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, + 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x21, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x43, 0x48, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x22, 0x12, 0x1b, + 0x0a, 0x17, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x0a, 0x0a, 0x06, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x24, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, + 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x59, 0x4e, + 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x44, 0x49, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x10, 0x27, 0x12, 0x11, 0x0a, + 0x0d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x42, 0x4f, 0x4f, 0x4b, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x28, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x48, + 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x29, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e, 0x43, + 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4f, + 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, + 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x41, 0x47, 0x4e, 0x45, 0x54, 0x4c, 0x49, + 0x4e, 0x4b, 0x10, 0x2b, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x52, 0x4f, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x50, 0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x2c, 0x12, + 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, + 0x2d, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2e, 0x12, 0x1b, 0x0a, + 0x17, 0x52, 0x45, 0x54, 0x52, 0x41, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, + 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, + 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, + 0x10, 0x30, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x31, 0x12, + 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x32, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x33, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x34, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x54, 0x52, 0x55, + 0x53, 0x54, 0x45, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x35, 0x12, 0x1d, 0x0a, 0x19, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x36, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x38, 0x12, 0x1e, 0x0a, + 0x1a, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x39, 0x12, 0x1e, 0x0a, + 0x1a, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, + 0x5f, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3a, 0x12, 0x16, 0x0a, + 0x12, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, + 0x45, 0x53, 0x53, 0x10, 0x3b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, + 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x45, + 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x50, 0x41, 0x49, 0x52, 0x10, 0x3e, 0x12, 0x15, + 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x4c, 0x49, + 0x4e, 0x4b, 0x53, 0x10, 0x3f, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x4e, + 0x53, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, + 0x4c, 0x10, 0x40, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x41, 0x12, 0x2b, 0x0a, 0x27, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x42, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, + 0x53, 0x41, 0x47, 0x45, 0x10, 0x43, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, + 0x49, 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, + 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x44, 0x12, 0x24, 0x0a, 0x20, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, + 0x45, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x46, 0x12, 0x25, + 0x0a, 0x21, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x45, 0x44, 0x10, 0x47, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, 0x44, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, + 0x48, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("application_metadata_message.proto", fileDescriptor_ad09a6406fcf24c7) +var ( + file_application_metadata_message_proto_rawDescOnce sync.Once + file_application_metadata_message_proto_rawDescData = file_application_metadata_message_proto_rawDesc +) + +func file_application_metadata_message_proto_rawDescGZIP() []byte { + file_application_metadata_message_proto_rawDescOnce.Do(func() { + file_application_metadata_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_application_metadata_message_proto_rawDescData) + }) + return file_application_metadata_message_proto_rawDescData } -var fileDescriptor_ad09a6406fcf24c7 = []byte{ - // 1045 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x6d, 0x73, 0x13, 0x37, - 0x10, 0x6e, 0x42, 0x9a, 0x04, 0xe5, 0x05, 0x45, 0xe4, 0xc5, 0x79, 0x4f, 0x0c, 0x84, 0x00, 0xad, - 0x69, 0xa1, 0xed, 0xb4, 0xa5, 0xb4, 0x95, 0x75, 0x1b, 0x5b, 0xf1, 0x9d, 0x74, 0x48, 0x3a, 0x77, - 0xcc, 0x17, 0x8d, 0x29, 0x2e, 0x93, 0x19, 0x20, 0x1e, 0x62, 0x3e, 0xe4, 0x27, 0xf6, 0x57, 0xf4, - 0xaf, 0x74, 0xf6, 0x7c, 0x2f, 0x4e, 0xe2, 0x90, 0x4f, 0xc9, 0xed, 0x3e, 0xda, 0xd5, 0x3e, 0xfb, - 0xec, 0xca, 0xa4, 0xda, 0xed, 0xf7, 0xdf, 0x9f, 0xfc, 0xdd, 0x1d, 0x9c, 0x9c, 0x7e, 0xf4, 0x1f, - 0x7a, 0x83, 0xee, 0xdb, 0xee, 0xa0, 0xeb, 0x3f, 0xf4, 0xce, 0xce, 0xba, 0xef, 0x7a, 0xb5, 0xfe, - 0xa7, 0xd3, 0xc1, 0x29, 0x9b, 0x4d, 0xff, 0xbc, 0xf9, 0xfc, 0x4f, 0xf5, 0xbf, 0x25, 0xb2, 0xc1, - 0xcb, 0x03, 0x51, 0x86, 0x8f, 0x86, 0x70, 0xb6, 0x45, 0x6e, 0x9f, 0x9d, 0xbc, 0xfb, 0xd8, 0x1d, - 0x7c, 0xfe, 0xd4, 0xab, 0x4c, 0xec, 0x4d, 0x1c, 0xce, 0x9b, 0xd2, 0xc0, 0x2a, 0x64, 0xa6, 0xdf, - 0x3d, 0x7f, 0x7f, 0xda, 0x7d, 0x5b, 0x99, 0x4c, 0x7d, 0xf9, 0x27, 0x7b, 0x49, 0xa6, 0x06, 0xe7, - 0xfd, 0x5e, 0xe5, 0xd6, 0xde, 0xc4, 0xe1, 0xe2, 0xb3, 0x47, 0xb5, 0x3c, 0x5f, 0xed, 0xfa, 0x5c, - 0x35, 0x77, 0xde, 0xef, 0x99, 0xf4, 0x58, 0xf5, 0x5f, 0x4a, 0xa6, 0xf0, 0x93, 0xcd, 0x91, 0x99, - 0x44, 0xb5, 0x94, 0xfe, 0x4b, 0xd1, 0xaf, 0x18, 0x25, 0xf3, 0xa2, 0xc9, 0x9d, 0x8f, 0xc0, 0x5a, - 0xde, 0x00, 0x3a, 0xc1, 0x18, 0x59, 0x14, 0x5a, 0x39, 0x2e, 0x9c, 0x4f, 0xe2, 0x80, 0x3b, 0xa0, - 0x93, 0x6c, 0x9b, 0xac, 0x47, 0x10, 0xd5, 0xc1, 0xd8, 0xa6, 0x8c, 0x33, 0x73, 0x71, 0xe4, 0x16, - 0x5b, 0x21, 0x4b, 0x31, 0x97, 0xc6, 0x4b, 0x65, 0x1d, 0x0f, 0x43, 0xee, 0xa4, 0x56, 0x74, 0x0a, - 0xcd, 0xb6, 0xa3, 0xc4, 0x45, 0xf3, 0xd7, 0xec, 0x1e, 0xd9, 0x35, 0xf0, 0x2a, 0x01, 0xeb, 0x3c, - 0x0f, 0x02, 0x03, 0xd6, 0xfa, 0x23, 0x6d, 0xbc, 0x33, 0x5c, 0x59, 0x2e, 0x52, 0xd0, 0x34, 0x7b, - 0x4c, 0x0e, 0xb8, 0x10, 0x10, 0x3b, 0x7f, 0x13, 0x76, 0x86, 0x3d, 0x21, 0x0f, 0x03, 0x10, 0xa1, - 0x54, 0x70, 0x23, 0x78, 0x96, 0xad, 0x91, 0xbb, 0x39, 0x68, 0xd4, 0x71, 0x9b, 0x2d, 0x13, 0x6a, - 0x41, 0x05, 0x17, 0xac, 0x84, 0xed, 0x92, 0xcd, 0xcb, 0xb1, 0x47, 0x01, 0x73, 0x48, 0xcd, 0x95, - 0x22, 0x7d, 0x46, 0x20, 0x9d, 0x1f, 0xef, 0xe6, 0x42, 0xe8, 0x44, 0x39, 0xba, 0xc0, 0xf6, 0xc9, - 0xf6, 0x55, 0x77, 0x9c, 0xd4, 0x43, 0x29, 0x3c, 0xf6, 0x85, 0x2e, 0xb2, 0x1d, 0xb2, 0x91, 0xf7, - 0x43, 0xe8, 0x00, 0x3c, 0x0f, 0xda, 0x60, 0x9c, 0xb4, 0x10, 0x81, 0x72, 0xf4, 0x0e, 0xab, 0x92, - 0x9d, 0x38, 0xb1, 0x4d, 0xaf, 0xb4, 0x93, 0x47, 0x52, 0x0c, 0x43, 0x18, 0x68, 0x48, 0xeb, 0xcc, - 0x90, 0x72, 0x8a, 0x0c, 0x7d, 0x19, 0xe3, 0x0d, 0xd8, 0x58, 0x2b, 0x0b, 0x74, 0x89, 0x6d, 0x92, - 0xb5, 0xab, 0xe0, 0x57, 0x09, 0x98, 0x0e, 0x65, 0xec, 0x3e, 0xd9, 0xbb, 0xc6, 0x59, 0x86, 0xb8, - 0x8b, 0x55, 0x8f, 0xcb, 0x97, 0xf2, 0x47, 0x97, 0xb1, 0xa4, 0x71, 0xee, 0xec, 0xf8, 0x0a, 0x4a, - 0x10, 0x22, 0x7d, 0x2c, 0xbd, 0x81, 0x8c, 0xe7, 0x55, 0xb6, 0x4e, 0x56, 0x1a, 0x46, 0x27, 0x71, - 0x4a, 0x8b, 0x97, 0xaa, 0x2d, 0xdd, 0xb0, 0xba, 0x35, 0xb6, 0x44, 0x16, 0x86, 0xc6, 0x00, 0x94, - 0x93, 0xae, 0x43, 0x2b, 0x88, 0x16, 0x3a, 0x8a, 0x12, 0x25, 0x5d, 0xc7, 0x07, 0x60, 0x85, 0x91, - 0x71, 0x8a, 0x5e, 0x67, 0x5b, 0x64, 0xb9, 0x74, 0x8d, 0xc4, 0xd9, 0xd8, 0x98, 0x9c, 0x9d, 0xc0, - 0x9b, 0x97, 0xde, 0xa2, 0xe3, 0xda, 0x1f, 0x6b, 0xa9, 0xe8, 0x26, 0xbb, 0x43, 0xe6, 0x62, 0xa9, - 0x0a, 0xe9, 0x6f, 0xe1, 0xfc, 0x40, 0x20, 0xcb, 0xf9, 0xd9, 0xc6, 0xdb, 0x58, 0xc7, 0x5d, 0x62, - 0xf3, 0xf1, 0xd9, 0xc1, 0x7a, 0x02, 0x08, 0x61, 0x64, 0x66, 0x76, 0x51, 0x58, 0xe3, 0x74, 0x93, - 0xa5, 0xa6, 0x7b, 0x6c, 0x83, 0xac, 0x72, 0xa5, 0x55, 0x27, 0xd2, 0x89, 0xf5, 0x11, 0x38, 0x23, - 0x85, 0xaf, 0x73, 0x27, 0x9a, 0x74, 0xbf, 0x98, 0xac, 0xb4, 0x6c, 0x03, 0x91, 0x6e, 0x43, 0x40, - 0xab, 0xd8, 0xb9, 0xd2, 0x9c, 0xa5, 0xb2, 0x48, 0x62, 0x40, 0xef, 0x31, 0x42, 0xa6, 0xeb, 0x5c, - 0xb4, 0x92, 0x98, 0xde, 0x2f, 0x54, 0x89, 0xec, 0xb6, 0xb1, 0x52, 0x01, 0xca, 0x81, 0x19, 0x42, - 0x1f, 0x14, 0xaa, 0xbc, 0xec, 0x1e, 0x4e, 0x24, 0x04, 0xf4, 0x00, 0x55, 0x37, 0x16, 0x12, 0x48, - 0x1b, 0x49, 0x6b, 0x21, 0xa0, 0x0f, 0x53, 0x26, 0x10, 0x53, 0xd7, 0xba, 0x15, 0x71, 0xd3, 0xa2, - 0x87, 0x6c, 0x95, 0xb0, 0xe1, 0x0d, 0x43, 0xe0, 0xc6, 0x37, 0xa5, 0x75, 0xda, 0x74, 0xe8, 0x23, - 0xa4, 0x31, 0xb5, 0x5b, 0x70, 0x4e, 0xaa, 0x06, 0x7d, 0xcc, 0xf6, 0xc8, 0x56, 0xd9, 0x08, 0x6e, - 0x44, 0x53, 0xb6, 0xc1, 0x47, 0xbc, 0xa1, 0xc0, 0x85, 0x52, 0xb5, 0xe8, 0x13, 0x56, 0x21, 0xcb, - 0xe9, 0x99, 0xd8, 0xe8, 0x23, 0x19, 0x82, 0x8f, 0xa5, 0x70, 0x89, 0x01, 0xfa, 0x4d, 0x11, 0x2d, - 0x9f, 0xb3, 0x6f, 0x53, 0x32, 0x87, 0xeb, 0x24, 0x9f, 0xa5, 0x5c, 0x8d, 0x35, 0x64, 0xcd, 0x80, - 0x33, 0xc3, 0x01, 0xbb, 0xe8, 0x7c, 0xca, 0x0e, 0x48, 0xf5, 0x5a, 0x3d, 0x94, 0x92, 0xfd, 0xae, - 0xa4, 0xbe, 0x00, 0x67, 0xa5, 0x58, 0xfa, 0x3d, 0xd6, 0x92, 0x1f, 0xcd, 0x33, 0xb4, 0xc1, 0x14, - 0xd2, 0xa7, 0xcf, 0x50, 0x0d, 0x97, 0xee, 0x77, 0x01, 0xf0, 0x1c, 0x43, 0xe4, 0x7b, 0x68, 0x2c, - 0xe2, 0x87, 0x42, 0x13, 0xce, 0x24, 0xd6, 0x41, 0xe0, 0x13, 0x0b, 0x86, 0xfe, 0x58, 0xb4, 0x7a, - 0x14, 0x5d, 0xd4, 0xf7, 0x53, 0xd1, 0xea, 0x4b, 0x95, 0xfb, 0x00, 0x84, 0xb4, 0x18, 0xf8, 0xe7, - 0xe1, 0x02, 0x1a, 0x43, 0x41, 0x08, 0xbc, 0x0d, 0xf4, 0x17, 0xf4, 0xa7, 0x21, 0x32, 0x89, 0xe3, - 0xca, 0x8d, 0x4a, 0xa5, 0xff, 0x5a, 0xf4, 0xdc, 0xf2, 0x36, 0x04, 0xf9, 0x66, 0xa6, 0x2f, 0x70, - 0x95, 0x94, 0x71, 0x05, 0x57, 0x02, 0xc2, 0x2b, 0x13, 0xf7, 0x1b, 0x32, 0x93, 0xf9, 0xc6, 0xd6, - 0xfd, 0xb2, 0x68, 0x76, 0x0b, 0x3a, 0xf8, 0x08, 0xd1, 0xdf, 0x0b, 0x26, 0xac, 0x16, 0x92, 0x87, - 0x1e, 0xe5, 0x62, 0xe9, 0x1f, 0x6c, 0x8b, 0x54, 0x52, 0x33, 0x28, 0x9b, 0x92, 0xa3, 0x78, 0x04, - 0x3e, 0x00, 0xc7, 0x65, 0x48, 0xff, 0x64, 0x0f, 0xc8, 0xfe, 0x58, 0x41, 0x8f, 0xee, 0x28, 0xca, - 0x71, 0x93, 0xde, 0x08, 0xf3, 0x38, 0xff, 0x40, 0xeb, 0x98, 0xb1, 0xac, 0x10, 0xda, 0xa0, 0x9c, - 0x2d, 0x78, 0x11, 0xf8, 0x0e, 0x8e, 0x78, 0x71, 0x89, 0xd8, 0x26, 0x37, 0x25, 0x45, 0x60, 0x69, - 0x80, 0x24, 0x8d, 0x4a, 0xd9, 0x8b, 0xc4, 0x3a, 0x1d, 0xc9, 0xd7, 0xf9, 0xbe, 0x08, 0xb5, 0xa1, - 0x50, 0xa8, 0x2f, 0x43, 0x59, 0x1f, 0x6b, 0x2b, 0x11, 0x61, 0xe9, 0x11, 0x56, 0x76, 0xdd, 0x2d, - 0xbc, 0x81, 0x63, 0x10, 0x38, 0xd1, 0x0d, 0x7c, 0x71, 0x4b, 0x58, 0x6c, 0x64, 0x5b, 0x86, 0xd0, - 0xc8, 0x74, 0xe4, 0xd3, 0xe8, 0xf9, 0xd5, 0x9b, 0xf5, 0x85, 0xd7, 0x73, 0xb5, 0xa7, 0x2f, 0xf2, - 0x1f, 0x20, 0x6f, 0xa6, 0xd3, 0xff, 0x9e, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x78, 0xda, 0xcb, - 0xc2, 0x27, 0x09, 0x00, 0x00, +var file_application_metadata_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_application_metadata_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_application_metadata_message_proto_goTypes = []interface{}{ + (ApplicationMetadataMessage_Type)(0), // 0: protobuf.ApplicationMetadataMessage.Type + (*ApplicationMetadataMessage)(nil), // 1: protobuf.ApplicationMetadataMessage +} +var file_application_metadata_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.ApplicationMetadataMessage.type:type_name -> protobuf.ApplicationMetadataMessage.Type + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_application_metadata_message_proto_init() } +func file_application_metadata_message_proto_init() { + if File_application_metadata_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_application_metadata_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetadataMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_application_metadata_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_application_metadata_message_proto_goTypes, + DependencyIndexes: file_application_metadata_message_proto_depIdxs, + EnumInfos: file_application_metadata_message_proto_enumTypes, + MessageInfos: file_application_metadata_message_proto_msgTypes, + }.Build() + File_application_metadata_message_proto = out.File + file_application_metadata_message_proto_rawDesc = nil + file_application_metadata_message_proto_goTypes = nil + file_application_metadata_message_proto_depIdxs = nil } diff --git a/protocol/protobuf/application_metadata_message.proto b/protocol/protobuf/application_metadata_message.proto index e976d6638..68ad324ee 100644 --- a/protocol/protobuf/application_metadata_message.proto +++ b/protocol/protobuf/application_metadata_message.proto @@ -17,15 +17,15 @@ message ApplicationMetadataMessage { CHAT_MESSAGE = 1; CONTACT_UPDATE = 2; MEMBERSHIP_UPDATE_MESSAGE = 3; - PAIR_INSTALLATION = 4; - SYNC_INSTALLATION = 5; + SYNC_PAIR_INSTALLATION = 4; + DEPRECATED_SYNC_INSTALLATION = 5 [deprecated=true]; REQUEST_ADDRESS_FOR_TRANSACTION = 6; ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION = 7; DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION = 8; REQUEST_TRANSACTION = 9; SEND_TRANSACTION = 10; DECLINE_REQUEST_TRANSACTION = 11; - SYNC_INSTALLATION_CONTACT = 12; + SYNC_INSTALLATION_CONTACT_V2 = 12; SYNC_INSTALLATION_ACCOUNT = 13; SYNC_INSTALLATION_PUBLIC_CHAT = 14; CONTACT_CODE_ADVERTISEMENT = 15; @@ -56,8 +56,8 @@ message ApplicationMetadataMessage { SYNC_BOOKMARK = 40; SYNC_CLEAR_HISTORY = 41; SYNC_SETTING = 42; - COMMUNITY_ARCHIVE_MAGNETLINK = 43; - SYNC_PROFILE_PICTURE = 44; + COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK = 43; + SYNC_PROFILE_PICTURES = 44; SYNC_ACCOUNT = 45; ACCEPT_CONTACT_REQUEST = 46; RETRACT_CONTACT_REQUEST = 47; @@ -77,7 +77,7 @@ message ApplicationMetadataMessage { SYNC_KEYPAIR = 62; SYNC_SOCIAL_LINKS = 63; SYNC_ENS_USERNAME_DETAIL = 64; - SYNC_ACTIVITY_CENTER_NOTIFICATION = 65; + SYNC_ACTIVITY_CENTER_NOTIFICATIONS = 65; SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE = 66; COMMUNITY_EVENTS_MESSAGE = 67; COMMUNITY_EDIT_SHARED_ADDRESSES = 68; diff --git a/protocol/protobuf/chat_identity.pb.go b/protocol/protobuf/chat_identity.pb.go index ffb8068a2..0beaff61d 100644 --- a/protocol/protobuf/chat_identity.pb.go +++ b/protocol/protobuf/chat_identity.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: chat_identity.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // SourceType are the predefined types of image source allowed type IdentityImage_SourceType int32 @@ -34,28 +34,53 @@ const ( IdentityImage_ENS_AVATAR IdentityImage_SourceType = 2 ) -var IdentityImage_SourceType_name = map[int32]string{ - 0: "UNKNOWN_SOURCE_TYPE", - 1: "RAW_PAYLOAD", - 2: "ENS_AVATAR", -} +// Enum value maps for IdentityImage_SourceType. +var ( + IdentityImage_SourceType_name = map[int32]string{ + 0: "UNKNOWN_SOURCE_TYPE", + 1: "RAW_PAYLOAD", + 2: "ENS_AVATAR", + } + IdentityImage_SourceType_value = map[string]int32{ + "UNKNOWN_SOURCE_TYPE": 0, + "RAW_PAYLOAD": 1, + "ENS_AVATAR": 2, + } +) -var IdentityImage_SourceType_value = map[string]int32{ - "UNKNOWN_SOURCE_TYPE": 0, - "RAW_PAYLOAD": 1, - "ENS_AVATAR": 2, +func (x IdentityImage_SourceType) Enum() *IdentityImage_SourceType { + p := new(IdentityImage_SourceType) + *p = x + return p } func (x IdentityImage_SourceType) String() string { - return proto.EnumName(IdentityImage_SourceType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (IdentityImage_SourceType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_identity_proto_enumTypes[0].Descriptor() +} + +func (IdentityImage_SourceType) Type() protoreflect.EnumType { + return &file_chat_identity_proto_enumTypes[0] +} + +func (x IdentityImage_SourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IdentityImage_SourceType.Descriptor instead. func (IdentityImage_SourceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{1, 0} + return file_chat_identity_proto_rawDescGZIP(), []int{1, 0} } // ChatIdentity represents the user defined identity associated with their public chat key type ChatIdentity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // ens_name is the valid ENS name associated with the chat key @@ -72,102 +97,110 @@ type ChatIdentity struct { // first known message timestamp in seconds (valid only for community chats for now) // 0 - unknown // 1 - no messages - FirstMessageTimestamp uint32 `protobuf:"varint,9,opt,name=first_message_timestamp,json=firstMessageTimestamp,proto3" json:"first_message_timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FirstMessageTimestamp uint32 `protobuf:"varint,9,opt,name=first_message_timestamp,json=firstMessageTimestamp,proto3" json:"first_message_timestamp,omitempty"` } -func (m *ChatIdentity) Reset() { *m = ChatIdentity{} } -func (m *ChatIdentity) String() string { return proto.CompactTextString(m) } -func (*ChatIdentity) ProtoMessage() {} +func (x *ChatIdentity) Reset() { + *x = ChatIdentity{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatIdentity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatIdentity) ProtoMessage() {} + +func (x *ChatIdentity) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatIdentity.ProtoReflect.Descriptor instead. func (*ChatIdentity) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{0} + return file_chat_identity_proto_rawDescGZIP(), []int{0} } -func (m *ChatIdentity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChatIdentity.Unmarshal(m, b) -} -func (m *ChatIdentity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChatIdentity.Marshal(b, m, deterministic) -} -func (m *ChatIdentity) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChatIdentity.Merge(m, src) -} -func (m *ChatIdentity) XXX_Size() int { - return xxx_messageInfo_ChatIdentity.Size(m) -} -func (m *ChatIdentity) XXX_DiscardUnknown() { - xxx_messageInfo_ChatIdentity.DiscardUnknown(m) -} - -var xxx_messageInfo_ChatIdentity proto.InternalMessageInfo - -func (m *ChatIdentity) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ChatIdentity) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ChatIdentity) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ChatIdentity) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ChatIdentity) GetImages() map[string]*IdentityImage { - if m != nil { - return m.Images +func (x *ChatIdentity) GetImages() map[string]*IdentityImage { + if x != nil { + return x.Images } return nil } -func (m *ChatIdentity) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *ChatIdentity) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *ChatIdentity) GetDescription() string { - if m != nil { - return m.Description +func (x *ChatIdentity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ChatIdentity) GetColor() string { - if m != nil { - return m.Color +func (x *ChatIdentity) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *ChatIdentity) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *ChatIdentity) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *ChatIdentity) GetSocialLinks() []*SocialLink { - if m != nil { - return m.SocialLinks +func (x *ChatIdentity) GetSocialLinks() []*SocialLink { + if x != nil { + return x.SocialLinks } return nil } -func (m *ChatIdentity) GetFirstMessageTimestamp() uint32 { - if m != nil { - return m.FirstMessageTimestamp +func (x *ChatIdentity) GetFirstMessageTimestamp() uint32 { + if x != nil { + return x.FirstMessageTimestamp } return 0 } // ProfileImage represents data associated with a user's profile image type IdentityImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // payload is a context based payload for the profile image data, // context is determined by the `source_type` Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` @@ -178,165 +211,287 @@ type IdentityImage struct { // encryption_keys is a list of encrypted keys that can be used to decrypted an encrypted payload EncryptionKeys [][]byte `protobuf:"bytes,4,rep,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` // encrypted signals the encryption state of the payload, default is false. - Encrypted bool `protobuf:"varint,5,opt,name=encrypted,proto3" json:"encrypted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Encrypted bool `protobuf:"varint,5,opt,name=encrypted,proto3" json:"encrypted,omitempty"` } -func (m *IdentityImage) Reset() { *m = IdentityImage{} } -func (m *IdentityImage) String() string { return proto.CompactTextString(m) } -func (*IdentityImage) ProtoMessage() {} +func (x *IdentityImage) Reset() { + *x = IdentityImage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IdentityImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IdentityImage) ProtoMessage() {} + +func (x *IdentityImage) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IdentityImage.ProtoReflect.Descriptor instead. func (*IdentityImage) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{1} + return file_chat_identity_proto_rawDescGZIP(), []int{1} } -func (m *IdentityImage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IdentityImage.Unmarshal(m, b) -} -func (m *IdentityImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IdentityImage.Marshal(b, m, deterministic) -} -func (m *IdentityImage) XXX_Merge(src proto.Message) { - xxx_messageInfo_IdentityImage.Merge(m, src) -} -func (m *IdentityImage) XXX_Size() int { - return xxx_messageInfo_IdentityImage.Size(m) -} -func (m *IdentityImage) XXX_DiscardUnknown() { - xxx_messageInfo_IdentityImage.DiscardUnknown(m) -} - -var xxx_messageInfo_IdentityImage proto.InternalMessageInfo - -func (m *IdentityImage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *IdentityImage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *IdentityImage) GetSourceType() IdentityImage_SourceType { - if m != nil { - return m.SourceType +func (x *IdentityImage) GetSourceType() IdentityImage_SourceType { + if x != nil { + return x.SourceType } return IdentityImage_UNKNOWN_SOURCE_TYPE } -func (m *IdentityImage) GetImageType() ImageType { - if m != nil { - return m.ImageType +func (x *IdentityImage) GetImageType() ImageType { + if x != nil { + return x.ImageType } return ImageType_UNKNOWN_IMAGE_TYPE } -func (m *IdentityImage) GetEncryptionKeys() [][]byte { - if m != nil { - return m.EncryptionKeys +func (x *IdentityImage) GetEncryptionKeys() [][]byte { + if x != nil { + return x.EncryptionKeys } return nil } -func (m *IdentityImage) GetEncrypted() bool { - if m != nil { - return m.Encrypted +func (x *IdentityImage) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } // SocialLinks represents social link assosiated with given chat identity (personal/community) type SocialLink struct { - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` } -func (m *SocialLink) Reset() { *m = SocialLink{} } -func (m *SocialLink) String() string { return proto.CompactTextString(m) } -func (*SocialLink) ProtoMessage() {} +func (x *SocialLink) Reset() { + *x = SocialLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SocialLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SocialLink) ProtoMessage() {} + +func (x *SocialLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SocialLink.ProtoReflect.Descriptor instead. func (*SocialLink) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{2} + return file_chat_identity_proto_rawDescGZIP(), []int{2} } -func (m *SocialLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SocialLink.Unmarshal(m, b) -} -func (m *SocialLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SocialLink.Marshal(b, m, deterministic) -} -func (m *SocialLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_SocialLink.Merge(m, src) -} -func (m *SocialLink) XXX_Size() int { - return xxx_messageInfo_SocialLink.Size(m) -} -func (m *SocialLink) XXX_DiscardUnknown() { - xxx_messageInfo_SocialLink.DiscardUnknown(m) -} - -var xxx_messageInfo_SocialLink proto.InternalMessageInfo - -func (m *SocialLink) GetText() string { - if m != nil { - return m.Text +func (x *SocialLink) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *SocialLink) GetUrl() string { - if m != nil { - return m.Url +func (x *SocialLink) GetUrl() string { + if x != nil { + return x.Url } return "" } -func init() { - proto.RegisterEnum("protobuf.IdentityImage_SourceType", IdentityImage_SourceType_name, IdentityImage_SourceType_value) - proto.RegisterType((*ChatIdentity)(nil), "protobuf.ChatIdentity") - proto.RegisterMapType((map[string]*IdentityImage)(nil), "protobuf.ChatIdentity.ImagesEntry") - proto.RegisterType((*IdentityImage)(nil), "protobuf.IdentityImage") - proto.RegisterType((*SocialLink)(nil), "protobuf.SocialLink") +var File_chat_identity_proto protoreflect.FileDescriptor + +var file_chat_identity_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, + 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x03, 0x0a, + 0x0c, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, + 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x37, 0x0a, 0x0c, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, + 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x52, 0x0a, 0x0b, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xb1, 0x02, 0x0a, 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0b, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x22, 0x46, 0x0a, 0x0a, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x41, 0x57, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, + 0x41, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x53, 0x5f, 0x41, 0x56, 0x41, 0x54, + 0x41, 0x52, 0x10, 0x02, 0x22, 0x32, 0x0a, 0x0a, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, + 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("chat_identity.proto", fileDescriptor_7a652489000a5879) +var ( + file_chat_identity_proto_rawDescOnce sync.Once + file_chat_identity_proto_rawDescData = file_chat_identity_proto_rawDesc +) + +func file_chat_identity_proto_rawDescGZIP() []byte { + file_chat_identity_proto_rawDescOnce.Do(func() { + file_chat_identity_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_identity_proto_rawDescData) + }) + return file_chat_identity_proto_rawDescData } -var fileDescriptor_7a652489000a5879 = []byte{ - // 520 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x52, 0x4f, 0x6f, 0xda, 0x4e, - 0x10, 0xfd, 0x19, 0x13, 0xfe, 0x8c, 0x81, 0xa0, 0x25, 0x3f, 0xe1, 0x46, 0x3d, 0xb8, 0x5c, 0xca, - 0xa5, 0xae, 0x44, 0xa5, 0xb6, 0x4a, 0x4f, 0x2e, 0xa5, 0x52, 0x94, 0x14, 0xa2, 0x85, 0x34, 0x4a, - 0x2f, 0xab, 0x8d, 0xd9, 0x24, 0x5b, 0xfc, 0x4f, 0xde, 0xa5, 0xaa, 0x3f, 0x56, 0xbe, 0x61, 0xe5, - 0xb1, 0x1d, 0x93, 0x93, 0xdf, 0xbc, 0x37, 0xfb, 0x76, 0x76, 0x9e, 0x61, 0xe4, 0x3f, 0x72, 0xcd, - 0xe4, 0x56, 0x44, 0x5a, 0xea, 0xcc, 0x4d, 0xd2, 0x58, 0xc7, 0xa4, 0x83, 0x9f, 0xbb, 0xfd, 0xfd, - 0xa9, 0x25, 0xa2, 0x7d, 0xa8, 0x0a, 0x7a, 0xf2, 0x64, 0x42, 0x6f, 0xfe, 0xc8, 0xf5, 0x79, 0xd9, - 0x4d, 0x4e, 0xe0, 0xc8, 0x0f, 0x62, 0x7f, 0x67, 0x1b, 0x8e, 0x31, 0x6d, 0xd2, 0xa2, 0x20, 0xaf, - 0xa0, 0x23, 0x22, 0xc5, 0x22, 0x1e, 0x0a, 0xbb, 0xe1, 0x18, 0xd3, 0x2e, 0x6d, 0x8b, 0x48, 0x2d, - 0x79, 0x28, 0xc8, 0x19, 0xb4, 0x64, 0xc8, 0x1f, 0x84, 0xb2, 0x4d, 0xc7, 0x9c, 0x5a, 0xb3, 0x89, - 0x5b, 0xdd, 0xe4, 0x1e, 0x1a, 0xbb, 0xe7, 0xd8, 0xb4, 0x88, 0x74, 0x9a, 0xd1, 0xf2, 0x04, 0x79, - 0x03, 0xbd, 0xad, 0x54, 0x49, 0xc0, 0xb3, 0xc2, 0xba, 0x89, 0xd6, 0x56, 0xc9, 0xa1, 0xbd, 0x03, - 0xd6, 0x56, 0x28, 0x3f, 0x95, 0x89, 0x96, 0x71, 0x64, 0x1f, 0x95, 0x1d, 0x35, 0x85, 0x13, 0xc7, - 0x41, 0x9c, 0xda, 0x2d, 0xd4, 0x8a, 0x22, 0x67, 0x45, 0x18, 0xff, 0x96, 0x76, 0xbb, 0x60, 0xb1, - 0x20, 0x9f, 0xa0, 0xa7, 0x62, 0x5f, 0xf2, 0x80, 0x05, 0x32, 0xda, 0x29, 0xbb, 0x83, 0x23, 0x9f, - 0xd4, 0x23, 0xaf, 0x51, 0xbd, 0x94, 0xd1, 0x8e, 0x5a, 0xea, 0x19, 0x2b, 0xf2, 0x11, 0xc6, 0xf7, - 0x32, 0x55, 0x9a, 0x85, 0x42, 0x29, 0xfe, 0x20, 0x98, 0x96, 0xa1, 0x50, 0x9a, 0x87, 0x89, 0xdd, - 0x75, 0x8c, 0x69, 0x9f, 0xfe, 0x8f, 0xf2, 0x8f, 0x42, 0xdd, 0x54, 0xe2, 0x29, 0x05, 0xeb, 0xe0, - 0xe1, 0x64, 0x08, 0xe6, 0x4e, 0x64, 0xb8, 0xdb, 0x2e, 0xcd, 0x21, 0x79, 0x07, 0x47, 0x7f, 0x78, - 0xb0, 0x2f, 0xd6, 0x6a, 0xcd, 0xc6, 0xf5, 0x28, 0xd5, 0xe6, 0xf0, 0x3c, 0x2d, 0xba, 0xce, 0x1a, - 0x9f, 0x8d, 0xc9, 0x53, 0x03, 0xfa, 0x2f, 0x44, 0x62, 0x43, 0x3b, 0xe1, 0x59, 0x10, 0xf3, 0x2d, - 0x5a, 0xf7, 0x68, 0x55, 0x92, 0x39, 0x58, 0x2a, 0xde, 0xa7, 0xbe, 0x60, 0x3a, 0x4b, 0x8a, 0x4b, - 0x06, 0x87, 0x11, 0xbd, 0xf0, 0x71, 0xd7, 0xd8, 0xba, 0xc9, 0x12, 0x41, 0x41, 0x3d, 0x63, 0x32, - 0x03, 0xc0, 0xc0, 0x0a, 0x0f, 0x13, 0x3d, 0x46, 0x07, 0x1e, 0xb9, 0x86, 0x87, 0xba, 0xb2, 0x82, - 0xe4, 0x2d, 0x1c, 0x8b, 0xc8, 0x4f, 0x33, 0xcc, 0x88, 0xed, 0x44, 0xa6, 0xec, 0xa6, 0x63, 0x4e, - 0x7b, 0x74, 0x50, 0xd3, 0x17, 0x22, 0x53, 0xe4, 0x35, 0x74, 0x4b, 0x46, 0x6c, 0x31, 0xde, 0x0e, - 0xad, 0x89, 0xc9, 0x77, 0x80, 0x7a, 0x28, 0x32, 0x86, 0xd1, 0xf5, 0xf2, 0x62, 0xb9, 0xba, 0x59, - 0xb2, 0xf5, 0xea, 0x9a, 0xce, 0x17, 0x6c, 0x73, 0x7b, 0xb5, 0x18, 0xfe, 0x47, 0x8e, 0xc1, 0xa2, - 0xde, 0x0d, 0xbb, 0xf2, 0x6e, 0x2f, 0x57, 0xde, 0xb7, 0xa1, 0x41, 0x06, 0x00, 0x8b, 0xe5, 0x9a, - 0x79, 0x3f, 0xbd, 0x8d, 0x47, 0x87, 0x8d, 0xc9, 0x2c, 0xf7, 0xa9, 0xe2, 0x24, 0x04, 0x9a, 0x5a, - 0xfc, 0xd5, 0x65, 0x0e, 0x88, 0xf3, 0x68, 0xf6, 0x69, 0x50, 0xfe, 0xdd, 0x39, 0xfc, 0xda, 0xff, - 0x65, 0xb9, 0xef, 0xbf, 0x54, 0xcf, 0xbc, 0x6b, 0x21, 0xfa, 0xf0, 0x2f, 0x00, 0x00, 0xff, 0xff, - 0x4e, 0xae, 0x6d, 0x0e, 0x5f, 0x03, 0x00, 0x00, +var file_chat_identity_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_chat_identity_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_chat_identity_proto_goTypes = []interface{}{ + (IdentityImage_SourceType)(0), // 0: protobuf.IdentityImage.SourceType + (*ChatIdentity)(nil), // 1: protobuf.ChatIdentity + (*IdentityImage)(nil), // 2: protobuf.IdentityImage + (*SocialLink)(nil), // 3: protobuf.SocialLink + nil, // 4: protobuf.ChatIdentity.ImagesEntry + (ImageType)(0), // 5: protobuf.ImageType +} +var file_chat_identity_proto_depIdxs = []int32{ + 4, // 0: protobuf.ChatIdentity.images:type_name -> protobuf.ChatIdentity.ImagesEntry + 3, // 1: protobuf.ChatIdentity.social_links:type_name -> protobuf.SocialLink + 0, // 2: protobuf.IdentityImage.source_type:type_name -> protobuf.IdentityImage.SourceType + 5, // 3: protobuf.IdentityImage.image_type:type_name -> protobuf.ImageType + 2, // 4: protobuf.ChatIdentity.ImagesEntry.value:type_name -> protobuf.IdentityImage + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_chat_identity_proto_init() } +func file_chat_identity_proto_init() { + if File_chat_identity_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_chat_identity_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatIdentity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_identity_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IdentityImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_identity_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SocialLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_chat_identity_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_chat_identity_proto_goTypes, + DependencyIndexes: file_chat_identity_proto_depIdxs, + EnumInfos: file_chat_identity_proto_enumTypes, + MessageInfos: file_chat_identity_proto_msgTypes, + }.Build() + File_chat_identity_proto = out.File + file_chat_identity_proto_rawDesc = nil + file_chat_identity_proto_goTypes = nil + file_chat_identity_proto_depIdxs = nil } diff --git a/protocol/protobuf/chat_message.pb.go b/protocol/protobuf/chat_message.pb.go index ad7c490bd..0de804b6e 100644 --- a/protocol/protobuf/chat_message.pb.go +++ b/protocol/protobuf/chat_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: chat_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type AudioMessage_AudioType int32 @@ -28,24 +28,45 @@ const ( AudioMessage_AMR AudioMessage_AudioType = 2 ) -var AudioMessage_AudioType_name = map[int32]string{ - 0: "UNKNOWN_AUDIO_TYPE", - 1: "AAC", - 2: "AMR", -} +// Enum value maps for AudioMessage_AudioType. +var ( + AudioMessage_AudioType_name = map[int32]string{ + 0: "UNKNOWN_AUDIO_TYPE", + 1: "AAC", + 2: "AMR", + } + AudioMessage_AudioType_value = map[string]int32{ + "UNKNOWN_AUDIO_TYPE": 0, + "AAC": 1, + "AMR": 2, + } +) -var AudioMessage_AudioType_value = map[string]int32{ - "UNKNOWN_AUDIO_TYPE": 0, - "AAC": 1, - "AMR": 2, +func (x AudioMessage_AudioType) Enum() *AudioMessage_AudioType { + p := new(AudioMessage_AudioType) + *p = x + return p } func (x AudioMessage_AudioType) String() string { - return proto.EnumName(AudioMessage_AudioType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (AudioMessage_AudioType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[0].Descriptor() +} + +func (AudioMessage_AudioType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[0] +} + +func (x AudioMessage_AudioType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AudioMessage_AudioType.Descriptor instead. func (AudioMessage_AudioType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{2, 0} + return file_chat_message_proto_rawDescGZIP(), []int{2, 0} } type UnfurledLink_LinkType int32 @@ -55,22 +76,43 @@ const ( UnfurledLink_IMAGE UnfurledLink_LinkType = 1 ) -var UnfurledLink_LinkType_name = map[int32]string{ - 0: "LINK", - 1: "IMAGE", -} +// Enum value maps for UnfurledLink_LinkType. +var ( + UnfurledLink_LinkType_name = map[int32]string{ + 0: "LINK", + 1: "IMAGE", + } + UnfurledLink_LinkType_value = map[string]int32{ + "LINK": 0, + "IMAGE": 1, + } +) -var UnfurledLink_LinkType_value = map[string]int32{ - "LINK": 0, - "IMAGE": 1, +func (x UnfurledLink_LinkType) Enum() *UnfurledLink_LinkType { + p := new(UnfurledLink_LinkType) + *p = x + return p } func (x UnfurledLink_LinkType) String() string { - return proto.EnumName(UnfurledLink_LinkType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (UnfurledLink_LinkType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[1].Descriptor() +} + +func (UnfurledLink_LinkType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[1] +} + +func (x UnfurledLink_LinkType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UnfurledLink_LinkType.Descriptor instead. func (UnfurledLink_LinkType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{10, 0} + return file_chat_message_proto_rawDescGZIP(), []int{10, 0} } type ChatMessage_ContentType int32 @@ -102,238 +144,287 @@ const ( ChatMessage_SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED ChatMessage_ContentType = 17 ) -var ChatMessage_ContentType_name = map[int32]string{ - 0: "UNKNOWN_CONTENT_TYPE", - 1: "TEXT_PLAIN", - 2: "STICKER", - 3: "STATUS", - 4: "EMOJI", - 5: "TRANSACTION_COMMAND", - 6: "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP", - 7: "IMAGE", - 8: "AUDIO", - 9: "COMMUNITY", - 10: "SYSTEM_MESSAGE_GAP", - 11: "CONTACT_REQUEST", - 12: "DISCORD_MESSAGE", - 13: "IDENTITY_VERIFICATION", - 14: "SYSTEM_MESSAGE_PINNED_MESSAGE", - 15: "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT", - 16: "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED", - 17: "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED", -} +// Enum value maps for ChatMessage_ContentType. +var ( + ChatMessage_ContentType_name = map[int32]string{ + 0: "UNKNOWN_CONTENT_TYPE", + 1: "TEXT_PLAIN", + 2: "STICKER", + 3: "STATUS", + 4: "EMOJI", + 5: "TRANSACTION_COMMAND", + 6: "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP", + 7: "IMAGE", + 8: "AUDIO", + 9: "COMMUNITY", + 10: "SYSTEM_MESSAGE_GAP", + 11: "CONTACT_REQUEST", + 12: "DISCORD_MESSAGE", + 13: "IDENTITY_VERIFICATION", + 14: "SYSTEM_MESSAGE_PINNED_MESSAGE", + 15: "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT", + 16: "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED", + 17: "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED", + } + ChatMessage_ContentType_value = map[string]int32{ + "UNKNOWN_CONTENT_TYPE": 0, + "TEXT_PLAIN": 1, + "STICKER": 2, + "STATUS": 3, + "EMOJI": 4, + "TRANSACTION_COMMAND": 5, + "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP": 6, + "IMAGE": 7, + "AUDIO": 8, + "COMMUNITY": 9, + "SYSTEM_MESSAGE_GAP": 10, + "CONTACT_REQUEST": 11, + "DISCORD_MESSAGE": 12, + "IDENTITY_VERIFICATION": 13, + "SYSTEM_MESSAGE_PINNED_MESSAGE": 14, + "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT": 15, + "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED": 16, + "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED": 17, + } +) -var ChatMessage_ContentType_value = map[string]int32{ - "UNKNOWN_CONTENT_TYPE": 0, - "TEXT_PLAIN": 1, - "STICKER": 2, - "STATUS": 3, - "EMOJI": 4, - "TRANSACTION_COMMAND": 5, - "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP": 6, - "IMAGE": 7, - "AUDIO": 8, - "COMMUNITY": 9, - "SYSTEM_MESSAGE_GAP": 10, - "CONTACT_REQUEST": 11, - "DISCORD_MESSAGE": 12, - "IDENTITY_VERIFICATION": 13, - "SYSTEM_MESSAGE_PINNED_MESSAGE": 14, - "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT": 15, - "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED": 16, - "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED": 17, +func (x ChatMessage_ContentType) Enum() *ChatMessage_ContentType { + p := new(ChatMessage_ContentType) + *p = x + return p } func (x ChatMessage_ContentType) String() string { - return proto.EnumName(ChatMessage_ContentType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ChatMessage_ContentType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[2].Descriptor() +} + +func (ChatMessage_ContentType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[2] +} + +func (x ChatMessage_ContentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ChatMessage_ContentType.Descriptor instead. func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{11, 0} + return file_chat_message_proto_rawDescGZIP(), []int{11, 0} } type StickerMessage struct { - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Pack int32 `protobuf:"varint,2,opt,name=pack,proto3" json:"pack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Pack int32 `protobuf:"varint,2,opt,name=pack,proto3" json:"pack,omitempty"` } -func (m *StickerMessage) Reset() { *m = StickerMessage{} } -func (m *StickerMessage) String() string { return proto.CompactTextString(m) } -func (*StickerMessage) ProtoMessage() {} +func (x *StickerMessage) Reset() { + *x = StickerMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StickerMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StickerMessage) ProtoMessage() {} + +func (x *StickerMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StickerMessage.ProtoReflect.Descriptor instead. func (*StickerMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{0} + return file_chat_message_proto_rawDescGZIP(), []int{0} } -func (m *StickerMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StickerMessage.Unmarshal(m, b) -} -func (m *StickerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StickerMessage.Marshal(b, m, deterministic) -} -func (m *StickerMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_StickerMessage.Merge(m, src) -} -func (m *StickerMessage) XXX_Size() int { - return xxx_messageInfo_StickerMessage.Size(m) -} -func (m *StickerMessage) XXX_DiscardUnknown() { - xxx_messageInfo_StickerMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_StickerMessage proto.InternalMessageInfo - -func (m *StickerMessage) GetHash() string { - if m != nil { - return m.Hash +func (x *StickerMessage) GetHash() string { + if x != nil { + return x.Hash } return "" } -func (m *StickerMessage) GetPack() int32 { - if m != nil { - return m.Pack +func (x *StickerMessage) GetPack() int32 { + if x != nil { + return x.Pack } return 0 } type ImageMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Type ImageType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.ImageType" json:"type,omitempty"` - AlbumId string `protobuf:"bytes,3,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` - Width uint32 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` - Height uint32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` - AlbumImagesCount uint32 `protobuf:"varint,6,opt,name=album_images_count,json=albumImagesCount,proto3" json:"album_images_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Type ImageType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.ImageType" json:"type,omitempty"` + AlbumId string `protobuf:"bytes,3,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + Width uint32 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + AlbumImagesCount uint32 `protobuf:"varint,6,opt,name=album_images_count,json=albumImagesCount,proto3" json:"album_images_count,omitempty"` } -func (m *ImageMessage) Reset() { *m = ImageMessage{} } -func (m *ImageMessage) String() string { return proto.CompactTextString(m) } -func (*ImageMessage) ProtoMessage() {} +func (x *ImageMessage) Reset() { + *x = ImageMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageMessage) ProtoMessage() {} + +func (x *ImageMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImageMessage.ProtoReflect.Descriptor instead. func (*ImageMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{1} + return file_chat_message_proto_rawDescGZIP(), []int{1} } -func (m *ImageMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ImageMessage.Unmarshal(m, b) -} -func (m *ImageMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ImageMessage.Marshal(b, m, deterministic) -} -func (m *ImageMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ImageMessage.Merge(m, src) -} -func (m *ImageMessage) XXX_Size() int { - return xxx_messageInfo_ImageMessage.Size(m) -} -func (m *ImageMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ImageMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ImageMessage proto.InternalMessageInfo - -func (m *ImageMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *ImageMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *ImageMessage) GetType() ImageType { - if m != nil { - return m.Type +func (x *ImageMessage) GetType() ImageType { + if x != nil { + return x.Type } return ImageType_UNKNOWN_IMAGE_TYPE } -func (m *ImageMessage) GetAlbumId() string { - if m != nil { - return m.AlbumId +func (x *ImageMessage) GetAlbumId() string { + if x != nil { + return x.AlbumId } return "" } -func (m *ImageMessage) GetWidth() uint32 { - if m != nil { - return m.Width +func (x *ImageMessage) GetWidth() uint32 { + if x != nil { + return x.Width } return 0 } -func (m *ImageMessage) GetHeight() uint32 { - if m != nil { - return m.Height +func (x *ImageMessage) GetHeight() uint32 { + if x != nil { + return x.Height } return 0 } -func (m *ImageMessage) GetAlbumImagesCount() uint32 { - if m != nil { - return m.AlbumImagesCount +func (x *ImageMessage) GetAlbumImagesCount() uint32 { + if x != nil { + return x.AlbumImagesCount } return 0 } type AudioMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Type AudioMessage_AudioType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.AudioMessage_AudioType" json:"type,omitempty"` - DurationMs uint64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Type AudioMessage_AudioType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.AudioMessage_AudioType" json:"type,omitempty"` + DurationMs uint64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` } -func (m *AudioMessage) Reset() { *m = AudioMessage{} } -func (m *AudioMessage) String() string { return proto.CompactTextString(m) } -func (*AudioMessage) ProtoMessage() {} +func (x *AudioMessage) Reset() { + *x = AudioMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AudioMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AudioMessage) ProtoMessage() {} + +func (x *AudioMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AudioMessage.ProtoReflect.Descriptor instead. func (*AudioMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{2} + return file_chat_message_proto_rawDescGZIP(), []int{2} } -func (m *AudioMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AudioMessage.Unmarshal(m, b) -} -func (m *AudioMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AudioMessage.Marshal(b, m, deterministic) -} -func (m *AudioMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_AudioMessage.Merge(m, src) -} -func (m *AudioMessage) XXX_Size() int { - return xxx_messageInfo_AudioMessage.Size(m) -} -func (m *AudioMessage) XXX_DiscardUnknown() { - xxx_messageInfo_AudioMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_AudioMessage proto.InternalMessageInfo - -func (m *AudioMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *AudioMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *AudioMessage) GetType() AudioMessage_AudioType { - if m != nil { - return m.Type +func (x *AudioMessage) GetType() AudioMessage_AudioType { + if x != nil { + return x.Type } return AudioMessage_UNKNOWN_AUDIO_TYPE } -func (m *AudioMessage) GetDurationMs() uint64 { - if m != nil { - return m.DurationMs +func (x *AudioMessage) GetDurationMs() uint64 { + if x != nil { + return x.DurationMs } return 0 } type EditMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // Text of the message Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` @@ -342,639 +433,703 @@ type EditMessage struct { // Grant for community edit messages Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` + ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` } -func (m *EditMessage) Reset() { *m = EditMessage{} } -func (m *EditMessage) String() string { return proto.CompactTextString(m) } -func (*EditMessage) ProtoMessage() {} +func (x *EditMessage) Reset() { + *x = EditMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditMessage) ProtoMessage() {} + +func (x *EditMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditMessage.ProtoReflect.Descriptor instead. func (*EditMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{3} + return file_chat_message_proto_rawDescGZIP(), []int{3} } -func (m *EditMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EditMessage.Unmarshal(m, b) -} -func (m *EditMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EditMessage.Marshal(b, m, deterministic) -} -func (m *EditMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_EditMessage.Merge(m, src) -} -func (m *EditMessage) XXX_Size() int { - return xxx_messageInfo_EditMessage.Size(m) -} -func (m *EditMessage) XXX_DiscardUnknown() { - xxx_messageInfo_EditMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_EditMessage proto.InternalMessageInfo - -func (m *EditMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *EditMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *EditMessage) GetText() string { - if m != nil { - return m.Text +func (x *EditMessage) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *EditMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *EditMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *EditMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *EditMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *EditMessage) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *EditMessage) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *EditMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *EditMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *EditMessage) GetContentType() ChatMessage_ContentType { - if m != nil { - return m.ContentType +func (x *EditMessage) GetContentType() ChatMessage_ContentType { + if x != nil { + return x.ContentType } return ChatMessage_UNKNOWN_CONTENT_TYPE } type DeleteMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` MessageId string `protobuf:"bytes,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // Grant for community delete messages Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - DeletedBy string `protobuf:"bytes,6,opt,name=deleted_by,json=deletedBy,proto3" json:"deleted_by,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` + DeletedBy string `protobuf:"bytes,6,opt,name=deleted_by,json=deletedBy,proto3" json:"deleted_by,omitempty"` } -func (m *DeleteMessage) Reset() { *m = DeleteMessage{} } -func (m *DeleteMessage) String() string { return proto.CompactTextString(m) } -func (*DeleteMessage) ProtoMessage() {} +func (x *DeleteMessage) Reset() { + *x = DeleteMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteMessage) ProtoMessage() {} + +func (x *DeleteMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteMessage.ProtoReflect.Descriptor instead. func (*DeleteMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{4} + return file_chat_message_proto_rawDescGZIP(), []int{4} } -func (m *DeleteMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteMessage.Unmarshal(m, b) -} -func (m *DeleteMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteMessage.Marshal(b, m, deterministic) -} -func (m *DeleteMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteMessage.Merge(m, src) -} -func (m *DeleteMessage) XXX_Size() int { - return xxx_messageInfo_DeleteMessage.Size(m) -} -func (m *DeleteMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteMessage proto.InternalMessageInfo - -func (m *DeleteMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeleteMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeleteMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeleteMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *DeleteMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DeleteMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *DeleteMessage) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *DeleteMessage) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *DeleteMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *DeleteMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *DeleteMessage) GetDeletedBy() string { - if m != nil { - return m.DeletedBy +func (x *DeleteMessage) GetDeletedBy() string { + if x != nil { + return x.DeletedBy } return "" } -type DeleteForMeMessage struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type SyncDeleteForMeMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } -func (m *DeleteForMeMessage) Reset() { *m = DeleteForMeMessage{} } -func (m *DeleteForMeMessage) String() string { return proto.CompactTextString(m) } -func (*DeleteForMeMessage) ProtoMessage() {} -func (*DeleteForMeMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{5} +func (x *SyncDeleteForMeMessage) Reset() { + *x = SyncDeleteForMeMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeleteForMeMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteForMeMessage.Unmarshal(m, b) -} -func (m *DeleteForMeMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteForMeMessage.Marshal(b, m, deterministic) -} -func (m *DeleteForMeMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteForMeMessage.Merge(m, src) -} -func (m *DeleteForMeMessage) XXX_Size() int { - return xxx_messageInfo_DeleteForMeMessage.Size(m) -} -func (m *DeleteForMeMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteForMeMessage.DiscardUnknown(m) +func (x *SyncDeleteForMeMessage) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DeleteForMeMessage proto.InternalMessageInfo +func (*SyncDeleteForMeMessage) ProtoMessage() {} -func (m *DeleteForMeMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncDeleteForMeMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncDeleteForMeMessage.ProtoReflect.Descriptor instead. +func (*SyncDeleteForMeMessage) Descriptor() ([]byte, []int) { + return file_chat_message_proto_rawDescGZIP(), []int{5} +} + +func (x *SyncDeleteForMeMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeleteForMeMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *SyncDeleteForMeMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } type DiscordMessage struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - TimestampEdited string `protobuf:"bytes,4,opt,name=timestampEdited,proto3" json:"timestampEdited,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` - Author *DiscordMessageAuthor `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"` - Reference *DiscordMessageReference `protobuf:"bytes,7,opt,name=reference,proto3" json:"reference,omitempty"` - Attachments []*DiscordMessageAttachment `protobuf:"bytes,8,rep,name=attachments,proto3" json:"attachments,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + TimestampEdited string `protobuf:"bytes,4,opt,name=timestampEdited,proto3" json:"timestampEdited,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Author *DiscordMessageAuthor `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"` + Reference *DiscordMessageReference `protobuf:"bytes,7,opt,name=reference,proto3" json:"reference,omitempty"` + Attachments []*DiscordMessageAttachment `protobuf:"bytes,8,rep,name=attachments,proto3" json:"attachments,omitempty"` } -func (m *DiscordMessage) Reset() { *m = DiscordMessage{} } -func (m *DiscordMessage) String() string { return proto.CompactTextString(m) } -func (*DiscordMessage) ProtoMessage() {} +func (x *DiscordMessage) Reset() { + *x = DiscordMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessage) ProtoMessage() {} + +func (x *DiscordMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessage.ProtoReflect.Descriptor instead. func (*DiscordMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{6} + return file_chat_message_proto_rawDescGZIP(), []int{6} } -func (m *DiscordMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessage.Unmarshal(m, b) -} -func (m *DiscordMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessage.Marshal(b, m, deterministic) -} -func (m *DiscordMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessage.Merge(m, src) -} -func (m *DiscordMessage) XXX_Size() int { - return xxx_messageInfo_DiscordMessage.Size(m) -} -func (m *DiscordMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessage proto.InternalMessageInfo - -func (m *DiscordMessage) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessage) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessage) GetType() string { - if m != nil { - return m.Type +func (x *DiscordMessage) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *DiscordMessage) GetTimestamp() string { - if m != nil { - return m.Timestamp +func (x *DiscordMessage) GetTimestamp() string { + if x != nil { + return x.Timestamp } return "" } -func (m *DiscordMessage) GetTimestampEdited() string { - if m != nil { - return m.TimestampEdited +func (x *DiscordMessage) GetTimestampEdited() string { + if x != nil { + return x.TimestampEdited } return "" } -func (m *DiscordMessage) GetContent() string { - if m != nil { - return m.Content +func (x *DiscordMessage) GetContent() string { + if x != nil { + return x.Content } return "" } -func (m *DiscordMessage) GetAuthor() *DiscordMessageAuthor { - if m != nil { - return m.Author +func (x *DiscordMessage) GetAuthor() *DiscordMessageAuthor { + if x != nil { + return x.Author } return nil } -func (m *DiscordMessage) GetReference() *DiscordMessageReference { - if m != nil { - return m.Reference +func (x *DiscordMessage) GetReference() *DiscordMessageReference { + if x != nil { + return x.Reference } return nil } -func (m *DiscordMessage) GetAttachments() []*DiscordMessageAttachment { - if m != nil { - return m.Attachments +func (x *DiscordMessage) GetAttachments() []*DiscordMessageAttachment { + if x != nil { + return x.Attachments } return nil } type DiscordMessageAuthor struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Discriminator string `protobuf:"bytes,3,opt,name=discriminator,proto3" json:"discriminator,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - AvatarUrl string `protobuf:"bytes,5,opt,name=avatarUrl,proto3" json:"avatarUrl,omitempty"` - AvatarImagePayload []byte `protobuf:"bytes,6,opt,name=avatarImagePayload,proto3" json:"avatarImagePayload,omitempty"` - LocalUrl string `protobuf:"bytes,7,opt,name=localUrl,proto3" json:"localUrl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Discriminator string `protobuf:"bytes,3,opt,name=discriminator,proto3" json:"discriminator,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + AvatarUrl string `protobuf:"bytes,5,opt,name=avatarUrl,proto3" json:"avatarUrl,omitempty"` + AvatarImagePayload []byte `protobuf:"bytes,6,opt,name=avatarImagePayload,proto3" json:"avatarImagePayload,omitempty"` + LocalUrl string `protobuf:"bytes,7,opt,name=localUrl,proto3" json:"localUrl,omitempty"` } -func (m *DiscordMessageAuthor) Reset() { *m = DiscordMessageAuthor{} } -func (m *DiscordMessageAuthor) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageAuthor) ProtoMessage() {} +func (x *DiscordMessageAuthor) Reset() { + *x = DiscordMessageAuthor{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageAuthor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageAuthor) ProtoMessage() {} + +func (x *DiscordMessageAuthor) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageAuthor.ProtoReflect.Descriptor instead. func (*DiscordMessageAuthor) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{7} + return file_chat_message_proto_rawDescGZIP(), []int{7} } -func (m *DiscordMessageAuthor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageAuthor.Unmarshal(m, b) -} -func (m *DiscordMessageAuthor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageAuthor.Marshal(b, m, deterministic) -} -func (m *DiscordMessageAuthor) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageAuthor.Merge(m, src) -} -func (m *DiscordMessageAuthor) XXX_Size() int { - return xxx_messageInfo_DiscordMessageAuthor.Size(m) -} -func (m *DiscordMessageAuthor) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageAuthor.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageAuthor proto.InternalMessageInfo - -func (m *DiscordMessageAuthor) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessageAuthor) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessageAuthor) GetName() string { - if m != nil { - return m.Name +func (x *DiscordMessageAuthor) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *DiscordMessageAuthor) GetDiscriminator() string { - if m != nil { - return m.Discriminator +func (x *DiscordMessageAuthor) GetDiscriminator() string { + if x != nil { + return x.Discriminator } return "" } -func (m *DiscordMessageAuthor) GetNickname() string { - if m != nil { - return m.Nickname +func (x *DiscordMessageAuthor) GetNickname() string { + if x != nil { + return x.Nickname } return "" } -func (m *DiscordMessageAuthor) GetAvatarUrl() string { - if m != nil { - return m.AvatarUrl +func (x *DiscordMessageAuthor) GetAvatarUrl() string { + if x != nil { + return x.AvatarUrl } return "" } -func (m *DiscordMessageAuthor) GetAvatarImagePayload() []byte { - if m != nil { - return m.AvatarImagePayload +func (x *DiscordMessageAuthor) GetAvatarImagePayload() []byte { + if x != nil { + return x.AvatarImagePayload } return nil } -func (m *DiscordMessageAuthor) GetLocalUrl() string { - if m != nil { - return m.LocalUrl +func (x *DiscordMessageAuthor) GetLocalUrl() string { + if x != nil { + return x.LocalUrl } return "" } type DiscordMessageReference struct { - MessageId string `protobuf:"bytes,1,opt,name=messageId,proto3" json:"messageId,omitempty"` - ChannelId string `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"` - GuildId string `protobuf:"bytes,3,opt,name=guildId,proto3" json:"guildId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageId string `protobuf:"bytes,1,opt,name=messageId,proto3" json:"messageId,omitempty"` + ChannelId string `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"` + GuildId string `protobuf:"bytes,3,opt,name=guildId,proto3" json:"guildId,omitempty"` } -func (m *DiscordMessageReference) Reset() { *m = DiscordMessageReference{} } -func (m *DiscordMessageReference) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageReference) ProtoMessage() {} +func (x *DiscordMessageReference) Reset() { + *x = DiscordMessageReference{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageReference) ProtoMessage() {} + +func (x *DiscordMessageReference) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageReference.ProtoReflect.Descriptor instead. func (*DiscordMessageReference) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{8} + return file_chat_message_proto_rawDescGZIP(), []int{8} } -func (m *DiscordMessageReference) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageReference.Unmarshal(m, b) -} -func (m *DiscordMessageReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageReference.Marshal(b, m, deterministic) -} -func (m *DiscordMessageReference) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageReference.Merge(m, src) -} -func (m *DiscordMessageReference) XXX_Size() int { - return xxx_messageInfo_DiscordMessageReference.Size(m) -} -func (m *DiscordMessageReference) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageReference.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageReference proto.InternalMessageInfo - -func (m *DiscordMessageReference) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DiscordMessageReference) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *DiscordMessageReference) GetChannelId() string { - if m != nil { - return m.ChannelId +func (x *DiscordMessageReference) GetChannelId() string { + if x != nil { + return x.ChannelId } return "" } -func (m *DiscordMessageReference) GetGuildId() string { - if m != nil { - return m.GuildId +func (x *DiscordMessageReference) GetGuildId() string { + if x != nil { + return x.GuildId } return "" } type DiscordMessageAttachment struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - FileName string `protobuf:"bytes,4,opt,name=fileName,proto3" json:"fileName,omitempty"` - FileSizeBytes uint64 `protobuf:"varint,5,opt,name=fileSizeBytes,proto3" json:"fileSizeBytes,omitempty"` - ContentType string `protobuf:"bytes,6,opt,name=contentType,proto3" json:"contentType,omitempty"` - Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` - LocalUrl string `protobuf:"bytes,8,opt,name=localUrl,proto3" json:"localUrl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + FileName string `protobuf:"bytes,4,opt,name=fileName,proto3" json:"fileName,omitempty"` + FileSizeBytes uint64 `protobuf:"varint,5,opt,name=fileSizeBytes,proto3" json:"fileSizeBytes,omitempty"` + ContentType string `protobuf:"bytes,6,opt,name=contentType,proto3" json:"contentType,omitempty"` + Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` + LocalUrl string `protobuf:"bytes,8,opt,name=localUrl,proto3" json:"localUrl,omitempty"` } -func (m *DiscordMessageAttachment) Reset() { *m = DiscordMessageAttachment{} } -func (m *DiscordMessageAttachment) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageAttachment) ProtoMessage() {} +func (x *DiscordMessageAttachment) Reset() { + *x = DiscordMessageAttachment{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageAttachment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageAttachment) ProtoMessage() {} + +func (x *DiscordMessageAttachment) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageAttachment.ProtoReflect.Descriptor instead. func (*DiscordMessageAttachment) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{9} + return file_chat_message_proto_rawDescGZIP(), []int{9} } -func (m *DiscordMessageAttachment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageAttachment.Unmarshal(m, b) -} -func (m *DiscordMessageAttachment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageAttachment.Marshal(b, m, deterministic) -} -func (m *DiscordMessageAttachment) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageAttachment.Merge(m, src) -} -func (m *DiscordMessageAttachment) XXX_Size() int { - return xxx_messageInfo_DiscordMessageAttachment.Size(m) -} -func (m *DiscordMessageAttachment) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageAttachment.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageAttachment proto.InternalMessageInfo - -func (m *DiscordMessageAttachment) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessageAttachment) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessageAttachment) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DiscordMessageAttachment) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *DiscordMessageAttachment) GetUrl() string { - if m != nil { - return m.Url +func (x *DiscordMessageAttachment) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *DiscordMessageAttachment) GetFileName() string { - if m != nil { - return m.FileName +func (x *DiscordMessageAttachment) GetFileName() string { + if x != nil { + return x.FileName } return "" } -func (m *DiscordMessageAttachment) GetFileSizeBytes() uint64 { - if m != nil { - return m.FileSizeBytes +func (x *DiscordMessageAttachment) GetFileSizeBytes() uint64 { + if x != nil { + return x.FileSizeBytes } return 0 } -func (m *DiscordMessageAttachment) GetContentType() string { - if m != nil { - return m.ContentType +func (x *DiscordMessageAttachment) GetContentType() string { + if x != nil { + return x.ContentType } return "" } -func (m *DiscordMessageAttachment) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *DiscordMessageAttachment) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *DiscordMessageAttachment) GetLocalUrl() string { - if m != nil { - return m.LocalUrl +func (x *DiscordMessageAttachment) GetLocalUrl() string { + if x != nil { + return x.LocalUrl } return "" } type UnfurledLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // A valid URL which uniquely identifies this link. Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // Website's title. Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` // Description is sometimes available, but can be empty. Most mainstream // websites provide this information. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - ThumbnailPayload []byte `protobuf:"bytes,4,opt,name=thumbnail_payload,json=thumbnailPayload,proto3" json:"thumbnail_payload,omitempty"` - ThumbnailWidth uint32 `protobuf:"varint,5,opt,name=thumbnail_width,json=thumbnailWidth,proto3" json:"thumbnail_width,omitempty"` - ThumbnailHeight uint32 `protobuf:"varint,6,opt,name=thumbnail_height,json=thumbnailHeight,proto3" json:"thumbnail_height,omitempty"` - Type UnfurledLink_LinkType `protobuf:"varint,7,opt,name=type,proto3,enum=protobuf.UnfurledLink_LinkType" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + ThumbnailPayload []byte `protobuf:"bytes,4,opt,name=thumbnail_payload,json=thumbnailPayload,proto3" json:"thumbnail_payload,omitempty"` + ThumbnailWidth uint32 `protobuf:"varint,5,opt,name=thumbnail_width,json=thumbnailWidth,proto3" json:"thumbnail_width,omitempty"` + ThumbnailHeight uint32 `protobuf:"varint,6,opt,name=thumbnail_height,json=thumbnailHeight,proto3" json:"thumbnail_height,omitempty"` + Type UnfurledLink_LinkType `protobuf:"varint,7,opt,name=type,proto3,enum=protobuf.UnfurledLink_LinkType" json:"type,omitempty"` } -func (m *UnfurledLink) Reset() { *m = UnfurledLink{} } -func (m *UnfurledLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledLink) ProtoMessage() {} +func (x *UnfurledLink) Reset() { + *x = UnfurledLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledLink) ProtoMessage() {} + +func (x *UnfurledLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledLink.ProtoReflect.Descriptor instead. func (*UnfurledLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{10} + return file_chat_message_proto_rawDescGZIP(), []int{10} } -func (m *UnfurledLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledLink.Unmarshal(m, b) -} -func (m *UnfurledLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledLink.Marshal(b, m, deterministic) -} -func (m *UnfurledLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledLink.Merge(m, src) -} -func (m *UnfurledLink) XXX_Size() int { - return xxx_messageInfo_UnfurledLink.Size(m) -} -func (m *UnfurledLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledLink proto.InternalMessageInfo - -func (m *UnfurledLink) GetUrl() string { - if m != nil { - return m.Url +func (x *UnfurledLink) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *UnfurledLink) GetTitle() string { - if m != nil { - return m.Title +func (x *UnfurledLink) GetTitle() string { + if x != nil { + return x.Title } return "" } -func (m *UnfurledLink) GetDescription() string { - if m != nil { - return m.Description +func (x *UnfurledLink) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *UnfurledLink) GetThumbnailPayload() []byte { - if m != nil { - return m.ThumbnailPayload +func (x *UnfurledLink) GetThumbnailPayload() []byte { + if x != nil { + return x.ThumbnailPayload } return nil } -func (m *UnfurledLink) GetThumbnailWidth() uint32 { - if m != nil { - return m.ThumbnailWidth +func (x *UnfurledLink) GetThumbnailWidth() uint32 { + if x != nil { + return x.ThumbnailWidth } return 0 } -func (m *UnfurledLink) GetThumbnailHeight() uint32 { - if m != nil { - return m.ThumbnailHeight +func (x *UnfurledLink) GetThumbnailHeight() uint32 { + if x != nil { + return x.ThumbnailHeight } return 0 } -func (m *UnfurledLink) GetType() UnfurledLink_LinkType { - if m != nil { - return m.Type +func (x *UnfurledLink) GetType() UnfurledLink_LinkType { + if x != nil { + return x.Type } return UnfurledLink_LINK } type ChatMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // Unix timestamps in milliseconds, currently not used as we use whisper as @@ -996,7 +1151,7 @@ type ChatMessage struct { MessageType MessageType `protobuf:"varint,7,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` // The type of the content of the message ContentType ChatMessage_ContentType `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` - // Types that are valid to be assigned to Payload: + // Types that are assignable to Payload: // // *ChatMessage_Sticker // *ChatMessage_Image @@ -1010,92 +1165,166 @@ type ChatMessage struct { DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"` UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ChatMessage) Reset() { *m = ChatMessage{} } -func (m *ChatMessage) String() string { return proto.CompactTextString(m) } -func (*ChatMessage) ProtoMessage() {} +func (x *ChatMessage) Reset() { + *x = ChatMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatMessage) ProtoMessage() {} + +func (x *ChatMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{11} + return file_chat_message_proto_rawDescGZIP(), []int{11} } -func (m *ChatMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChatMessage.Unmarshal(m, b) -} -func (m *ChatMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChatMessage.Marshal(b, m, deterministic) -} -func (m *ChatMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChatMessage.Merge(m, src) -} -func (m *ChatMessage) XXX_Size() int { - return xxx_messageInfo_ChatMessage.Size(m) -} -func (m *ChatMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ChatMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ChatMessage proto.InternalMessageInfo - -func (m *ChatMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ChatMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ChatMessage) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *ChatMessage) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *ChatMessage) GetText() string { - if m != nil { - return m.Text +func (x *ChatMessage) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *ChatMessage) GetResponseTo() string { - if m != nil { - return m.ResponseTo +func (x *ChatMessage) GetResponseTo() string { + if x != nil { + return x.ResponseTo } return "" } -func (m *ChatMessage) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ChatMessage) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ChatMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *ChatMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *ChatMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *ChatMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *ChatMessage) GetContentType() ChatMessage_ContentType { - if m != nil { - return m.ContentType +func (x *ChatMessage) GetContentType() ChatMessage_ContentType { + if x != nil { + return x.ContentType } return ChatMessage_UNKNOWN_CONTENT_TYPE } +func (m *ChatMessage) GetPayload() isChatMessage_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *ChatMessage) GetSticker() *StickerMessage { + if x, ok := x.GetPayload().(*ChatMessage_Sticker); ok { + return x.Sticker + } + return nil +} + +func (x *ChatMessage) GetImage() *ImageMessage { + if x, ok := x.GetPayload().(*ChatMessage_Image); ok { + return x.Image + } + return nil +} + +func (x *ChatMessage) GetAudio() *AudioMessage { + if x, ok := x.GetPayload().(*ChatMessage_Audio); ok { + return x.Audio + } + return nil +} + +func (x *ChatMessage) GetCommunity() []byte { + if x, ok := x.GetPayload().(*ChatMessage_Community); ok { + return x.Community + } + return nil +} + +func (x *ChatMessage) GetDiscordMessage() *DiscordMessage { + if x, ok := x.GetPayload().(*ChatMessage_DiscordMessage); ok { + return x.DiscordMessage + } + return nil +} + +func (x *ChatMessage) GetGrant() []byte { + if x != nil { + return x.Grant + } + return nil +} + +func (x *ChatMessage) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *ChatMessage) GetContactRequestPropagatedState() *ContactRequestPropagatedState { + if x != nil { + return x.ContactRequestPropagatedState + } + return nil +} + +func (x *ChatMessage) GetUnfurledLinks() []*UnfurledLink { + if x != nil { + return x.UnfurledLinks + } + return nil +} + type isChatMessage_Payload interface { isChatMessage_Payload() } @@ -1130,203 +1359,470 @@ func (*ChatMessage_Community) isChatMessage_Payload() {} func (*ChatMessage_DiscordMessage) isChatMessage_Payload() {} -func (m *ChatMessage) GetPayload() isChatMessage_Payload { - if m != nil { - return m.Payload - } - return nil +var File_chat_message_proto protoreflect.FileDescriptor + +var file_chat_message_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, + 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x38, 0x0a, 0x0e, 0x53, 0x74, + 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x70, 0x61, 0x63, 0x6b, 0x22, 0xc8, 0x01, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x27, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x62, 0x75, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x62, 0x75, + 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, + 0x6c, 0x62, 0x75, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xb6, 0x01, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x73, 0x22, 0x35, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x41, 0x43, 0x10, 0x01, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x4d, 0x52, 0x10, 0x02, 0x22, 0x85, 0x02, 0x0a, 0x0b, 0x45, 0x64, 0x69, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xcc, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, + 0x4d, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x4d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0xd5, + 0x02, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x45, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x64, 0x69, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, + 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x44, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, + 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, + 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x12, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x22, + 0x6f, 0x0a, 0x17, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, + 0x22, 0xf4, 0x01, 0x0a, 0x18, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x55, 0x6e, 0x66, 0x75, + 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, + 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x27, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, + 0x61, 0x69, 0x6c, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x68, 0x75, 0x6d, + 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, + 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1f, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x22, 0xd9, 0x09, 0x0a, 0x0b, 0x43, 0x68, + 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x6f, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x54, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x05, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x05, + 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x1e, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, + 0x00, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x70, 0x0a, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x1d, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, + 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x10, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0d, 0x75, 0x6e, + 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0xbc, 0x03, 0x0a, 0x0b, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x50, 0x4c, + 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x03, 0x12, 0x09, + 0x0a, 0x05, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x52, 0x41, + 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, + 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, + 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x49, + 0x56, 0x41, 0x54, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, + 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, + 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, + 0x09, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x47, 0x41, 0x50, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x4e, + 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x13, + 0x0a, 0x0f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x0c, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, + 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0d, 0x12, 0x21, + 0x0a, 0x1d, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x5f, 0x50, 0x49, 0x4e, 0x4e, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, + 0x0e, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x59, 0x53, 0x54, 0x45, + 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, + 0x10, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x11, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *ChatMessage) GetSticker() *StickerMessage { - if x, ok := m.GetPayload().(*ChatMessage_Sticker); ok { - return x.Sticker - } - return nil +var ( + file_chat_message_proto_rawDescOnce sync.Once + file_chat_message_proto_rawDescData = file_chat_message_proto_rawDesc +) + +func file_chat_message_proto_rawDescGZIP() []byte { + file_chat_message_proto_rawDescOnce.Do(func() { + file_chat_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_message_proto_rawDescData) + }) + return file_chat_message_proto_rawDescData } -func (m *ChatMessage) GetImage() *ImageMessage { - if x, ok := m.GetPayload().(*ChatMessage_Image); ok { - return x.Image - } - return nil +var file_chat_message_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_chat_message_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_chat_message_proto_goTypes = []interface{}{ + (AudioMessage_AudioType)(0), // 0: protobuf.AudioMessage.AudioType + (UnfurledLink_LinkType)(0), // 1: protobuf.UnfurledLink.LinkType + (ChatMessage_ContentType)(0), // 2: protobuf.ChatMessage.ContentType + (*StickerMessage)(nil), // 3: protobuf.StickerMessage + (*ImageMessage)(nil), // 4: protobuf.ImageMessage + (*AudioMessage)(nil), // 5: protobuf.AudioMessage + (*EditMessage)(nil), // 6: protobuf.EditMessage + (*DeleteMessage)(nil), // 7: protobuf.DeleteMessage + (*SyncDeleteForMeMessage)(nil), // 8: protobuf.SyncDeleteForMeMessage + (*DiscordMessage)(nil), // 9: protobuf.DiscordMessage + (*DiscordMessageAuthor)(nil), // 10: protobuf.DiscordMessageAuthor + (*DiscordMessageReference)(nil), // 11: protobuf.DiscordMessageReference + (*DiscordMessageAttachment)(nil), // 12: protobuf.DiscordMessageAttachment + (*UnfurledLink)(nil), // 13: protobuf.UnfurledLink + (*ChatMessage)(nil), // 14: protobuf.ChatMessage + (ImageType)(0), // 15: protobuf.ImageType + (MessageType)(0), // 16: protobuf.MessageType + (*ContactRequestPropagatedState)(nil), // 17: protobuf.ContactRequestPropagatedState +} +var file_chat_message_proto_depIdxs = []int32{ + 15, // 0: protobuf.ImageMessage.type:type_name -> protobuf.ImageType + 0, // 1: protobuf.AudioMessage.type:type_name -> protobuf.AudioMessage.AudioType + 16, // 2: protobuf.EditMessage.message_type:type_name -> protobuf.MessageType + 2, // 3: protobuf.EditMessage.content_type:type_name -> protobuf.ChatMessage.ContentType + 16, // 4: protobuf.DeleteMessage.message_type:type_name -> protobuf.MessageType + 10, // 5: protobuf.DiscordMessage.author:type_name -> protobuf.DiscordMessageAuthor + 11, // 6: protobuf.DiscordMessage.reference:type_name -> protobuf.DiscordMessageReference + 12, // 7: protobuf.DiscordMessage.attachments:type_name -> protobuf.DiscordMessageAttachment + 1, // 8: protobuf.UnfurledLink.type:type_name -> protobuf.UnfurledLink.LinkType + 16, // 9: protobuf.ChatMessage.message_type:type_name -> protobuf.MessageType + 2, // 10: protobuf.ChatMessage.content_type:type_name -> protobuf.ChatMessage.ContentType + 3, // 11: protobuf.ChatMessage.sticker:type_name -> protobuf.StickerMessage + 4, // 12: protobuf.ChatMessage.image:type_name -> protobuf.ImageMessage + 5, // 13: protobuf.ChatMessage.audio:type_name -> protobuf.AudioMessage + 9, // 14: protobuf.ChatMessage.discord_message:type_name -> protobuf.DiscordMessage + 17, // 15: protobuf.ChatMessage.contact_request_propagated_state:type_name -> protobuf.ContactRequestPropagatedState + 13, // 16: protobuf.ChatMessage.unfurled_links:type_name -> protobuf.UnfurledLink + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } -func (m *ChatMessage) GetAudio() *AudioMessage { - if x, ok := m.GetPayload().(*ChatMessage_Audio); ok { - return x.Audio +func init() { file_chat_message_proto_init() } +func file_chat_message_proto_init() { + if File_chat_message_proto != nil { + return } - return nil -} - -func (m *ChatMessage) GetCommunity() []byte { - if x, ok := m.GetPayload().(*ChatMessage_Community); ok { - return x.Community + file_enums_proto_init() + file_contact_proto_init() + if !protoimpl.UnsafeEnabled { + file_chat_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StickerMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AudioMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncDeleteForMeMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageAuthor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageAttachment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return nil -} - -func (m *ChatMessage) GetDiscordMessage() *DiscordMessage { - if x, ok := m.GetPayload().(*ChatMessage_DiscordMessage); ok { - return x.DiscordMessage - } - return nil -} - -func (m *ChatMessage) GetGrant() []byte { - if m != nil { - return m.Grant - } - return nil -} - -func (m *ChatMessage) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *ChatMessage) GetContactRequestPropagatedState() *ContactRequestPropagatedState { - if m != nil { - return m.ContactRequestPropagatedState - } - return nil -} - -func (m *ChatMessage) GetUnfurledLinks() []*UnfurledLink { - if m != nil { - return m.UnfurledLinks - } - return nil -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ChatMessage) XXX_OneofWrappers() []interface{} { - return []interface{}{ + file_chat_message_proto_msgTypes[11].OneofWrappers = []interface{}{ (*ChatMessage_Sticker)(nil), (*ChatMessage_Image)(nil), (*ChatMessage_Audio)(nil), (*ChatMessage_Community)(nil), (*ChatMessage_DiscordMessage)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.AudioMessage_AudioType", AudioMessage_AudioType_name, AudioMessage_AudioType_value) - proto.RegisterEnum("protobuf.UnfurledLink_LinkType", UnfurledLink_LinkType_name, UnfurledLink_LinkType_value) - proto.RegisterEnum("protobuf.ChatMessage_ContentType", ChatMessage_ContentType_name, ChatMessage_ContentType_value) - proto.RegisterType((*StickerMessage)(nil), "protobuf.StickerMessage") - proto.RegisterType((*ImageMessage)(nil), "protobuf.ImageMessage") - proto.RegisterType((*AudioMessage)(nil), "protobuf.AudioMessage") - proto.RegisterType((*EditMessage)(nil), "protobuf.EditMessage") - proto.RegisterType((*DeleteMessage)(nil), "protobuf.DeleteMessage") - proto.RegisterType((*DeleteForMeMessage)(nil), "protobuf.DeleteForMeMessage") - proto.RegisterType((*DiscordMessage)(nil), "protobuf.DiscordMessage") - proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor") - proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference") - proto.RegisterType((*DiscordMessageAttachment)(nil), "protobuf.DiscordMessageAttachment") - proto.RegisterType((*UnfurledLink)(nil), "protobuf.UnfurledLink") - proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage") -} - -func init() { - proto.RegisterFile("chat_message.proto", fileDescriptor_263952f55fd35689) -} - -var fileDescriptor_263952f55fd35689 = []byte{ - // 1493 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x6e, 0xdb, 0x48, - 0x12, 0xb6, 0xfe, 0xc5, 0xd2, 0x8f, 0x99, 0x8e, 0xe3, 0x30, 0x41, 0x1c, 0x2b, 0xda, 0x00, 0xf1, - 0x62, 0x17, 0x5a, 0x20, 0xc9, 0x2e, 0x02, 0x2c, 0x16, 0x0b, 0x5a, 0x62, 0x6c, 0x6e, 0xac, 0x9f, - 0x6d, 0x51, 0xce, 0x7a, 0x2f, 0x04, 0x4d, 0xb6, 0x2d, 0xc2, 0x14, 0xa9, 0x25, 0x5b, 0x3b, 0xa3, - 0xb9, 0xcf, 0xf3, 0xcc, 0x6d, 0x4e, 0xf3, 0x00, 0x73, 0x98, 0xeb, 0x1c, 0xe6, 0x05, 0xe6, 0x09, - 0xe6, 0x01, 0x06, 0xdd, 0xcd, 0x3f, 0x69, 0x6c, 0x67, 0x90, 0x8b, 0xd4, 0x55, 0xac, 0xaa, 0xae, - 0xaa, 0xae, 0xaa, 0xaf, 0x00, 0xd9, 0x73, 0x8b, 0x9a, 0x0b, 0x12, 0x45, 0xd6, 0x35, 0xe9, 0x2d, - 0xc3, 0x80, 0x06, 0xa8, 0xce, 0xff, 0x2e, 0x57, 0x57, 0x4f, 0x1b, 0xc4, 0x5f, 0x2d, 0x22, 0xc1, - 0x7e, 0xda, 0xb2, 0x03, 0x9f, 0x5a, 0x36, 0x15, 0x64, 0xf7, 0x1d, 0xb4, 0xa7, 0xd4, 0xb5, 0x6f, - 0x48, 0x38, 0x14, 0xda, 0x08, 0x41, 0x79, 0x6e, 0x45, 0x73, 0xa5, 0xd0, 0x29, 0x1c, 0x49, 0x98, - 0x9f, 0x19, 0x6f, 0x69, 0xd9, 0x37, 0x4a, 0xb1, 0x53, 0x38, 0xaa, 0x60, 0x7e, 0xee, 0x7e, 0x5f, - 0x80, 0xa6, 0xbe, 0xb0, 0xae, 0x49, 0xa2, 0xa8, 0x40, 0x6d, 0x69, 0xad, 0xbd, 0xc0, 0x72, 0xb8, - 0x6e, 0x13, 0x27, 0x24, 0x7a, 0x05, 0x65, 0xba, 0x5e, 0x12, 0xae, 0xde, 0x7e, 0xfd, 0xb0, 0x97, - 0x78, 0xd6, 0xe3, 0xfa, 0xc6, 0x7a, 0x49, 0x30, 0x17, 0x40, 0x4f, 0xa0, 0x6e, 0x79, 0x97, 0xab, - 0x85, 0xe9, 0x3a, 0x4a, 0x89, 0xdf, 0x5f, 0xe3, 0xb4, 0xee, 0xa0, 0x3d, 0xa8, 0x7c, 0xe1, 0x3a, - 0x74, 0xae, 0x94, 0x3b, 0x85, 0xa3, 0x16, 0x16, 0x04, 0xda, 0x87, 0xea, 0x9c, 0xb8, 0xd7, 0x73, - 0xaa, 0x54, 0x38, 0x3b, 0xa6, 0xd0, 0x9f, 0x01, 0xc5, 0x86, 0xd8, 0x0d, 0x91, 0x69, 0x07, 0x2b, - 0x9f, 0x2a, 0x55, 0x2e, 0x23, 0x0b, 0x93, 0xfc, 0x43, 0x9f, 0xf1, 0xbb, 0xdf, 0x16, 0xa0, 0xa9, - 0xae, 0x1c, 0x37, 0xf8, 0x74, 0x28, 0x6f, 0x37, 0x42, 0xe9, 0x64, 0xa1, 0xe4, 0xf5, 0x05, 0x91, - 0x8b, 0xeb, 0x10, 0x1a, 0xce, 0x2a, 0xb4, 0xa8, 0x1b, 0xf8, 0xe6, 0x22, 0xe2, 0xa1, 0x95, 0x31, - 0x24, 0xac, 0x61, 0xd4, 0xfd, 0x2b, 0x48, 0xa9, 0x0e, 0xda, 0x07, 0x34, 0x1b, 0x7d, 0x18, 0x8d, - 0x3f, 0x8e, 0x4c, 0x75, 0x36, 0xd0, 0xc7, 0xa6, 0x71, 0x31, 0xd1, 0xe4, 0x1d, 0x54, 0x83, 0x92, - 0xaa, 0xf6, 0xe5, 0x02, 0x3f, 0x0c, 0xb1, 0x5c, 0xec, 0x7e, 0x5d, 0x84, 0x86, 0xe6, 0xb8, 0x34, - 0xf1, 0x7b, 0x0f, 0x2a, 0xb6, 0x17, 0xd8, 0x37, 0xdc, 0xeb, 0x32, 0x16, 0x04, 0x7b, 0x3d, 0x4a, - 0xbe, 0xa4, 0xdc, 0x67, 0x09, 0xf3, 0x33, 0x7a, 0x0c, 0x35, 0x5e, 0x33, 0x69, 0xa2, 0xab, 0x8c, - 0xd4, 0x1d, 0x74, 0x00, 0x10, 0xd7, 0x11, 0xfb, 0x56, 0xe6, 0xdf, 0xa4, 0x98, 0x23, 0x9e, 0xe1, - 0x3a, 0xb4, 0x7c, 0x91, 0xef, 0x26, 0x16, 0x04, 0x7a, 0x07, 0xcd, 0x44, 0x89, 0x67, 0xa7, 0xca, - 0xb3, 0xf3, 0x28, 0xcb, 0x4e, 0xec, 0x20, 0x4f, 0x49, 0x63, 0x91, 0x11, 0x68, 0x00, 0x4d, 0x56, - 0x90, 0xc4, 0xa7, 0x42, 0xb3, 0xc6, 0x35, 0x5f, 0x64, 0x9a, 0xfd, 0xb9, 0x95, 0x84, 0xd7, 0xeb, - 0x0b, 0x49, 0x61, 0xc5, 0xce, 0x88, 0xee, 0x0f, 0x05, 0x68, 0x0d, 0x88, 0x47, 0x28, 0xb9, 0x3f, - 0x13, 0xb9, 0xa8, 0x8b, 0xf7, 0x44, 0x5d, 0xba, 0x33, 0xea, 0xf2, 0x7d, 0x51, 0x57, 0x7e, 0x77, - 0xd4, 0x07, 0x00, 0x0e, 0x77, 0xd7, 0x31, 0x2f, 0xd7, 0x3c, 0x5b, 0x12, 0x96, 0x62, 0xce, 0xf1, - 0xba, 0xab, 0x03, 0x12, 0xd1, 0xbc, 0x0f, 0xc2, 0xe1, 0x27, 0x42, 0xda, 0xf4, 0xbc, 0xb8, 0xe5, - 0x79, 0xf7, 0xc7, 0x22, 0xb4, 0x07, 0x6e, 0x64, 0x07, 0xa1, 0x93, 0xd8, 0x69, 0x43, 0xd1, 0x75, - 0xe2, 0xf6, 0x2e, 0xba, 0x0e, 0x2f, 0x8f, 0xa4, 0xa4, 0xa5, 0xb8, 0x60, 0x9f, 0x81, 0x44, 0xdd, - 0x05, 0x89, 0xa8, 0xb5, 0x58, 0x26, 0xe9, 0x48, 0x19, 0xe8, 0x08, 0x76, 0x53, 0x82, 0x95, 0x1f, - 0x49, 0x0a, 0x65, 0x9b, 0xcd, 0x1a, 0x29, 0x7e, 0x27, 0x9e, 0x1d, 0x09, 0x27, 0x24, 0xfa, 0x1b, - 0x54, 0xad, 0x15, 0x9d, 0x07, 0x21, 0x0f, 0xbf, 0xf1, 0xfa, 0x79, 0x96, 0xb6, 0x4d, 0x7f, 0x55, - 0x2e, 0x85, 0x63, 0x69, 0xf4, 0x4f, 0x90, 0x42, 0x72, 0x45, 0x42, 0xe2, 0xdb, 0xa2, 0x5a, 0x1a, - 0xf9, 0x6a, 0xd9, 0x54, 0xc5, 0x89, 0x20, 0xce, 0x74, 0xd0, 0x00, 0x1a, 0x16, 0xa5, 0x96, 0x3d, - 0x5f, 0x10, 0x9f, 0x46, 0x4a, 0xbd, 0x53, 0x3a, 0x6a, 0xbc, 0xee, 0xde, 0x79, 0x7b, 0x2a, 0x8a, - 0xf3, 0x6a, 0xdd, 0x9f, 0x0b, 0xb0, 0x77, 0x9b, 0x9f, 0xb7, 0x65, 0xd7, 0xb7, 0x16, 0x69, 0x76, - 0xd9, 0x19, 0xbd, 0x84, 0x96, 0xe3, 0x46, 0x76, 0xe8, 0x2e, 0x5c, 0xdf, 0xa2, 0x41, 0x18, 0x67, - 0x78, 0x93, 0x89, 0x9e, 0x42, 0xdd, 0x77, 0xed, 0x1b, 0xae, 0x2d, 0xd2, 0x9b, 0xd2, 0xec, 0x7d, - 0xac, 0xff, 0x5b, 0xd4, 0x0a, 0x67, 0xa1, 0x17, 0x67, 0x36, 0x63, 0xa0, 0x1e, 0x20, 0x41, 0xf0, - 0x21, 0x37, 0x89, 0x27, 0x59, 0x95, 0xd7, 0xee, 0x2d, 0x5f, 0xd8, 0x4d, 0x5e, 0x60, 0x5b, 0x1e, - 0x33, 0x56, 0x13, 0x37, 0x25, 0x74, 0x37, 0x80, 0xc7, 0x77, 0x24, 0x95, 0x39, 0x91, 0x16, 0x5a, - 0x1c, 0x71, 0xae, 0x67, 0x9e, 0x81, 0x64, 0xcf, 0x2d, 0xdf, 0x27, 0x9e, 0x9e, 0xd6, 0x65, 0xca, - 0x60, 0x85, 0x71, 0xbd, 0x72, 0x3d, 0x47, 0x4f, 0x07, 0x7d, 0x4c, 0x76, 0x7f, 0x29, 0x80, 0x72, - 0xd7, 0x1b, 0xfc, 0x26, 0xbb, 0x1b, 0x2e, 0x6c, 0x17, 0x3f, 0x92, 0xa1, 0xb4, 0x0a, 0xbd, 0xf8, - 0x02, 0x76, 0x64, 0x91, 0x5e, 0xb9, 0x1e, 0x19, 0xe5, 0x72, 0x9a, 0xd0, 0xec, 0x55, 0xd8, 0x79, - 0xea, 0x7e, 0x45, 0x8e, 0xd7, 0x94, 0x44, 0x3c, 0xaf, 0x65, 0xbc, 0xc9, 0x44, 0x1d, 0xc8, 0x4f, - 0x9e, 0xb8, 0x77, 0xf3, 0xac, 0x3c, 0x78, 0xd4, 0x36, 0xc1, 0x23, 0x9f, 0xe7, 0xfa, 0x56, 0x9e, - 0xbf, 0x29, 0x42, 0x73, 0xe6, 0x5f, 0xad, 0x42, 0x8f, 0x38, 0x67, 0xae, 0x7f, 0x93, 0x38, 0x5f, - 0xc8, 0x9c, 0xdf, 0x83, 0x0a, 0x75, 0xa9, 0x97, 0xd4, 0x92, 0x20, 0x98, 0x43, 0x0e, 0x61, 0x75, - 0xb3, 0x64, 0x58, 0x12, 0x07, 0x9b, 0x67, 0xa1, 0x3f, 0xc1, 0x03, 0x3a, 0x5f, 0x2d, 0x2e, 0x7d, - 0xcb, 0xf5, 0xcc, 0xc4, 0x35, 0x31, 0xc9, 0xe4, 0xf4, 0xc3, 0x24, 0xc5, 0xea, 0xdd, 0x4c, 0x58, - 0x20, 0xae, 0x80, 0xd6, 0x76, 0xca, 0xfe, 0xc8, 0xa1, 0xf7, 0x8f, 0x90, 0x29, 0x9b, 0x31, 0x08, - 0x0b, 0x80, 0xcd, 0x0c, 0x9c, 0x0a, 0x34, 0x7e, 0x13, 0x4f, 0x18, 0x31, 0xdc, 0x0f, 0xb3, 0x5e, - 0xcb, 0x07, 0xdc, 0x63, 0x3f, 0x19, 0x66, 0x76, 0x0f, 0xa1, 0x9e, 0x70, 0x50, 0x1d, 0xca, 0x67, - 0xfa, 0xe8, 0x83, 0xbc, 0x83, 0x24, 0xa8, 0xe8, 0x43, 0xf5, 0x44, 0x93, 0x0b, 0xdd, 0x9f, 0x24, - 0x68, 0xe4, 0xd0, 0xe1, 0x8e, 0xf9, 0xb8, 0x31, 0xc9, 0x8a, 0xfc, 0x4b, 0x6e, 0x92, 0x25, 0xd0, - 0x58, 0xca, 0x41, 0xe3, 0x21, 0x34, 0x42, 0x12, 0x2d, 0x03, 0x3f, 0x22, 0x26, 0x0d, 0xe2, 0x32, - 0x81, 0x84, 0x65, 0x04, 0x6c, 0x4b, 0x21, 0x7e, 0x64, 0xf2, 0xc6, 0x8c, 0xa7, 0x1a, 0xf1, 0x23, - 0x5e, 0x43, 0x39, 0x80, 0xa9, 0x6e, 0x00, 0xcc, 0x36, 0x56, 0xd4, 0x3e, 0x1b, 0x21, 0xeb, 0x9f, - 0x83, 0x90, 0xe8, 0x2d, 0xd4, 0x22, 0xb1, 0xe7, 0x29, 0x12, 0x1f, 0x9a, 0x4a, 0x66, 0x60, 0x73, - 0x01, 0x3c, 0xdd, 0xc1, 0x89, 0x28, 0xea, 0x41, 0x85, 0x2f, 0x50, 0x0a, 0x70, 0x9d, 0xfd, 0xad, - 0xcd, 0x2d, 0xd3, 0x10, 0x62, 0x4c, 0xde, 0x62, 0x6b, 0x8c, 0xd2, 0xd8, 0x96, 0xcf, 0xaf, 0x47, - 0x4c, 0x9e, 0x8b, 0xa1, 0xe7, 0x20, 0xd9, 0xc1, 0x62, 0xb1, 0xf2, 0x5d, 0xba, 0x56, 0x9a, 0xac, - 0x22, 0x4f, 0x77, 0x70, 0xc6, 0x42, 0x7d, 0xd8, 0x75, 0xc4, 0x28, 0x48, 0x96, 0x5b, 0xc5, 0xde, - 0xf6, 0x7e, 0x73, 0x56, 0x9c, 0xee, 0xe0, 0xb6, 0xb3, 0x89, 0x77, 0x29, 0x78, 0xb7, 0xf2, 0xe0, - 0xfd, 0x02, 0x9a, 0x8e, 0x1b, 0x2d, 0x3d, 0x6b, 0x2d, 0x1e, 0xb2, 0x1d, 0xf7, 0x8d, 0xe0, 0xf1, - 0xc7, 0x5c, 0x42, 0x27, 0x5e, 0x96, 0xcd, 0x90, 0xfc, 0x6f, 0x45, 0x22, 0x6a, 0x2e, 0xc3, 0x60, - 0x69, 0x5d, 0x5b, 0x0c, 0xb8, 0x23, 0x6a, 0x51, 0xa2, 0xec, 0x72, 0x77, 0x5e, 0xe5, 0x5e, 0x43, - 0x68, 0x60, 0xa1, 0x30, 0x49, 0xe5, 0xa7, 0x4c, 0x1c, 0x1f, 0xd8, 0xf7, 0x7d, 0x46, 0xff, 0x80, - 0xf6, 0x2a, 0x6e, 0x09, 0xd3, 0x73, 0xfd, 0x9b, 0x48, 0x91, 0x39, 0x3c, 0xed, 0xdf, 0xde, 0x32, - 0xb8, 0xb5, 0xca, 0x51, 0x51, 0xf7, 0xbb, 0x12, 0x34, 0xfa, 0x1b, 0x93, 0x68, 0x2f, 0x59, 0x24, - 0xfb, 0xe3, 0x91, 0xa1, 0x8d, 0x8c, 0x64, 0x95, 0x6c, 0x03, 0x18, 0xda, 0x7f, 0x0c, 0x73, 0x72, - 0xa6, 0xea, 0x23, 0xb9, 0x80, 0x1a, 0x50, 0x9b, 0x1a, 0x7a, 0xff, 0x83, 0x86, 0xe5, 0x22, 0x02, - 0xa8, 0x4e, 0x0d, 0xd5, 0x98, 0x4d, 0xe5, 0x12, 0xeb, 0x37, 0x6d, 0x38, 0xfe, 0x97, 0x2e, 0x97, - 0xd1, 0x63, 0x78, 0x68, 0x60, 0x75, 0x34, 0x55, 0xfb, 0x86, 0x3e, 0x66, 0x16, 0x87, 0x43, 0x75, - 0x34, 0x90, 0x2b, 0xe8, 0x08, 0x5e, 0x4e, 0x2f, 0xa6, 0x86, 0x36, 0x34, 0x87, 0xda, 0x74, 0xaa, - 0x9e, 0x68, 0xe9, 0x6d, 0x13, 0xac, 0x9f, 0xab, 0x86, 0x66, 0x9e, 0xe0, 0xf1, 0x6c, 0x22, 0x57, - 0xb3, 0xee, 0xad, 0xb1, 0x23, 0x5f, 0x6e, 0xe5, 0x3a, 0x6a, 0x81, 0xc4, 0x8c, 0xcd, 0x46, 0xba, - 0x71, 0x21, 0x4b, 0x6c, 0xfd, 0xdd, 0x32, 0x77, 0xa2, 0x4e, 0x64, 0x40, 0x0f, 0x61, 0x97, 0xd9, - 0x55, 0xfb, 0x86, 0x89, 0xb5, 0x7f, 0xcf, 0xb4, 0xa9, 0x21, 0x37, 0x18, 0x73, 0xa0, 0x4f, 0xfb, - 0x63, 0x3c, 0x48, 0xa4, 0xe5, 0x26, 0x7a, 0x02, 0x8f, 0xf4, 0x81, 0x36, 0x32, 0x74, 0xe3, 0xc2, - 0x3c, 0xd7, 0xb0, 0xfe, 0x5e, 0xef, 0xab, 0xcc, 0x67, 0xb9, 0x85, 0x5e, 0xc0, 0xc1, 0x96, 0xf1, - 0x89, 0x3e, 0x1a, 0x69, 0x99, 0x76, 0x1b, 0xbd, 0x84, 0xce, 0x96, 0xc8, 0x70, 0x66, 0xcc, 0xd4, - 0x33, 0x53, 0x3b, 0x67, 0x31, 0x4d, 0xb5, 0x91, 0x21, 0xef, 0xde, 0x12, 0xf4, 0x86, 0x94, 0xda, - 0xef, 0x6b, 0x13, 0x43, 0x1b, 0xc8, 0x32, 0x7a, 0x05, 0x7f, 0xb8, 0x4f, 0x12, 0x6b, 0xc3, 0xf1, - 0xb9, 0x36, 0x90, 0x1f, 0x1c, 0x4b, 0x29, 0x70, 0x1c, 0xb7, 0xfe, 0xdb, 0xe8, 0xfd, 0xe5, 0xef, - 0xc9, 0xa3, 0x5f, 0x56, 0xf9, 0xe9, 0xcd, 0xaf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0x1a, 0x69, - 0xd4, 0xe8, 0x0d, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_chat_message_proto_rawDesc, + NumEnums: 3, + NumMessages: 12, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_chat_message_proto_goTypes, + DependencyIndexes: file_chat_message_proto_depIdxs, + EnumInfos: file_chat_message_proto_enumTypes, + MessageInfos: file_chat_message_proto_msgTypes, + }.Build() + File_chat_message_proto = out.File + file_chat_message_proto_rawDesc = nil + file_chat_message_proto_goTypes = nil + file_chat_message_proto_depIdxs = nil } diff --git a/protocol/protobuf/chat_message.proto b/protocol/protobuf/chat_message.proto index ef6de3653..a18fbc2f3 100644 --- a/protocol/protobuf/chat_message.proto +++ b/protocol/protobuf/chat_message.proto @@ -63,7 +63,7 @@ message DeleteMessage { string deleted_by = 6; } -message DeleteForMeMessage { +message SyncDeleteForMeMessage { uint64 clock = 1; string message_id = 2; } diff --git a/protocol/protobuf/command.pb.go b/protocol/protobuf/command.pb.go index 8864b4b70..3257dc63c 100644 --- a/protocol/protobuf/command.pb.go +++ b/protocol/protobuf/command.pb.go @@ -1,435 +1,630 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: command.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type RequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - Contract string `protobuf:"bytes,3,opt,name=contract,proto3" json:"contract,omitempty"` - ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Contract string `protobuf:"bytes,3,opt,name=contract,proto3" json:"contract,omitempty"` + ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *RequestAddressForTransaction) Reset() { *m = RequestAddressForTransaction{} } -func (m *RequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*RequestAddressForTransaction) ProtoMessage() {} +func (x *RequestAddressForTransaction) Reset() { + *x = RequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestAddressForTransaction) ProtoMessage() {} + +func (x *RequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*RequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{0} + return file_command_proto_rawDescGZIP(), []int{0} } -func (m *RequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestAddressForTransaction.Unmarshal(m, b) -} -func (m *RequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *RequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestAddressForTransaction.Merge(m, src) -} -func (m *RequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_RequestAddressForTransaction.Size(m) -} -func (m *RequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_RequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestAddressForTransaction proto.InternalMessageInfo - -func (m *RequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestAddressForTransaction) GetValue() string { - if m != nil { - return m.Value +func (x *RequestAddressForTransaction) GetValue() string { + if x != nil { + return x.Value } return "" } -func (m *RequestAddressForTransaction) GetContract() string { - if m != nil { - return m.Contract +func (x *RequestAddressForTransaction) GetContract() string { + if x != nil { + return x.Contract } return "" } -func (m *RequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *RequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type AcceptRequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *AcceptRequestAddressForTransaction) Reset() { *m = AcceptRequestAddressForTransaction{} } -func (m *AcceptRequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*AcceptRequestAddressForTransaction) ProtoMessage() {} +func (x *AcceptRequestAddressForTransaction) Reset() { + *x = AcceptRequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptRequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptRequestAddressForTransaction) ProtoMessage() {} + +func (x *AcceptRequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptRequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*AcceptRequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{1} + return file_command_proto_rawDescGZIP(), []int{1} } -func (m *AcceptRequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Unmarshal(m, b) -} -func (m *AcceptRequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *AcceptRequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptRequestAddressForTransaction.Merge(m, src) -} -func (m *AcceptRequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Size(m) -} -func (m *AcceptRequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptRequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptRequestAddressForTransaction proto.InternalMessageInfo - -func (m *AcceptRequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptRequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *AcceptRequestAddressForTransaction) GetId() string { - if m != nil { - return m.Id +func (x *AcceptRequestAddressForTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptRequestAddressForTransaction) GetAddress() string { - if m != nil { - return m.Address +func (x *AcceptRequestAddressForTransaction) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *AcceptRequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *AcceptRequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type DeclineRequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *DeclineRequestAddressForTransaction) Reset() { *m = DeclineRequestAddressForTransaction{} } -func (m *DeclineRequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*DeclineRequestAddressForTransaction) ProtoMessage() {} +func (x *DeclineRequestAddressForTransaction) Reset() { + *x = DeclineRequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineRequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineRequestAddressForTransaction) ProtoMessage() {} + +func (x *DeclineRequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineRequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*DeclineRequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{2} + return file_command_proto_rawDescGZIP(), []int{2} } -func (m *DeclineRequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Unmarshal(m, b) -} -func (m *DeclineRequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *DeclineRequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineRequestAddressForTransaction.Merge(m, src) -} -func (m *DeclineRequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Size(m) -} -func (m *DeclineRequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineRequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineRequestAddressForTransaction proto.InternalMessageInfo - -func (m *DeclineRequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineRequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineRequestAddressForTransaction) GetId() string { - if m != nil { - return m.Id +func (x *DeclineRequestAddressForTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DeclineRequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeclineRequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type DeclineRequestTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *DeclineRequestTransaction) Reset() { *m = DeclineRequestTransaction{} } -func (m *DeclineRequestTransaction) String() string { return proto.CompactTextString(m) } -func (*DeclineRequestTransaction) ProtoMessage() {} +func (x *DeclineRequestTransaction) Reset() { + *x = DeclineRequestTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineRequestTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineRequestTransaction) ProtoMessage() {} + +func (x *DeclineRequestTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineRequestTransaction.ProtoReflect.Descriptor instead. func (*DeclineRequestTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{3} + return file_command_proto_rawDescGZIP(), []int{3} } -func (m *DeclineRequestTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineRequestTransaction.Unmarshal(m, b) -} -func (m *DeclineRequestTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineRequestTransaction.Marshal(b, m, deterministic) -} -func (m *DeclineRequestTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineRequestTransaction.Merge(m, src) -} -func (m *DeclineRequestTransaction) XXX_Size() int { - return xxx_messageInfo_DeclineRequestTransaction.Size(m) -} -func (m *DeclineRequestTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineRequestTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineRequestTransaction proto.InternalMessageInfo - -func (m *DeclineRequestTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineRequestTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineRequestTransaction) GetId() string { - if m != nil { - return m.Id +func (x *DeclineRequestTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DeclineRequestTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeclineRequestTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type RequestTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - Contract string `protobuf:"bytes,4,opt,name=contract,proto3" json:"contract,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Contract string `protobuf:"bytes,4,opt,name=contract,proto3" json:"contract,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *RequestTransaction) Reset() { *m = RequestTransaction{} } -func (m *RequestTransaction) String() string { return proto.CompactTextString(m) } -func (*RequestTransaction) ProtoMessage() {} +func (x *RequestTransaction) Reset() { + *x = RequestTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestTransaction) ProtoMessage() {} + +func (x *RequestTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestTransaction.ProtoReflect.Descriptor instead. func (*RequestTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{4} + return file_command_proto_rawDescGZIP(), []int{4} } -func (m *RequestTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestTransaction.Unmarshal(m, b) -} -func (m *RequestTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestTransaction.Marshal(b, m, deterministic) -} -func (m *RequestTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestTransaction.Merge(m, src) -} -func (m *RequestTransaction) XXX_Size() int { - return xxx_messageInfo_RequestTransaction.Size(m) -} -func (m *RequestTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_RequestTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestTransaction proto.InternalMessageInfo - -func (m *RequestTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestTransaction) GetAddress() string { - if m != nil { - return m.Address +func (x *RequestTransaction) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *RequestTransaction) GetValue() string { - if m != nil { - return m.Value +func (x *RequestTransaction) GetValue() string { + if x != nil { + return x.Value } return "" } -func (m *RequestTransaction) GetContract() string { - if m != nil { - return m.Contract +func (x *RequestTransaction) GetContract() string { + if x != nil { + return x.Contract } return "" } -func (m *RequestTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *RequestTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type SendTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - TransactionHash string `protobuf:"bytes,3,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + TransactionHash string `protobuf:"bytes,3,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` + Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *SendTransaction) Reset() { *m = SendTransaction{} } -func (m *SendTransaction) String() string { return proto.CompactTextString(m) } -func (*SendTransaction) ProtoMessage() {} +func (x *SendTransaction) Reset() { + *x = SendTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendTransaction) ProtoMessage() {} + +func (x *SendTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendTransaction.ProtoReflect.Descriptor instead. func (*SendTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{5} + return file_command_proto_rawDescGZIP(), []int{5} } -func (m *SendTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendTransaction.Unmarshal(m, b) -} -func (m *SendTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendTransaction.Marshal(b, m, deterministic) -} -func (m *SendTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendTransaction.Merge(m, src) -} -func (m *SendTransaction) XXX_Size() int { - return xxx_messageInfo_SendTransaction.Size(m) -} -func (m *SendTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_SendTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_SendTransaction proto.InternalMessageInfo - -func (m *SendTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SendTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SendTransaction) GetId() string { - if m != nil { - return m.Id +func (x *SendTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SendTransaction) GetTransactionHash() string { - if m != nil { - return m.TransactionHash +func (x *SendTransaction) GetTransactionHash() string { + if x != nil { + return x.TransactionHash } return "" } -func (m *SendTransaction) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *SendTransaction) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *SendTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SendTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func init() { - proto.RegisterType((*RequestAddressForTransaction)(nil), "protobuf.RequestAddressForTransaction") - proto.RegisterType((*AcceptRequestAddressForTransaction)(nil), "protobuf.AcceptRequestAddressForTransaction") - proto.RegisterType((*DeclineRequestAddressForTransaction)(nil), "protobuf.DeclineRequestAddressForTransaction") - proto.RegisterType((*DeclineRequestTransaction)(nil), "protobuf.DeclineRequestTransaction") - proto.RegisterType((*RequestTransaction)(nil), "protobuf.RequestTransaction") - proto.RegisterType((*SendTransaction)(nil), "protobuf.SendTransaction") +var File_command_proto protoreflect.FileDescriptor + +var file_command_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x7f, 0x0a, 0x1c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x22, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x23, 0x44, 0x65, 0x63, + 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, + 0x5a, 0x0a, 0x19, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x12, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x99, 0x01, + 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("command.proto", fileDescriptor_213c0bb044472049) +var ( + file_command_proto_rawDescOnce sync.Once + file_command_proto_rawDescData = file_command_proto_rawDesc +) + +func file_command_proto_rawDescGZIP() []byte { + file_command_proto_rawDescOnce.Do(func() { + file_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_command_proto_rawDescData) + }) + return file_command_proto_rawDescData } -var fileDescriptor_213c0bb044472049 = []byte{ - // 301 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0x3d, 0x4f, 0xf3, 0x30, - 0x10, 0xc7, 0x95, 0x97, 0xbe, 0xdd, 0xf3, 0x94, 0x22, 0x0b, 0x89, 0x80, 0x3a, 0x54, 0x61, 0x29, - 0x4b, 0x19, 0x18, 0x99, 0x8a, 0x10, 0x82, 0x35, 0x30, 0x75, 0xa9, 0xdc, 0xb3, 0x21, 0x16, 0xa9, - 0x5d, 0x6c, 0x87, 0x0d, 0xf1, 0x11, 0x98, 0xf9, 0xb6, 0xa8, 0x4e, 0xda, 0x26, 0x43, 0x24, 0x40, - 0x9d, 0xec, 0xff, 0x9d, 0xee, 0xfe, 0x3f, 0xdf, 0x19, 0xfa, 0xa8, 0x96, 0x4b, 0x2a, 0xd9, 0x64, - 0xa5, 0x95, 0x55, 0xa4, 0xeb, 0x8e, 0x45, 0xfe, 0x14, 0x7f, 0xc0, 0x30, 0xe1, 0xaf, 0x39, 0x37, - 0x76, 0xca, 0x98, 0xe6, 0xc6, 0xdc, 0x2a, 0xfd, 0xa8, 0xa9, 0x34, 0x14, 0xad, 0x50, 0x92, 0x1c, - 0x41, 0x0b, 0x33, 0x85, 0x2f, 0x91, 0x37, 0xf2, 0xc6, 0x61, 0x52, 0x88, 0x75, 0xf4, 0x8d, 0x66, - 0x39, 0x8f, 0xfc, 0x91, 0x37, 0xee, 0x25, 0x85, 0x20, 0xa7, 0xd0, 0x45, 0x25, 0xad, 0xa6, 0x68, - 0xa3, 0xc0, 0x25, 0xb6, 0x9a, 0x1c, 0x43, 0x07, 0x53, 0x6a, 0xe7, 0x82, 0x45, 0xa1, 0x4b, 0xb5, - 0xd7, 0xf2, 0x9e, 0xc5, 0xef, 0x10, 0x4f, 0x11, 0xf9, 0xca, 0xfe, 0x01, 0xe3, 0x00, 0x7c, 0xc1, - 0x4a, 0x06, 0x5f, 0x30, 0x12, 0x41, 0x87, 0x16, 0xe5, 0xa5, 0xff, 0x46, 0x36, 0xdb, 0x33, 0x38, - 0xbb, 0xe1, 0x98, 0x09, 0xc9, 0xf7, 0xe0, 0x5f, 0x71, 0x09, 0x6a, 0x2e, 0x33, 0x38, 0xa9, 0xbb, - 0xec, 0xb1, 0xf7, 0xa7, 0x07, 0xe4, 0xc7, 0x5d, 0x2b, 0x13, 0xf2, 0xeb, 0x13, 0xda, 0xae, 0x34, - 0x68, 0x5a, 0x69, 0xd8, 0xbc, 0xd2, 0x56, 0x8d, 0xe8, 0xcb, 0x83, 0xc1, 0x03, 0x97, 0xec, 0xf7, - 0x8f, 0x3c, 0x87, 0x43, 0xbb, 0x2b, 0x9a, 0xa7, 0xd4, 0xa4, 0x25, 0xcf, 0xa0, 0x12, 0xbf, 0xa3, - 0x26, 0x25, 0x43, 0xe8, 0x19, 0xf1, 0x2c, 0xa9, 0xcd, 0x35, 0x77, 0x68, 0xff, 0x93, 0x5d, 0xa0, - 0x91, 0xed, 0xba, 0x3f, 0xfb, 0x37, 0xb9, 0xb8, 0xda, 0x7c, 0xff, 0x45, 0xdb, 0xdd, 0x2e, 0xbf, - 0x03, 0x00, 0x00, 0xff, 0xff, 0x88, 0x09, 0x02, 0x5a, 0x20, 0x03, 0x00, 0x00, +var file_command_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_command_proto_goTypes = []interface{}{ + (*RequestAddressForTransaction)(nil), // 0: protobuf.RequestAddressForTransaction + (*AcceptRequestAddressForTransaction)(nil), // 1: protobuf.AcceptRequestAddressForTransaction + (*DeclineRequestAddressForTransaction)(nil), // 2: protobuf.DeclineRequestAddressForTransaction + (*DeclineRequestTransaction)(nil), // 3: protobuf.DeclineRequestTransaction + (*RequestTransaction)(nil), // 4: protobuf.RequestTransaction + (*SendTransaction)(nil), // 5: protobuf.SendTransaction +} +var file_command_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_command_proto_init() } +func file_command_proto_init() { + if File_command_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptRequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineRequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineRequestTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_command_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_command_proto_goTypes, + DependencyIndexes: file_command_proto_depIdxs, + MessageInfos: file_command_proto_msgTypes, + }.Build() + File_command_proto = out.File + file_command_proto_rawDesc = nil + file_command_proto_goTypes = nil + file_command_proto_depIdxs = nil } diff --git a/protocol/protobuf/communities.pb.go b/protocol/protobuf/communities.pb.go index 39ee2fb69..3fdaa454b 100644 --- a/protocol/protobuf/communities.pb.go +++ b/protocol/protobuf/communities.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: communities.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityMember_Roles int32 @@ -29,26 +29,47 @@ const ( CommunityMember_ROLE_TOKEN_MASTER CommunityMember_Roles = 5 ) -var CommunityMember_Roles_name = map[int32]string{ - 0: "ROLE_NONE", - 1: "ROLE_OWNER", - 4: "ROLE_ADMIN", - 5: "ROLE_TOKEN_MASTER", -} +// Enum value maps for CommunityMember_Roles. +var ( + CommunityMember_Roles_name = map[int32]string{ + 0: "ROLE_NONE", + 1: "ROLE_OWNER", + 4: "ROLE_ADMIN", + 5: "ROLE_TOKEN_MASTER", + } + CommunityMember_Roles_value = map[string]int32{ + "ROLE_NONE": 0, + "ROLE_OWNER": 1, + "ROLE_ADMIN": 4, + "ROLE_TOKEN_MASTER": 5, + } +) -var CommunityMember_Roles_value = map[string]int32{ - "ROLE_NONE": 0, - "ROLE_OWNER": 1, - "ROLE_ADMIN": 4, - "ROLE_TOKEN_MASTER": 5, +func (x CommunityMember_Roles) Enum() *CommunityMember_Roles { + p := new(CommunityMember_Roles) + *p = x + return p } func (x CommunityMember_Roles) String() string { - return proto.EnumName(CommunityMember_Roles_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityMember_Roles) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[0].Descriptor() +} + +func (CommunityMember_Roles) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[0] +} + +func (x CommunityMember_Roles) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityMember_Roles.Descriptor instead. func (CommunityMember_Roles) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{1, 0} + return file_communities_proto_rawDescGZIP(), []int{1, 0} } type CommunityPermissions_Access int32 @@ -60,26 +81,47 @@ const ( CommunityPermissions_ON_REQUEST CommunityPermissions_Access = 3 ) -var CommunityPermissions_Access_name = map[int32]string{ - 0: "UNKNOWN_ACCESS", - 1: "NO_MEMBERSHIP", - 2: "INVITATION_ONLY", - 3: "ON_REQUEST", -} +// Enum value maps for CommunityPermissions_Access. +var ( + CommunityPermissions_Access_name = map[int32]string{ + 0: "UNKNOWN_ACCESS", + 1: "NO_MEMBERSHIP", + 2: "INVITATION_ONLY", + 3: "ON_REQUEST", + } + CommunityPermissions_Access_value = map[string]int32{ + "UNKNOWN_ACCESS": 0, + "NO_MEMBERSHIP": 1, + "INVITATION_ONLY": 2, + "ON_REQUEST": 3, + } +) -var CommunityPermissions_Access_value = map[string]int32{ - "UNKNOWN_ACCESS": 0, - "NO_MEMBERSHIP": 1, - "INVITATION_ONLY": 2, - "ON_REQUEST": 3, +func (x CommunityPermissions_Access) Enum() *CommunityPermissions_Access { + p := new(CommunityPermissions_Access) + *p = x + return p } func (x CommunityPermissions_Access) String() string { - return proto.EnumName(CommunityPermissions_Access_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityPermissions_Access) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[1].Descriptor() +} + +func (CommunityPermissions_Access) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[1] +} + +func (x CommunityPermissions_Access) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityPermissions_Access.Descriptor instead. func (CommunityPermissions_Access) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{3, 0} + return file_communities_proto_rawDescGZIP(), []int{3, 0} } type CommunityTokenPermission_Type int32 @@ -94,463 +136,537 @@ const ( CommunityTokenPermission_BECOME_TOKEN_OWNER CommunityTokenPermission_Type = 6 ) -var CommunityTokenPermission_Type_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_PERMISSION", - 1: "BECOME_ADMIN", - 2: "BECOME_MEMBER", - 3: "CAN_VIEW_CHANNEL", - 4: "CAN_VIEW_AND_POST_CHANNEL", - 5: "BECOME_TOKEN_MASTER", - 6: "BECOME_TOKEN_OWNER", -} +// Enum value maps for CommunityTokenPermission_Type. +var ( + CommunityTokenPermission_Type_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_PERMISSION", + 1: "BECOME_ADMIN", + 2: "BECOME_MEMBER", + 3: "CAN_VIEW_CHANNEL", + 4: "CAN_VIEW_AND_POST_CHANNEL", + 5: "BECOME_TOKEN_MASTER", + 6: "BECOME_TOKEN_OWNER", + } + CommunityTokenPermission_Type_value = map[string]int32{ + "UNKNOWN_TOKEN_PERMISSION": 0, + "BECOME_ADMIN": 1, + "BECOME_MEMBER": 2, + "CAN_VIEW_CHANNEL": 3, + "CAN_VIEW_AND_POST_CHANNEL": 4, + "BECOME_TOKEN_MASTER": 5, + "BECOME_TOKEN_OWNER": 6, + } +) -var CommunityTokenPermission_Type_value = map[string]int32{ - "UNKNOWN_TOKEN_PERMISSION": 0, - "BECOME_ADMIN": 1, - "BECOME_MEMBER": 2, - "CAN_VIEW_CHANNEL": 3, - "CAN_VIEW_AND_POST_CHANNEL": 4, - "BECOME_TOKEN_MASTER": 5, - "BECOME_TOKEN_OWNER": 6, +func (x CommunityTokenPermission_Type) Enum() *CommunityTokenPermission_Type { + p := new(CommunityTokenPermission_Type) + *p = x + return p } func (x CommunityTokenPermission_Type) String() string { - return proto.EnumName(CommunityTokenPermission_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityTokenPermission_Type) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[2].Descriptor() +} + +func (CommunityTokenPermission_Type) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[2] +} + +func (x CommunityTokenPermission_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityTokenPermission_Type.Descriptor instead. func (CommunityTokenPermission_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{5, 0} + return file_communities_proto_rawDescGZIP(), []int{5, 0} } type Grant struct { - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *Grant) Reset() { *m = Grant{} } -func (m *Grant) String() string { return proto.CompactTextString(m) } -func (*Grant) ProtoMessage() {} +func (x *Grant) Reset() { + *x = Grant{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Grant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Grant) ProtoMessage() {} + +func (x *Grant) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Grant.ProtoReflect.Descriptor instead. func (*Grant) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{0} + return file_communities_proto_rawDescGZIP(), []int{0} } -func (m *Grant) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Grant.Unmarshal(m, b) -} -func (m *Grant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Grant.Marshal(b, m, deterministic) -} -func (m *Grant) XXX_Merge(src proto.Message) { - xxx_messageInfo_Grant.Merge(m, src) -} -func (m *Grant) XXX_Size() int { - return xxx_messageInfo_Grant.Size(m) -} -func (m *Grant) XXX_DiscardUnknown() { - xxx_messageInfo_Grant.DiscardUnknown(m) -} - -var xxx_messageInfo_Grant proto.InternalMessageInfo - -func (m *Grant) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *Grant) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *Grant) GetMemberId() []byte { - if m != nil { - return m.MemberId +func (x *Grant) GetMemberId() []byte { + if x != nil { + return x.MemberId } return nil } -func (m *Grant) GetChatId() string { - if m != nil { - return m.ChatId +func (x *Grant) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *Grant) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *Grant) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type CommunityMember struct { - Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` // Deprecated: Do not use. - LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` + // Deprecated: Marked as deprecated in communities.proto. + RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` } -func (m *CommunityMember) Reset() { *m = CommunityMember{} } -func (m *CommunityMember) String() string { return proto.CompactTextString(m) } -func (*CommunityMember) ProtoMessage() {} +func (x *CommunityMember) Reset() { + *x = CommunityMember{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityMember) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityMember) ProtoMessage() {} + +func (x *CommunityMember) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityMember.ProtoReflect.Descriptor instead. func (*CommunityMember) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{1} + return file_communities_proto_rawDescGZIP(), []int{1} } -func (m *CommunityMember) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityMember.Unmarshal(m, b) -} -func (m *CommunityMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityMember.Marshal(b, m, deterministic) -} -func (m *CommunityMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityMember.Merge(m, src) -} -func (m *CommunityMember) XXX_Size() int { - return xxx_messageInfo_CommunityMember.Size(m) -} -func (m *CommunityMember) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityMember.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityMember proto.InternalMessageInfo - -func (m *CommunityMember) GetRoles() []CommunityMember_Roles { - if m != nil { - return m.Roles +func (x *CommunityMember) GetRoles() []CommunityMember_Roles { + if x != nil { + return x.Roles } return nil } -// Deprecated: Do not use. -func (m *CommunityMember) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +// Deprecated: Marked as deprecated in communities.proto. +func (x *CommunityMember) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } -func (m *CommunityMember) GetLastUpdateClock() uint64 { - if m != nil { - return m.LastUpdateClock +func (x *CommunityMember) GetLastUpdateClock() uint64 { + if x != nil { + return x.LastUpdateClock } return 0 } type CommunityTokenMetadata struct { - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` - TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` - Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` + TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` + Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` } -func (m *CommunityTokenMetadata) Reset() { *m = CommunityTokenMetadata{} } -func (m *CommunityTokenMetadata) String() string { return proto.CompactTextString(m) } -func (*CommunityTokenMetadata) ProtoMessage() {} +func (x *CommunityTokenMetadata) Reset() { + *x = CommunityTokenMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityTokenMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityTokenMetadata) ProtoMessage() {} + +func (x *CommunityTokenMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityTokenMetadata.ProtoReflect.Descriptor instead. func (*CommunityTokenMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{2} + return file_communities_proto_rawDescGZIP(), []int{2} } -func (m *CommunityTokenMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityTokenMetadata.Unmarshal(m, b) -} -func (m *CommunityTokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityTokenMetadata.Marshal(b, m, deterministic) -} -func (m *CommunityTokenMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityTokenMetadata.Merge(m, src) -} -func (m *CommunityTokenMetadata) XXX_Size() int { - return xxx_messageInfo_CommunityTokenMetadata.Size(m) -} -func (m *CommunityTokenMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityTokenMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityTokenMetadata proto.InternalMessageInfo - -func (m *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { - if m != nil { - return m.ContractAddresses +func (x *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { + if x != nil { + return x.ContractAddresses } return nil } -func (m *CommunityTokenMetadata) GetDescription() string { - if m != nil { - return m.Description +func (x *CommunityTokenMetadata) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *CommunityTokenMetadata) GetImage() string { - if m != nil { - return m.Image +func (x *CommunityTokenMetadata) GetImage() string { + if x != nil { + return x.Image } return "" } -func (m *CommunityTokenMetadata) GetTokenType() CommunityTokenType { - if m != nil { - return m.TokenType +func (x *CommunityTokenMetadata) GetTokenType() CommunityTokenType { + if x != nil { + return x.TokenType } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (m *CommunityTokenMetadata) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *CommunityTokenMetadata) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *CommunityTokenMetadata) GetName() string { - if m != nil { - return m.Name +func (x *CommunityTokenMetadata) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CommunityTokenMetadata) GetDecimals() uint32 { - if m != nil { - return m.Decimals +func (x *CommunityTokenMetadata) GetDecimals() uint32 { + if x != nil { + return x.Decimals } return 0 } type CommunityPermissions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EnsOnly bool `protobuf:"varint,1,opt,name=ens_only,json=ensOnly,proto3" json:"ens_only,omitempty"` // https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants - Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` - Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` + Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` } -func (m *CommunityPermissions) Reset() { *m = CommunityPermissions{} } -func (m *CommunityPermissions) String() string { return proto.CompactTextString(m) } -func (*CommunityPermissions) ProtoMessage() {} +func (x *CommunityPermissions) Reset() { + *x = CommunityPermissions{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityPermissions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPermissions) ProtoMessage() {} + +func (x *CommunityPermissions) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPermissions.ProtoReflect.Descriptor instead. func (*CommunityPermissions) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{3} + return file_communities_proto_rawDescGZIP(), []int{3} } -func (m *CommunityPermissions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityPermissions.Unmarshal(m, b) -} -func (m *CommunityPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityPermissions.Marshal(b, m, deterministic) -} -func (m *CommunityPermissions) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityPermissions.Merge(m, src) -} -func (m *CommunityPermissions) XXX_Size() int { - return xxx_messageInfo_CommunityPermissions.Size(m) -} -func (m *CommunityPermissions) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityPermissions.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityPermissions proto.InternalMessageInfo - -func (m *CommunityPermissions) GetEnsOnly() bool { - if m != nil { - return m.EnsOnly +func (x *CommunityPermissions) GetEnsOnly() bool { + if x != nil { + return x.EnsOnly } return false } -func (m *CommunityPermissions) GetPrivate() bool { - if m != nil { - return m.Private +func (x *CommunityPermissions) GetPrivate() bool { + if x != nil { + return x.Private } return false } -func (m *CommunityPermissions) GetAccess() CommunityPermissions_Access { - if m != nil { - return m.Access +func (x *CommunityPermissions) GetAccess() CommunityPermissions_Access { + if x != nil { + return x.Access } return CommunityPermissions_UNKNOWN_ACCESS } type TokenCriteria struct { - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` - EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` - Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` + EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` + Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` } -func (m *TokenCriteria) Reset() { *m = TokenCriteria{} } -func (m *TokenCriteria) String() string { return proto.CompactTextString(m) } -func (*TokenCriteria) ProtoMessage() {} +func (x *TokenCriteria) Reset() { + *x = TokenCriteria{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenCriteria) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenCriteria) ProtoMessage() {} + +func (x *TokenCriteria) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenCriteria.ProtoReflect.Descriptor instead. func (*TokenCriteria) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{4} + return file_communities_proto_rawDescGZIP(), []int{4} } -func (m *TokenCriteria) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TokenCriteria.Unmarshal(m, b) -} -func (m *TokenCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TokenCriteria.Marshal(b, m, deterministic) -} -func (m *TokenCriteria) XXX_Merge(src proto.Message) { - xxx_messageInfo_TokenCriteria.Merge(m, src) -} -func (m *TokenCriteria) XXX_Size() int { - return xxx_messageInfo_TokenCriteria.Size(m) -} -func (m *TokenCriteria) XXX_DiscardUnknown() { - xxx_messageInfo_TokenCriteria.DiscardUnknown(m) -} - -var xxx_messageInfo_TokenCriteria proto.InternalMessageInfo - -func (m *TokenCriteria) GetContractAddresses() map[uint64]string { - if m != nil { - return m.ContractAddresses +func (x *TokenCriteria) GetContractAddresses() map[uint64]string { + if x != nil { + return x.ContractAddresses } return nil } -func (m *TokenCriteria) GetType() CommunityTokenType { - if m != nil { - return m.Type +func (x *TokenCriteria) GetType() CommunityTokenType { + if x != nil { + return x.Type } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (m *TokenCriteria) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *TokenCriteria) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *TokenCriteria) GetName() string { - if m != nil { - return m.Name +func (x *TokenCriteria) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *TokenCriteria) GetAmount() string { - if m != nil { - return m.Amount +func (x *TokenCriteria) GetAmount() string { + if x != nil { + return x.Amount } return "" } -func (m *TokenCriteria) GetTokenIds() []uint64 { - if m != nil { - return m.TokenIds +func (x *TokenCriteria) GetTokenIds() []uint64 { + if x != nil { + return x.TokenIds } return nil } -func (m *TokenCriteria) GetEnsPattern() string { - if m != nil { - return m.EnsPattern +func (x *TokenCriteria) GetEnsPattern() string { + if x != nil { + return x.EnsPattern } return "" } -func (m *TokenCriteria) GetDecimals() uint64 { - if m != nil { - return m.Decimals +func (x *TokenCriteria) GetDecimals() uint64 { + if x != nil { + return x.Decimals } return 0 } type CommunityTokenPermission struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` - TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` - ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` - IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` + TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` + ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` + IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` } -func (m *CommunityTokenPermission) Reset() { *m = CommunityTokenPermission{} } -func (m *CommunityTokenPermission) String() string { return proto.CompactTextString(m) } -func (*CommunityTokenPermission) ProtoMessage() {} +func (x *CommunityTokenPermission) Reset() { + *x = CommunityTokenPermission{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityTokenPermission) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityTokenPermission) ProtoMessage() {} + +func (x *CommunityTokenPermission) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityTokenPermission.ProtoReflect.Descriptor instead. func (*CommunityTokenPermission) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{5} + return file_communities_proto_rawDescGZIP(), []int{5} } -func (m *CommunityTokenPermission) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityTokenPermission.Unmarshal(m, b) -} -func (m *CommunityTokenPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityTokenPermission.Marshal(b, m, deterministic) -} -func (m *CommunityTokenPermission) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityTokenPermission.Merge(m, src) -} -func (m *CommunityTokenPermission) XXX_Size() int { - return xxx_messageInfo_CommunityTokenPermission.Size(m) -} -func (m *CommunityTokenPermission) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityTokenPermission.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityTokenPermission proto.InternalMessageInfo - -func (m *CommunityTokenPermission) GetId() string { - if m != nil { - return m.Id +func (x *CommunityTokenPermission) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { - if m != nil { - return m.Type +func (x *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { + if x != nil { + return x.Type } return CommunityTokenPermission_UNKNOWN_TOKEN_PERMISSION } -func (m *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { - if m != nil { - return m.TokenCriteria +func (x *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { + if x != nil { + return x.TokenCriteria } return nil } -func (m *CommunityTokenPermission) GetChatIds() []string { - if m != nil { - return m.ChatIds +func (x *CommunityTokenPermission) GetChatIds() []string { + if x != nil { + return x.ChatIds } return nil } -func (m *CommunityTokenPermission) GetIsPrivate() bool { - if m != nil { - return m.IsPrivate +func (x *CommunityTokenPermission) GetIsPrivate() bool { + if x != nil { + return x.IsPrivate } return false } type CommunityDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` @@ -567,1238 +683,1943 @@ type CommunityDescription struct { TokenPermissions map[string]*CommunityTokenPermission `protobuf:"bytes,15,rep,name=token_permissions,json=tokenPermissions,proto3" json:"token_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` CommunityTokensMetadata []*CommunityTokenMetadata `protobuf:"bytes,16,rep,name=community_tokens_metadata,json=communityTokensMetadata,proto3" json:"community_tokens_metadata,omitempty"` ActiveMembersCount uint64 `protobuf:"varint,17,opt,name=active_members_count,json=activeMembersCount,proto3" json:"active_members_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *CommunityDescription) Reset() { *m = CommunityDescription{} } -func (m *CommunityDescription) String() string { return proto.CompactTextString(m) } -func (*CommunityDescription) ProtoMessage() {} +func (x *CommunityDescription) Reset() { + *x = CommunityDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityDescription) ProtoMessage() {} + +func (x *CommunityDescription) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityDescription.ProtoReflect.Descriptor instead. func (*CommunityDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{6} + return file_communities_proto_rawDescGZIP(), []int{6} } -func (m *CommunityDescription) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityDescription.Unmarshal(m, b) -} -func (m *CommunityDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityDescription.Marshal(b, m, deterministic) -} -func (m *CommunityDescription) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityDescription.Merge(m, src) -} -func (m *CommunityDescription) XXX_Size() int { - return xxx_messageInfo_CommunityDescription.Size(m) -} -func (m *CommunityDescription) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityDescription.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityDescription proto.InternalMessageInfo - -func (m *CommunityDescription) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityDescription) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityDescription) GetMembers() map[string]*CommunityMember { - if m != nil { - return m.Members +func (x *CommunityDescription) GetMembers() map[string]*CommunityMember { + if x != nil { + return x.Members } return nil } -func (m *CommunityDescription) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityDescription) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityDescription) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityDescription) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityDescription) GetChats() map[string]*CommunityChat { - if m != nil { - return m.Chats +func (x *CommunityDescription) GetChats() map[string]*CommunityChat { + if x != nil { + return x.Chats } return nil } -func (m *CommunityDescription) GetBanList() []string { - if m != nil { - return m.BanList +func (x *CommunityDescription) GetBanList() []string { + if x != nil { + return x.BanList } return nil } -func (m *CommunityDescription) GetCategories() map[string]*CommunityCategory { - if m != nil { - return m.Categories +func (x *CommunityDescription) GetCategories() map[string]*CommunityCategory { + if x != nil { + return x.Categories } return nil } -func (m *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { - if m != nil { - return m.ArchiveMagnetlinkClock +func (x *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { + if x != nil { + return x.ArchiveMagnetlinkClock } return 0 } -func (m *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { - if m != nil { - return m.AdminSettings +func (x *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { + if x != nil { + return x.AdminSettings } return nil } -func (m *CommunityDescription) GetIntroMessage() string { - if m != nil { - return m.IntroMessage +func (x *CommunityDescription) GetIntroMessage() string { + if x != nil { + return x.IntroMessage } return "" } -func (m *CommunityDescription) GetOutroMessage() string { - if m != nil { - return m.OutroMessage +func (x *CommunityDescription) GetOutroMessage() string { + if x != nil { + return x.OutroMessage } return "" } -func (m *CommunityDescription) GetEncrypted() bool { - if m != nil { - return m.Encrypted +func (x *CommunityDescription) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } -func (m *CommunityDescription) GetTags() []string { - if m != nil { - return m.Tags +func (x *CommunityDescription) GetTags() []string { + if x != nil { + return x.Tags } return nil } -func (m *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { - if m != nil { - return m.TokenPermissions +func (x *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { + if x != nil { + return x.TokenPermissions } return nil } -func (m *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { - if m != nil { - return m.CommunityTokensMetadata +func (x *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { + if x != nil { + return x.CommunityTokensMetadata } return nil } -func (m *CommunityDescription) GetActiveMembersCount() uint64 { - if m != nil { - return m.ActiveMembersCount +func (x *CommunityDescription) GetActiveMembersCount() uint64 { + if x != nil { + return x.ActiveMembersCount } return 0 } type CommunityAdminSettings struct { - PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` } -func (m *CommunityAdminSettings) Reset() { *m = CommunityAdminSettings{} } -func (m *CommunityAdminSettings) String() string { return proto.CompactTextString(m) } -func (*CommunityAdminSettings) ProtoMessage() {} +func (x *CommunityAdminSettings) Reset() { + *x = CommunityAdminSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityAdminSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityAdminSettings) ProtoMessage() {} + +func (x *CommunityAdminSettings) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityAdminSettings.ProtoReflect.Descriptor instead. func (*CommunityAdminSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{7} + return file_communities_proto_rawDescGZIP(), []int{7} } -func (m *CommunityAdminSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityAdminSettings.Unmarshal(m, b) -} -func (m *CommunityAdminSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityAdminSettings.Marshal(b, m, deterministic) -} -func (m *CommunityAdminSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityAdminSettings.Merge(m, src) -} -func (m *CommunityAdminSettings) XXX_Size() int { - return xxx_messageInfo_CommunityAdminSettings.Size(m) -} -func (m *CommunityAdminSettings) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityAdminSettings.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityAdminSettings proto.InternalMessageInfo - -func (m *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { - if m != nil { - return m.PinMessageAllMembersEnabled +func (x *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { + if x != nil { + return x.PinMessageAllMembersEnabled } return false } type CommunityChat struct { - Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` - CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` + CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` } -func (m *CommunityChat) Reset() { *m = CommunityChat{} } -func (m *CommunityChat) String() string { return proto.CompactTextString(m) } -func (*CommunityChat) ProtoMessage() {} +func (x *CommunityChat) Reset() { + *x = CommunityChat{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityChat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityChat) ProtoMessage() {} + +func (x *CommunityChat) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityChat.ProtoReflect.Descriptor instead. func (*CommunityChat) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{8} + return file_communities_proto_rawDescGZIP(), []int{8} } -func (m *CommunityChat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityChat.Unmarshal(m, b) -} -func (m *CommunityChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityChat.Marshal(b, m, deterministic) -} -func (m *CommunityChat) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityChat.Merge(m, src) -} -func (m *CommunityChat) XXX_Size() int { - return xxx_messageInfo_CommunityChat.Size(m) -} -func (m *CommunityChat) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityChat.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityChat proto.InternalMessageInfo - -func (m *CommunityChat) GetMembers() map[string]*CommunityMember { - if m != nil { - return m.Members +func (x *CommunityChat) GetMembers() map[string]*CommunityMember { + if x != nil { + return x.Members } return nil } -func (m *CommunityChat) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityChat) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityChat) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityChat) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityChat) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CommunityChat) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CommunityChat) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CommunityChat) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } type CommunityCategory struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` } -func (m *CommunityCategory) Reset() { *m = CommunityCategory{} } -func (m *CommunityCategory) String() string { return proto.CompactTextString(m) } -func (*CommunityCategory) ProtoMessage() {} +func (x *CommunityCategory) Reset() { + *x = CommunityCategory{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityCategory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityCategory) ProtoMessage() {} + +func (x *CommunityCategory) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityCategory.ProtoReflect.Descriptor instead. func (*CommunityCategory) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{9} + return file_communities_proto_rawDescGZIP(), []int{9} } -func (m *CommunityCategory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityCategory.Unmarshal(m, b) -} -func (m *CommunityCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityCategory.Marshal(b, m, deterministic) -} -func (m *CommunityCategory) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityCategory.Merge(m, src) -} -func (m *CommunityCategory) XXX_Size() int { - return xxx_messageInfo_CommunityCategory.Size(m) -} -func (m *CommunityCategory) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityCategory.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityCategory proto.InternalMessageInfo - -func (m *CommunityCategory) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CommunityCategory) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CommunityCategory) GetName() string { - if m != nil { - return m.Name +func (x *CommunityCategory) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CommunityCategory) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CommunityCategory) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } type RevealedAccount struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` - IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` + IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` } -func (m *RevealedAccount) Reset() { *m = RevealedAccount{} } -func (m *RevealedAccount) String() string { return proto.CompactTextString(m) } -func (*RevealedAccount) ProtoMessage() {} +func (x *RevealedAccount) Reset() { + *x = RevealedAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevealedAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevealedAccount) ProtoMessage() {} + +func (x *RevealedAccount) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevealedAccount.ProtoReflect.Descriptor instead. func (*RevealedAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{10} + return file_communities_proto_rawDescGZIP(), []int{10} } -func (m *RevealedAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RevealedAccount.Unmarshal(m, b) -} -func (m *RevealedAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RevealedAccount.Marshal(b, m, deterministic) -} -func (m *RevealedAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_RevealedAccount.Merge(m, src) -} -func (m *RevealedAccount) XXX_Size() int { - return xxx_messageInfo_RevealedAccount.Size(m) -} -func (m *RevealedAccount) XXX_DiscardUnknown() { - xxx_messageInfo_RevealedAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_RevealedAccount proto.InternalMessageInfo - -func (m *RevealedAccount) GetAddress() string { - if m != nil { - return m.Address +func (x *RevealedAccount) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *RevealedAccount) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *RevealedAccount) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *RevealedAccount) GetChainIds() []uint64 { - if m != nil { - return m.ChainIds +func (x *RevealedAccount) GetChainIds() []uint64 { + if x != nil { + return x.ChainIds } return nil } -func (m *RevealedAccount) GetIsAirdropAddress() bool { - if m != nil { - return m.IsAirdropAddress +func (x *RevealedAccount) GetIsAirdropAddress() bool { + if x != nil { + return x.IsAirdropAddress } return false } type CommunityRequestToJoin struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *CommunityRequestToJoin) Reset() { *m = CommunityRequestToJoin{} } -func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToJoin) ProtoMessage() {} +func (x *CommunityRequestToJoin) Reset() { + *x = CommunityRequestToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToJoin) ProtoMessage() {} + +func (x *CommunityRequestToJoin) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToJoin.ProtoReflect.Descriptor instead. func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{11} + return file_communities_proto_rawDescGZIP(), []int{11} } -func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToJoin.Unmarshal(m, b) -} -func (m *CommunityRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToJoin.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToJoin.Merge(m, src) -} -func (m *CommunityRequestToJoin) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToJoin.Size(m) -} -func (m *CommunityRequestToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToJoin proto.InternalMessageInfo - -func (m *CommunityRequestToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *CommunityRequestToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *CommunityRequestToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *CommunityRequestToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *CommunityRequestToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityRequestToJoin) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *CommunityRequestToJoin) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +func (x *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } -type CommunityEditRevealedAccounts struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type CommunityEditSharedAddresses struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *CommunityEditRevealedAccounts) Reset() { *m = CommunityEditRevealedAccounts{} } -func (m *CommunityEditRevealedAccounts) String() string { return proto.CompactTextString(m) } -func (*CommunityEditRevealedAccounts) ProtoMessage() {} -func (*CommunityEditRevealedAccounts) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{12} +func (x *CommunityEditSharedAddresses) Reset() { + *x = CommunityEditSharedAddresses{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CommunityEditRevealedAccounts) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEditRevealedAccounts.Unmarshal(m, b) -} -func (m *CommunityEditRevealedAccounts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEditRevealedAccounts.Marshal(b, m, deterministic) -} -func (m *CommunityEditRevealedAccounts) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEditRevealedAccounts.Merge(m, src) -} -func (m *CommunityEditRevealedAccounts) XXX_Size() int { - return xxx_messageInfo_CommunityEditRevealedAccounts.Size(m) -} -func (m *CommunityEditRevealedAccounts) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEditRevealedAccounts.DiscardUnknown(m) +func (x *CommunityEditSharedAddresses) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_CommunityEditRevealedAccounts proto.InternalMessageInfo +func (*CommunityEditSharedAddresses) ProtoMessage() {} -func (m *CommunityEditRevealedAccounts) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityEditSharedAddresses) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEditSharedAddresses.ProtoReflect.Descriptor instead. +func (*CommunityEditSharedAddresses) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{12} +} + +func (x *CommunityEditSharedAddresses) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityEditRevealedAccounts) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityEditSharedAddresses) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityEditRevealedAccounts) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +func (x *CommunityEditSharedAddresses) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } type CommunityCancelRequestToJoin struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } -func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelRequestToJoin{} } -func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) } -func (*CommunityCancelRequestToJoin) ProtoMessage() {} +func (x *CommunityCancelRequestToJoin) Reset() { + *x = CommunityCancelRequestToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityCancelRequestToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityCancelRequestToJoin) ProtoMessage() {} + +func (x *CommunityCancelRequestToJoin) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityCancelRequestToJoin.ProtoReflect.Descriptor instead. func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{13} + return file_communities_proto_rawDescGZIP(), []int{13} } -func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityCancelRequestToJoin.Unmarshal(m, b) -} -func (m *CommunityCancelRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityCancelRequestToJoin.Marshal(b, m, deterministic) -} -func (m *CommunityCancelRequestToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityCancelRequestToJoin.Merge(m, src) -} -func (m *CommunityCancelRequestToJoin) XXX_Size() int { - return xxx_messageInfo_CommunityCancelRequestToJoin.Size(m) -} -func (m *CommunityCancelRequestToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityCancelRequestToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityCancelRequestToJoin proto.InternalMessageInfo - -func (m *CommunityCancelRequestToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityCancelRequestToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityCancelRequestToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *CommunityCancelRequestToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *CommunityCancelRequestToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *CommunityCancelRequestToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *CommunityCancelRequestToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityCancelRequestToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityCancelRequestToJoin) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *CommunityCancelRequestToJoin) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } type CommunityRequestToJoinResponse struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"` - Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"` - Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"` - CommunityId []byte `protobuf:"bytes,5,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"` + Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"` + Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"` + CommunityId []byte `protobuf:"bytes,5,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` } -func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} } -func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToJoinResponse) ProtoMessage() {} +func (x *CommunityRequestToJoinResponse) Reset() { + *x = CommunityRequestToJoinResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToJoinResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToJoinResponse) ProtoMessage() {} + +func (x *CommunityRequestToJoinResponse) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToJoinResponse.ProtoReflect.Descriptor instead. func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{14} + return file_communities_proto_rawDescGZIP(), []int{14} } -func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToJoinResponse.Unmarshal(m, b) -} -func (m *CommunityRequestToJoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToJoinResponse.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToJoinResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToJoinResponse.Merge(m, src) -} -func (m *CommunityRequestToJoinResponse) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToJoinResponse.Size(m) -} -func (m *CommunityRequestToJoinResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToJoinResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToJoinResponse proto.InternalMessageInfo - -func (m *CommunityRequestToJoinResponse) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToJoinResponse) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { - if m != nil { - return m.Community +func (x *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { + if x != nil { + return x.Community } return nil } -func (m *CommunityRequestToJoinResponse) GetAccepted() bool { - if m != nil { - return m.Accepted +func (x *CommunityRequestToJoinResponse) GetAccepted() bool { + if x != nil { + return x.Accepted } return false } -func (m *CommunityRequestToJoinResponse) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *CommunityRequestToJoinResponse) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *CommunityRequestToJoinResponse) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToJoinResponse) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityRequestToJoinResponse) GetMagnetUri() string { - if m != nil { - return m.MagnetUri +func (x *CommunityRequestToJoinResponse) GetMagnetUri() string { + if x != nil { + return x.MagnetUri } return "" } type CommunityRequestToLeave struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` } -func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave{} } -func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToLeave) ProtoMessage() {} +func (x *CommunityRequestToLeave) Reset() { + *x = CommunityRequestToLeave{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToLeave) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToLeave) ProtoMessage() {} + +func (x *CommunityRequestToLeave) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToLeave.ProtoReflect.Descriptor instead. func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{15} + return file_communities_proto_rawDescGZIP(), []int{15} } -func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToLeave.Unmarshal(m, b) -} -func (m *CommunityRequestToLeave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToLeave.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToLeave) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToLeave.Merge(m, src) -} -func (m *CommunityRequestToLeave) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToLeave.Size(m) -} -func (m *CommunityRequestToLeave) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToLeave.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToLeave proto.InternalMessageInfo - -func (m *CommunityRequestToLeave) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToLeave) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToLeave) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToLeave) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } type CommunityMessageArchiveMagnetlink struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` } -func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMessageArchiveMagnetlink{} } -func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } -func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} +func (x *CommunityMessageArchiveMagnetlink) Reset() { + *x = CommunityMessageArchiveMagnetlink{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityMessageArchiveMagnetlink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} + +func (x *CommunityMessageArchiveMagnetlink) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityMessageArchiveMagnetlink.ProtoReflect.Descriptor instead. func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{16} + return file_communities_proto_rawDescGZIP(), []int{16} } -func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Unmarshal(m, b) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Marshal(b, m, deterministic) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityMessageArchiveMagnetlink.Merge(m, src) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Size() int { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Size(m) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityMessageArchiveMagnetlink.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityMessageArchiveMagnetlink proto.InternalMessageInfo - -func (m *CommunityMessageArchiveMagnetlink) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityMessageArchiveMagnetlink) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { - if m != nil { - return m.MagnetUri +func (x *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { + if x != nil { + return x.MagnetUri } return "" } type WakuMessage struct { - Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` - Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` - Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` - Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` - ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` + Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` + Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` + Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` + ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` } -func (m *WakuMessage) Reset() { *m = WakuMessage{} } -func (m *WakuMessage) String() string { return proto.CompactTextString(m) } -func (*WakuMessage) ProtoMessage() {} +func (x *WakuMessage) Reset() { + *x = WakuMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessage) ProtoMessage() {} + +func (x *WakuMessage) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessage.ProtoReflect.Descriptor instead. func (*WakuMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{17} + return file_communities_proto_rawDescGZIP(), []int{17} } -func (m *WakuMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessage.Unmarshal(m, b) -} -func (m *WakuMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessage.Marshal(b, m, deterministic) -} -func (m *WakuMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessage.Merge(m, src) -} -func (m *WakuMessage) XXX_Size() int { - return xxx_messageInfo_WakuMessage.Size(m) -} -func (m *WakuMessage) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessage proto.InternalMessageInfo - -func (m *WakuMessage) GetSig() []byte { - if m != nil { - return m.Sig +func (x *WakuMessage) GetSig() []byte { + if x != nil { + return x.Sig } return nil } -func (m *WakuMessage) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *WakuMessage) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *WakuMessage) GetTopic() []byte { - if m != nil { - return m.Topic +func (x *WakuMessage) GetTopic() []byte { + if x != nil { + return x.Topic } return nil } -func (m *WakuMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *WakuMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *WakuMessage) GetPadding() []byte { - if m != nil { - return m.Padding +func (x *WakuMessage) GetPadding() []byte { + if x != nil { + return x.Padding } return nil } -func (m *WakuMessage) GetHash() []byte { - if m != nil { - return m.Hash +func (x *WakuMessage) GetHash() []byte { + if x != nil { + return x.Hash } return nil } -func (m *WakuMessage) GetThirdPartyId() string { - if m != nil { - return m.ThirdPartyId +func (x *WakuMessage) GetThirdPartyId() string { + if x != nil { + return x.ThirdPartyId } return "" } type WakuMessageArchiveMetadata struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` - To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` - ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` + To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` + ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` } -func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMetadata{} } -func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveMetadata) ProtoMessage() {} +func (x *WakuMessageArchiveMetadata) Reset() { + *x = WakuMessageArchiveMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveMetadata) ProtoMessage() {} + +func (x *WakuMessageArchiveMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveMetadata.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{18} + return file_communities_proto_rawDescGZIP(), []int{18} } -func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveMetadata.Unmarshal(m, b) -} -func (m *WakuMessageArchiveMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveMetadata.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveMetadata.Merge(m, src) -} -func (m *WakuMessageArchiveMetadata) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveMetadata.Size(m) -} -func (m *WakuMessageArchiveMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveMetadata proto.InternalMessageInfo - -func (m *WakuMessageArchiveMetadata) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchiveMetadata) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchiveMetadata) GetFrom() uint64 { - if m != nil { - return m.From +func (x *WakuMessageArchiveMetadata) GetFrom() uint64 { + if x != nil { + return x.From } return 0 } -func (m *WakuMessageArchiveMetadata) GetTo() uint64 { - if m != nil { - return m.To +func (x *WakuMessageArchiveMetadata) GetTo() uint64 { + if x != nil { + return x.To } return 0 } -func (m *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { - if m != nil { - return m.ContentTopic +func (x *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { + if x != nil { + return x.ContentTopic } return nil } type WakuMessageArchive struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` } -func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} } -func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchive) ProtoMessage() {} +func (x *WakuMessageArchive) Reset() { + *x = WakuMessageArchive{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchive) ProtoMessage() {} + +func (x *WakuMessageArchive) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchive.ProtoReflect.Descriptor instead. func (*WakuMessageArchive) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{19} + return file_communities_proto_rawDescGZIP(), []int{19} } -func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchive.Unmarshal(m, b) -} -func (m *WakuMessageArchive) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchive.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchive) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchive.Merge(m, src) -} -func (m *WakuMessageArchive) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchive.Size(m) -} -func (m *WakuMessageArchive) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchive.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchive proto.InternalMessageInfo - -func (m *WakuMessageArchive) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchive) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { - if m != nil { - return m.Metadata +func (x *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { + if x != nil { + return x.Metadata } return nil } -func (m *WakuMessageArchive) GetMessages() []*WakuMessage { - if m != nil { - return m.Messages +func (x *WakuMessageArchive) GetMessages() []*WakuMessage { + if x != nil { + return x.Messages } return nil } type WakuMessageArchiveIndexMetadata struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` } -func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArchiveIndexMetadata{} } -func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} +func (x *WakuMessageArchiveIndexMetadata) Reset() { + *x = WakuMessageArchiveIndexMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveIndexMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} + +func (x *WakuMessageArchiveIndexMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveIndexMetadata.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{20} + return file_communities_proto_rawDescGZIP(), []int{20} } -func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Unmarshal(m, b) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveIndexMetadata.Merge(m, src) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Size(m) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveIndexMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveIndexMetadata proto.InternalMessageInfo - -func (m *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { - if m != nil { - return m.Metadata +func (x *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { + if x != nil { + return x.Metadata } return nil } -func (m *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { - if m != nil { - return m.Offset +func (x *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { + if x != nil { + return x.Offset } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetSize() uint64 { - if m != nil { - return m.Size +func (x *WakuMessageArchiveIndexMetadata) GetSize() uint64 { + if x != nil { + return x.Size } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { - if m != nil { - return m.Padding +func (x *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { + if x != nil { + return x.Padding } return 0 } type WakuMessageArchiveIndex struct { - Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex{} } -func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveIndex) ProtoMessage() {} +func (x *WakuMessageArchiveIndex) Reset() { + *x = WakuMessageArchiveIndex{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveIndex) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveIndex) ProtoMessage() {} + +func (x *WakuMessageArchiveIndex) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveIndex.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{21} + return file_communities_proto_rawDescGZIP(), []int{21} } -func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveIndex.Unmarshal(m, b) -} -func (m *WakuMessageArchiveIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveIndex.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveIndex) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveIndex.Merge(m, src) -} -func (m *WakuMessageArchiveIndex) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveIndex.Size(m) -} -func (m *WakuMessageArchiveIndex) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveIndex.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveIndex proto.InternalMessageInfo - -func (m *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { - if m != nil { - return m.Archives +func (x *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { + if x != nil { + return x.Archives } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityMember_Roles", CommunityMember_Roles_name, CommunityMember_Roles_value) - proto.RegisterEnum("protobuf.CommunityPermissions_Access", CommunityPermissions_Access_name, CommunityPermissions_Access_value) - proto.RegisterEnum("protobuf.CommunityTokenPermission_Type", CommunityTokenPermission_Type_name, CommunityTokenPermission_Type_value) - proto.RegisterType((*Grant)(nil), "protobuf.Grant") - proto.RegisterType((*CommunityMember)(nil), "protobuf.CommunityMember") - proto.RegisterType((*CommunityTokenMetadata)(nil), "protobuf.CommunityTokenMetadata") - proto.RegisterMapType((map[uint64]string)(nil), "protobuf.CommunityTokenMetadata.ContractAddressesEntry") - proto.RegisterType((*CommunityPermissions)(nil), "protobuf.CommunityPermissions") - proto.RegisterType((*TokenCriteria)(nil), "protobuf.TokenCriteria") - proto.RegisterMapType((map[uint64]string)(nil), "protobuf.TokenCriteria.ContractAddressesEntry") - proto.RegisterType((*CommunityTokenPermission)(nil), "protobuf.CommunityTokenPermission") - proto.RegisterType((*CommunityDescription)(nil), "protobuf.CommunityDescription") - proto.RegisterMapType((map[string]*CommunityCategory)(nil), "protobuf.CommunityDescription.CategoriesEntry") - proto.RegisterMapType((map[string]*CommunityChat)(nil), "protobuf.CommunityDescription.ChatsEntry") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityDescription.MembersEntry") - proto.RegisterMapType((map[string]*CommunityTokenPermission)(nil), "protobuf.CommunityDescription.TokenPermissionsEntry") - proto.RegisterType((*CommunityAdminSettings)(nil), "protobuf.CommunityAdminSettings") - proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry") - proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory") - proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount") - proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") - proto.RegisterType((*CommunityEditRevealedAccounts)(nil), "protobuf.CommunityEditRevealedAccounts") - proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin") - proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse") - proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave") - proto.RegisterType((*CommunityMessageArchiveMagnetlink)(nil), "protobuf.CommunityMessageArchiveMagnetlink") - proto.RegisterType((*WakuMessage)(nil), "protobuf.WakuMessage") - proto.RegisterType((*WakuMessageArchiveMetadata)(nil), "protobuf.WakuMessageArchiveMetadata") - proto.RegisterType((*WakuMessageArchive)(nil), "protobuf.WakuMessageArchive") - proto.RegisterType((*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndexMetadata") - proto.RegisterType((*WakuMessageArchiveIndex)(nil), "protobuf.WakuMessageArchiveIndex") - proto.RegisterMapType((map[string]*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndex.ArchivesEntry") +var File_communities_proto protoreflect.FileDescriptor + +var file_communities_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, + 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x76, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xc6, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x72, 0x65, + 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2a, + 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, + 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, + 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, + 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x05, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, + 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x2a, 0x11, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x4e, + 0x41, 0x47, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x2a, 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, + 0x22, 0x82, 0x03, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x66, 0x0a, 0x12, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x1a, + 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe0, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x22, 0x54, 0x0a, 0x06, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x0e, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x48, 0x49, + 0x50, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x22, 0x84, 0x03, 0x0a, 0x0d, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x5d, 0x0a, 0x12, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, + 0x65, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x73, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x93, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x74, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x45, + 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, + 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, + 0x14, 0x0a, 0x10, 0x43, 0x41, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x4e, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x41, 0x4e, 0x5f, 0x56, 0x49, 0x45, + 0x57, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, + 0x45, 0x4c, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x54, + 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x16, 0x0a, + 0x12, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4f, 0x57, + 0x4e, 0x45, 0x52, 0x10, 0x06, 0x22, 0xf6, 0x09, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, + 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x43, 0x68, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x68, 0x61, + 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4e, 0x0a, + 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, + 0x18, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x16, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, + 0x6e, 0x6b, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, + 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x61, 0x0a, 0x11, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, + 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, + 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x0f, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x15, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5e, + 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x70, 0x69, 0x6e, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x1b, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x6c, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xd9, + 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, + 0x12, 0x3e, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x11, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x41, + 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x64, 0x69, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, + 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x1c, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, + 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1e, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x67, 0x6e, 0x65, + 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x67, + 0x6e, 0x65, 0x74, 0x55, 0x72, 0x69, 0x22, 0x52, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x21, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x5f, + 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x65, + 0x74, 0x55, 0x72, 0x69, 0x22, 0xbf, 0x01, 0x0a, 0x0b, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x1a, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x74, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x6b, 0x75, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, + 0x1f, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, + 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, + 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x17, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4b, + 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0d, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("communities.proto", fileDescriptor_f937943d74c1cd8b) +var ( + file_communities_proto_rawDescOnce sync.Once + file_communities_proto_rawDescData = file_communities_proto_rawDesc +) + +func file_communities_proto_rawDescGZIP() []byte { + file_communities_proto_rawDescOnce.Do(func() { + file_communities_proto_rawDescData = protoimpl.X.CompressGZIP(file_communities_proto_rawDescData) + }) + return file_communities_proto_rawDescData } -var fileDescriptor_f937943d74c1cd8b = []byte{ - // 2059 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x73, 0x1b, 0x49, - 0xf5, 0xcf, 0x68, 0x64, 0x5b, 0x7a, 0xb2, 0x6c, 0xb9, 0x93, 0xd8, 0x13, 0x27, 0xd9, 0x28, 0xf3, - 0xfd, 0x52, 0x78, 0x43, 0xa1, 0xec, 0x1a, 0x28, 0x52, 0xbb, 0xb0, 0xbb, 0x8a, 0x3c, 0x64, 0xb5, - 0x89, 0x46, 0xde, 0x96, 0xbc, 0x81, 0x2d, 0x60, 0x6a, 0x3c, 0xd3, 0xb6, 0xbb, 0x22, 0xcd, 0x88, - 0xe9, 0x96, 0x0b, 0x71, 0xe0, 0x00, 0xfc, 0x05, 0xf0, 0x0f, 0x50, 0xc5, 0x1d, 0xfe, 0x04, 0x0e, - 0x54, 0x71, 0xe4, 0xce, 0x8d, 0x23, 0x47, 0x4e, 0x9c, 0xa9, 0xfe, 0x31, 0xa3, 0x19, 0x49, 0x8e, - 0xb3, 0x2c, 0x54, 0x71, 0xd2, 0xbc, 0xd7, 0xaf, 0x5f, 0xbf, 0xf7, 0xfa, 0xd3, 0xef, 0x87, 0x60, - 0x27, 0x88, 0xc7, 0xe3, 0x69, 0x44, 0x39, 0x25, 0xac, 0x35, 0x49, 0x62, 0x1e, 0xa3, 0x8a, 0xfc, - 0x39, 0x9d, 0x9e, 0xed, 0xdf, 0x0c, 0x2e, 0x7c, 0xee, 0xd1, 0x90, 0x44, 0x9c, 0xf2, 0x99, 0x5a, - 0xde, 0xaf, 0x91, 0x68, 0x3a, 0xd6, 0xb2, 0xf6, 0x25, 0xac, 0x3d, 0x4b, 0xfc, 0x88, 0xa3, 0x87, - 0xb0, 0x99, 0x6a, 0x9a, 0x79, 0x34, 0xb4, 0x8c, 0xa6, 0x71, 0xb0, 0x89, 0x6b, 0x19, 0xaf, 0x1b, - 0xa2, 0xbb, 0x50, 0x1d, 0x93, 0xf1, 0x29, 0x49, 0xc4, 0x7a, 0x49, 0xae, 0x57, 0x14, 0xa3, 0x1b, - 0xa2, 0x3d, 0xd8, 0xd0, 0x87, 0x59, 0x66, 0xd3, 0x38, 0xa8, 0xe2, 0x75, 0x41, 0x76, 0x43, 0x74, - 0x0b, 0xd6, 0x82, 0x51, 0x1c, 0xbc, 0xb2, 0xca, 0x4d, 0xe3, 0xa0, 0x8c, 0x15, 0x61, 0xff, 0xb9, - 0x04, 0xdb, 0x9d, 0x54, 0x77, 0x4f, 0x2a, 0x41, 0xdf, 0x82, 0xb5, 0x24, 0x1e, 0x11, 0x66, 0x19, - 0x4d, 0xf3, 0x60, 0xeb, 0xf0, 0x41, 0x2b, 0xf5, 0xa3, 0xb5, 0x20, 0xd9, 0xc2, 0x42, 0x0c, 0x2b, - 0x69, 0xf4, 0x09, 0xec, 0x24, 0xe4, 0x92, 0xf8, 0x23, 0x12, 0x7a, 0x7e, 0x10, 0xc4, 0xd3, 0x88, - 0x33, 0xab, 0xd4, 0x34, 0x0f, 0x6a, 0x87, 0x77, 0xe6, 0x2a, 0xb0, 0x16, 0x69, 0x2b, 0x89, 0xa7, - 0x25, 0xcb, 0xc0, 0x8d, 0xa4, 0xc8, 0x64, 0xe8, 0x11, 0xec, 0x8c, 0x7c, 0xc6, 0xbd, 0xe9, 0x24, - 0xf4, 0x39, 0xf1, 0x94, 0xe1, 0xa6, 0x34, 0x7c, 0x5b, 0x2c, 0x9c, 0x48, 0x7e, 0x47, 0xba, 0xf0, - 0x4b, 0x03, 0xd6, 0xa4, 0x21, 0xa8, 0x0e, 0x55, 0xdc, 0x7f, 0xe1, 0x78, 0x6e, 0xdf, 0x75, 0x1a, - 0x37, 0xd0, 0x16, 0x80, 0x24, 0xfb, 0x2f, 0x5d, 0x07, 0x37, 0x8c, 0x8c, 0x6e, 0x1f, 0xf5, 0xba, - 0x6e, 0xa3, 0x8c, 0x6e, 0xc3, 0x8e, 0xa4, 0x87, 0xfd, 0xe7, 0x8e, 0xeb, 0xf5, 0xda, 0x83, 0xa1, - 0x83, 0x1b, 0x6b, 0x76, 0xb9, 0x52, 0x6a, 0x94, 0xec, 0x72, 0xc5, 0x6c, 0x98, 0x8f, 0x94, 0x40, - 0xaf, 0xed, 0xb6, 0x9f, 0x39, 0xde, 0xc9, 0xc0, 0xc1, 0x83, 0x47, 0xb7, 0x15, 0xab, 0x7f, 0xe4, - 0xe0, 0xf6, 0xd0, 0xf1, 0x3a, 0x7d, 0x77, 0xe8, 0xb8, 0x43, 0xfb, 0x17, 0x26, 0xec, 0x66, 0xe1, - 0x19, 0xc6, 0xaf, 0x48, 0xd4, 0x23, 0xdc, 0x0f, 0x7d, 0xee, 0xa3, 0x33, 0x40, 0x41, 0x1c, 0xf1, - 0xc4, 0x0f, 0xb8, 0xe7, 0x87, 0x61, 0x42, 0x18, 0xd3, 0xc1, 0xad, 0x1d, 0x7e, 0x7b, 0x45, 0x70, - 0x0b, 0xbb, 0x5b, 0x1d, 0xbd, 0xb5, 0x9d, 0xee, 0x74, 0x22, 0x9e, 0xcc, 0xf0, 0x4e, 0xb0, 0xc8, - 0x47, 0x4d, 0xa8, 0x85, 0x84, 0x05, 0x09, 0x9d, 0x70, 0x1a, 0x47, 0x12, 0x19, 0x55, 0x9c, 0x67, - 0x09, 0x0c, 0xd0, 0xb1, 0x7f, 0x4e, 0x34, 0x34, 0x14, 0x81, 0xde, 0x83, 0x2a, 0x17, 0x47, 0x0e, - 0x67, 0x13, 0x22, 0xd1, 0xb1, 0x75, 0x78, 0xef, 0x2a, 0xb3, 0x84, 0x0c, 0x9e, 0x8b, 0xa3, 0x5d, - 0x58, 0x67, 0xb3, 0xf1, 0x69, 0x3c, 0xb2, 0xd6, 0x14, 0xda, 0x14, 0x85, 0x10, 0x94, 0x23, 0x7f, - 0x4c, 0xac, 0x75, 0xc9, 0x95, 0xdf, 0x68, 0x1f, 0x2a, 0x21, 0x09, 0xe8, 0xd8, 0x1f, 0x31, 0x6b, - 0xa3, 0x69, 0x1c, 0xd4, 0x71, 0x46, 0xef, 0x1f, 0x89, 0xe8, 0xad, 0x72, 0x14, 0x35, 0xc0, 0x7c, - 0x45, 0x66, 0xf2, 0x1d, 0x94, 0xb1, 0xf8, 0x14, 0x5e, 0x5c, 0xfa, 0xa3, 0x29, 0xd1, 0x1e, 0x2a, - 0xe2, 0xbd, 0xd2, 0x13, 0xc3, 0xfe, 0x9b, 0x01, 0xb7, 0x32, 0x7b, 0x8f, 0x49, 0x32, 0xa6, 0x8c, - 0xd1, 0x38, 0x62, 0xe8, 0x0e, 0x54, 0x48, 0xc4, 0xbc, 0x38, 0x1a, 0x29, 0x4d, 0x15, 0xbc, 0x41, - 0x22, 0xd6, 0x8f, 0x46, 0x33, 0x64, 0xc1, 0xc6, 0x24, 0xa1, 0x97, 0x3e, 0x57, 0xfa, 0x2a, 0x38, - 0x25, 0xd1, 0x77, 0x61, 0xdd, 0x0f, 0x02, 0xc2, 0x98, 0x0c, 0xd7, 0xd6, 0xe1, 0x57, 0x56, 0x04, - 0x25, 0x77, 0x48, 0xab, 0x2d, 0x85, 0xb1, 0xde, 0x64, 0x0f, 0x61, 0x5d, 0x71, 0x10, 0x82, 0xad, - 0x13, 0xf7, 0xb9, 0xdb, 0x7f, 0xe9, 0x7a, 0xed, 0x4e, 0xc7, 0x19, 0x0c, 0x1a, 0x37, 0xd0, 0x0e, - 0xd4, 0xdd, 0xbe, 0xd7, 0x73, 0x7a, 0x4f, 0x1d, 0x3c, 0xf8, 0xb8, 0x7b, 0xdc, 0x30, 0xd0, 0x4d, - 0xd8, 0xee, 0xba, 0x9f, 0x75, 0x87, 0xed, 0x61, 0xb7, 0xef, 0x7a, 0x7d, 0xf7, 0xc5, 0x0f, 0x1a, - 0x25, 0x01, 0xda, 0xbe, 0xeb, 0x61, 0xe7, 0xd3, 0x13, 0x67, 0x30, 0x6c, 0x98, 0xf6, 0xaf, 0x4c, - 0xa8, 0xcb, 0x9b, 0xe8, 0x24, 0x94, 0x93, 0x84, 0xfa, 0xe8, 0x47, 0xaf, 0x81, 0x57, 0x6b, 0x6e, - 0x72, 0x61, 0xd3, 0x17, 0x40, 0xd5, 0x3b, 0x50, 0xe6, 0x02, 0x18, 0xa5, 0x37, 0x00, 0x86, 0x94, - 0xcc, 0x61, 0xc2, 0x5c, 0x89, 0x89, 0x72, 0x0e, 0x13, 0xbb, 0xb0, 0xee, 0x8f, 0xc5, 0x9b, 0x4f, - 0xf1, 0xa3, 0x28, 0x91, 0xe3, 0x24, 0xc8, 0x3c, 0x1a, 0x32, 0x6b, 0xbd, 0x69, 0x1e, 0x94, 0x71, - 0x45, 0x32, 0xba, 0x21, 0x43, 0x0f, 0xa0, 0x26, 0x6e, 0x73, 0xe2, 0x73, 0x4e, 0x92, 0x48, 0x62, - 0xa9, 0x8a, 0x81, 0x44, 0xec, 0x58, 0x71, 0x0a, 0x48, 0xab, 0x48, 0xe0, 0xfc, 0xa7, 0x91, 0xf6, - 0x1b, 0x13, 0xac, 0x62, 0x00, 0xe6, 0x48, 0x40, 0x5b, 0x50, 0xd2, 0x99, 0xbb, 0x8a, 0x4b, 0x34, - 0x44, 0xef, 0x17, 0x42, 0xf8, 0xd5, 0xab, 0x42, 0x38, 0xd7, 0xd0, 0xca, 0x45, 0xf3, 0x03, 0xd8, - 0x52, 0x91, 0x08, 0xf4, 0xdd, 0x59, 0xa6, 0xbc, 0xda, 0xbd, 0x2b, 0xae, 0x16, 0xd7, 0x79, 0x01, - 0x1e, 0x77, 0xa0, 0xa2, 0x0b, 0x02, 0xb3, 0xca, 0x4d, 0xf3, 0xa0, 0x8a, 0x37, 0x54, 0x45, 0x60, - 0xe8, 0x3e, 0x00, 0x65, 0x5e, 0x8a, 0xfe, 0x35, 0x89, 0xfe, 0x2a, 0x65, 0xc7, 0x8a, 0x61, 0xff, - 0xc1, 0x80, 0xb2, 0x7c, 0xe4, 0xf7, 0xc0, 0x4a, 0xf1, 0xab, 0x72, 0xe5, 0xb1, 0x83, 0x7b, 0xdd, - 0xc1, 0xa0, 0xdb, 0x77, 0x1b, 0x37, 0x50, 0x03, 0x36, 0x9f, 0x3a, 0x9d, 0x7e, 0x2f, 0x4d, 0xac, - 0x86, 0xc0, 0xb6, 0xe6, 0x28, 0x7c, 0x37, 0x4a, 0xe8, 0x16, 0x34, 0x3a, 0x6d, 0xd7, 0xfb, 0xac, - 0xeb, 0xbc, 0xf4, 0x3a, 0x1f, 0xb7, 0x5d, 0xd7, 0x79, 0xd1, 0x30, 0xd1, 0x7d, 0xb8, 0x93, 0x71, - 0xdb, 0xee, 0x91, 0x77, 0xdc, 0x1f, 0x0c, 0xb3, 0xe5, 0x32, 0xda, 0x83, 0x9b, 0x5a, 0x4f, 0x31, - 0x45, 0xa3, 0x5d, 0x40, 0x85, 0x05, 0x95, 0xe1, 0xd7, 0xed, 0x7f, 0x56, 0x73, 0xef, 0xff, 0xa8, - 0x98, 0xf8, 0x54, 0x0d, 0x31, 0x72, 0xc5, 0x0f, 0x39, 0xb0, 0xa1, 0xea, 0x66, 0x5a, 0xa7, 0xbe, - 0xb6, 0xe2, 0x6a, 0x72, 0x6a, 0x5a, 0xaa, 0xec, 0xe9, 0xb7, 0x92, 0xee, 0x45, 0x1f, 0x41, 0x6d, - 0x32, 0x4f, 0x03, 0x12, 0xf4, 0xb5, 0xc3, 0xb7, 0x5e, 0x9f, 0x2c, 0x70, 0x7e, 0x0b, 0x3a, 0x84, - 0x4a, 0xda, 0x1c, 0xc8, 0x6b, 0xa8, 0x1d, 0xee, 0xe6, 0xb6, 0xcb, 0xdb, 0x52, 0xab, 0x38, 0x93, - 0x43, 0x1f, 0xc2, 0x9a, 0xb8, 0x47, 0xf5, 0x3a, 0x6a, 0x87, 0x6f, 0x5f, 0x63, 0xba, 0xd0, 0xa2, - 0x0d, 0x57, 0xfb, 0x04, 0x30, 0x4e, 0xfd, 0xc8, 0x1b, 0x51, 0xc6, 0xad, 0x0d, 0x05, 0x8c, 0x53, - 0x3f, 0x7a, 0x41, 0x19, 0x47, 0x2e, 0x40, 0xe0, 0x73, 0x72, 0x1e, 0x27, 0x94, 0x88, 0x17, 0xb4, - 0x90, 0x4a, 0x56, 0x1f, 0x90, 0x6d, 0x50, 0xa7, 0xe4, 0x34, 0xa0, 0x27, 0x60, 0xf9, 0x49, 0x70, - 0x41, 0x2f, 0x89, 0x37, 0xf6, 0xcf, 0x23, 0xc2, 0x47, 0x34, 0x7a, 0xa5, 0xab, 0x7a, 0x55, 0xde, - 0xc8, 0xae, 0x5e, 0xef, 0x65, 0xcb, 0xb2, 0xb8, 0xa3, 0x67, 0xb0, 0xe5, 0x87, 0x63, 0x1a, 0x79, - 0x8c, 0x70, 0x4e, 0xa3, 0x73, 0x66, 0x81, 0x8c, 0x4f, 0x73, 0x85, 0x35, 0x6d, 0x21, 0x38, 0xd0, - 0x72, 0xb8, 0xee, 0xe7, 0x49, 0xf4, 0x7f, 0x50, 0xa7, 0x11, 0x4f, 0x62, 0x6f, 0x4c, 0x18, 0x13, - 0x25, 0xb0, 0x26, 0x9f, 0xe7, 0xa6, 0x64, 0xf6, 0x14, 0x4f, 0x08, 0xc5, 0xd3, 0xbc, 0xd0, 0xa6, - 0x12, 0x92, 0xcc, 0x54, 0xe8, 0x1e, 0x54, 0x49, 0x14, 0x24, 0xb3, 0x09, 0x27, 0xa1, 0x55, 0x57, - 0x8f, 0x26, 0x63, 0x88, 0x24, 0xc7, 0xfd, 0x73, 0x66, 0x6d, 0xc9, 0x88, 0xca, 0x6f, 0xe4, 0xc3, - 0x8e, 0x7a, 0xc2, 0x79, 0x98, 0x6c, 0xcb, 0xa8, 0x7e, 0xf3, 0x9a, 0xa8, 0x2e, 0x24, 0x06, 0x1d, - 0xdb, 0x06, 0x5f, 0x60, 0xa3, 0x1f, 0xc2, 0x9d, 0x79, 0xdb, 0x28, 0x57, 0x99, 0x37, 0xd6, 0x2d, - 0x84, 0xd5, 0x90, 0x47, 0x35, 0xaf, 0x6b, 0x35, 0xf0, 0x5e, 0x50, 0xe0, 0xb3, 0xac, 0x83, 0x79, - 0x07, 0x6e, 0xf9, 0x01, 0x97, 0xd7, 0xa7, 0x30, 0xef, 0xc9, 0x3e, 0xcd, 0xda, 0x91, 0x77, 0x87, - 0xd4, 0x9a, 0x7e, 0x1c, 0x1d, 0xb1, 0xb2, 0x7f, 0x02, 0x9b, 0xf9, 0xc7, 0x92, 0xcf, 0xad, 0x55, - 0x95, 0x5b, 0x1f, 0xe7, 0x73, 0x6b, 0xa1, 0x45, 0x5c, 0xe8, 0x32, 0x73, 0x69, 0x77, 0xff, 0x53, - 0x80, 0x39, 0x90, 0x57, 0x28, 0xfd, 0x7a, 0x51, 0xe9, 0xde, 0x0a, 0xa5, 0x62, 0x7f, 0x5e, 0xe5, - 0xe7, 0xb0, 0xbd, 0x00, 0xdd, 0x15, 0x7a, 0xdf, 0x2d, 0xea, 0xbd, 0xbb, 0x4a, 0xaf, 0x52, 0x32, - 0xcb, 0xeb, 0x3e, 0x87, 0xdb, 0x2b, 0x2f, 0x70, 0xc5, 0x09, 0x4f, 0x8a, 0x27, 0xd8, 0xd7, 0x17, - 0x89, 0x7c, 0x39, 0xfa, 0x71, 0xae, 0xf9, 0x2c, 0x3c, 0x03, 0x74, 0x04, 0x0f, 0x26, 0x34, 0x4a, - 0x01, 0xed, 0xf9, 0xa3, 0x51, 0x76, 0x87, 0x24, 0xf2, 0x4f, 0x47, 0x24, 0xd4, 0x0d, 0xd1, 0xdd, - 0x09, 0x8d, 0x34, 0xc4, 0xdb, 0xa3, 0x51, 0x76, 0x79, 0x52, 0xc4, 0xfe, 0x6b, 0x09, 0xea, 0x85, - 0x08, 0xa2, 0x0f, 0xe6, 0xb9, 0x53, 0xb5, 0x1a, 0xff, 0x7f, 0x45, 0xac, 0xdf, 0x2c, 0x69, 0x96, - 0xbe, 0x5c, 0xd2, 0x34, 0xdf, 0x30, 0x69, 0x3e, 0x80, 0x9a, 0x4e, 0x4b, 0x72, 0xb8, 0x52, 0x9d, - 0x48, 0x9a, 0xa9, 0xc4, 0x6c, 0xb5, 0x0f, 0x95, 0x49, 0xcc, 0xa8, 0x6c, 0xa0, 0x45, 0x26, 0x5e, - 0xc3, 0x19, 0xfd, 0x5f, 0xc2, 0xb4, 0x1d, 0xc2, 0xce, 0x12, 0x88, 0x16, 0x0d, 0x35, 0x96, 0x0c, - 0x4d, 0x9b, 0xa9, 0x52, 0xb1, 0xc1, 0xce, 0x8c, 0x37, 0x8b, 0xc6, 0xdb, 0xbf, 0x36, 0x60, 0x7b, - 0x61, 0xf6, 0x12, 0xad, 0xaf, 0x6e, 0x18, 0xf5, 0x01, 0x29, 0x29, 0x72, 0x1c, 0xa3, 0xe7, 0x91, - 0xcf, 0xa7, 0x09, 0xd1, 0x23, 0xe6, 0x9c, 0x21, 0x9a, 0xb3, 0xe0, 0xc2, 0xa7, 0xaa, 0x39, 0x33, - 0x55, 0x73, 0x26, 0x19, 0xa2, 0xa9, 0x78, 0x04, 0x0d, 0xca, 0xda, 0x34, 0x09, 0x93, 0x78, 0xa2, - 0x1b, 0x2c, 0x19, 0xe7, 0x0a, 0x5e, 0xe2, 0xdb, 0xff, 0x30, 0x72, 0xb8, 0xc5, 0xe4, 0x27, 0x53, - 0xc2, 0xf8, 0x30, 0xfe, 0x24, 0xa6, 0x57, 0x55, 0x6c, 0xdd, 0xc7, 0xe7, 0x3c, 0x17, 0x7d, 0xbc, - 0x2b, 0x9c, 0xbf, 0x72, 0xf0, 0x5d, 0x9c, 0xa8, 0xcb, 0xcb, 0x13, 0xf5, 0x43, 0xd8, 0x0c, 0x29, - 0x9b, 0x8c, 0xfc, 0x99, 0x52, 0xbd, 0xa6, 0x47, 0x27, 0xc5, 0x93, 0xea, 0xbf, 0xb7, 0x6a, 0xba, - 0x5d, 0xbf, 0x66, 0xba, 0x5d, 0x9e, 0x6c, 0xed, 0xdf, 0x1a, 0x70, 0x3f, 0x73, 0xd9, 0x09, 0x29, - 0xc7, 0x8b, 0xb3, 0xef, 0x6a, 0xcf, 0x17, 0xbd, 0x28, 0x2d, 0x7b, 0xb1, 0xd2, 0x44, 0xf3, 0x8b, - 0x9b, 0xf8, 0x7b, 0x03, 0xee, 0xe5, 0x10, 0x19, 0x05, 0x64, 0xf4, 0x3f, 0x7d, 0x37, 0xf6, 0xdf, - 0x0d, 0x78, 0x6b, 0x35, 0x8c, 0x30, 0x61, 0x93, 0x38, 0x62, 0xe4, 0x0a, 0x93, 0xbf, 0x03, 0xd5, - 0xec, 0xa8, 0xd7, 0xa4, 0xa0, 0x5c, 0x41, 0xc6, 0xf3, 0x0d, 0xe2, 0xb9, 0x89, 0x51, 0x4f, 0xf6, - 0x01, 0xa6, 0x44, 0x78, 0x46, 0x8b, 0xf3, 0xce, 0x13, 0x3f, 0xe2, 0xda, 0x23, 0x45, 0x2c, 0xb9, - 0xbb, 0xb6, 0xec, 0xee, 0x7d, 0x00, 0xd5, 0x22, 0x79, 0xd3, 0x84, 0xea, 0xf1, 0xb9, 0xaa, 0x38, - 0x27, 0x09, 0xb5, 0x31, 0xec, 0x2d, 0x7b, 0xfa, 0x82, 0xf8, 0x97, 0xe4, 0xdf, 0xc6, 0x8d, 0xfd, - 0x7d, 0x78, 0x98, 0x4b, 0x4f, 0xaa, 0x02, 0x2c, 0x76, 0x63, 0x57, 0x68, 0x2f, 0x5a, 0x5b, 0x5a, - 0xb4, 0xf6, 0x8f, 0x06, 0xd4, 0x5e, 0xfa, 0xaf, 0xa6, 0x69, 0xeb, 0xd4, 0x00, 0x93, 0xd1, 0x73, - 0xfd, 0x9f, 0x96, 0xf8, 0x14, 0x89, 0x86, 0xd3, 0x31, 0x61, 0xdc, 0x1f, 0x4f, 0xe4, 0xfe, 0x32, - 0x9e, 0x33, 0xc4, 0xa1, 0x3c, 0x9e, 0xd0, 0x40, 0x86, 0x77, 0x13, 0x2b, 0x42, 0x4e, 0xec, 0xfe, - 0x6c, 0x14, 0xfb, 0x29, 0x5e, 0x52, 0x52, 0xad, 0x84, 0x21, 0x8d, 0xce, 0x75, 0x68, 0x53, 0x52, - 0xa4, 0xcb, 0x0b, 0x9f, 0x5d, 0xc8, 0x80, 0x6e, 0x62, 0xf9, 0x8d, 0x6c, 0xd8, 0xe4, 0x17, 0x34, - 0x09, 0x8f, 0xfd, 0x44, 0xc4, 0x41, 0xcf, 0x91, 0x05, 0x9e, 0xfd, 0x73, 0xd8, 0xcf, 0x39, 0x90, - 0x86, 0x25, 0xed, 0x8b, 0x2c, 0xd8, 0xb8, 0x24, 0x89, 0x28, 0x47, 0xd2, 0xa7, 0x3a, 0x4e, 0x49, - 0x71, 0xde, 0x59, 0x12, 0x8f, 0xb5, 0x4b, 0xf2, 0x5b, 0x8c, 0x85, 0x3c, 0xd6, 0xff, 0x62, 0x95, - 0x78, 0x2c, 0xce, 0x17, 0xe3, 0x36, 0x89, 0xf8, 0x50, 0x3a, 0x29, 0xa6, 0xb3, 0x4d, 0x5c, 0xe0, - 0xd9, 0xbf, 0x33, 0x00, 0x2d, 0x1b, 0xf0, 0x9a, 0x83, 0x3f, 0x82, 0x4a, 0xd6, 0xf7, 0x29, 0x44, - 0xe7, 0x0a, 0xf3, 0xd5, 0xae, 0xe0, 0x6c, 0x17, 0x7a, 0x57, 0x68, 0x90, 0x32, 0x69, 0xf6, 0xb8, - 0xbd, 0x52, 0x03, 0xce, 0xc4, 0xec, 0x3f, 0x19, 0xf0, 0x60, 0x59, 0x77, 0x37, 0x0a, 0xc9, 0x4f, - 0xdf, 0x20, 0x56, 0x5f, 0xde, 0xe4, 0x5d, 0x58, 0x8f, 0xcf, 0xce, 0x18, 0xe1, 0x3a, 0xba, 0x9a, - 0x12, 0xb7, 0xc0, 0xe8, 0xcf, 0x88, 0xfe, 0xcb, 0x53, 0x7e, 0x2f, 0x62, 0xa4, 0x9c, 0x61, 0xc4, - 0xfe, 0x8b, 0x01, 0x7b, 0x57, 0x78, 0x81, 0x9e, 0x43, 0x45, 0x4f, 0x28, 0x69, 0xbf, 0xf3, 0xf8, - 0x75, 0x36, 0xca, 0x4d, 0x2d, 0x4d, 0xe8, 0xd6, 0x27, 0x53, 0xb0, 0x7f, 0x06, 0xf5, 0xc2, 0xd2, - 0x8a, 0x4e, 0xe2, 0xc3, 0x62, 0x27, 0xf1, 0xf6, 0xb5, 0x87, 0x65, 0x51, 0x99, 0x77, 0x16, 0x4f, - 0xeb, 0x9f, 0xd7, 0x5a, 0x8f, 0xdf, 0x4f, 0x77, 0x9e, 0xae, 0xcb, 0xaf, 0x6f, 0xfc, 0x2b, 0x00, - 0x00, 0xff, 0xff, 0x8c, 0xdd, 0xe9, 0x0c, 0xab, 0x16, 0x00, 0x00, +var file_communities_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_communities_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_communities_proto_goTypes = []interface{}{ + (CommunityMember_Roles)(0), // 0: protobuf.CommunityMember.Roles + (CommunityPermissions_Access)(0), // 1: protobuf.CommunityPermissions.Access + (CommunityTokenPermission_Type)(0), // 2: protobuf.CommunityTokenPermission.Type + (*Grant)(nil), // 3: protobuf.Grant + (*CommunityMember)(nil), // 4: protobuf.CommunityMember + (*CommunityTokenMetadata)(nil), // 5: protobuf.CommunityTokenMetadata + (*CommunityPermissions)(nil), // 6: protobuf.CommunityPermissions + (*TokenCriteria)(nil), // 7: protobuf.TokenCriteria + (*CommunityTokenPermission)(nil), // 8: protobuf.CommunityTokenPermission + (*CommunityDescription)(nil), // 9: protobuf.CommunityDescription + (*CommunityAdminSettings)(nil), // 10: protobuf.CommunityAdminSettings + (*CommunityChat)(nil), // 11: protobuf.CommunityChat + (*CommunityCategory)(nil), // 12: protobuf.CommunityCategory + (*RevealedAccount)(nil), // 13: protobuf.RevealedAccount + (*CommunityRequestToJoin)(nil), // 14: protobuf.CommunityRequestToJoin + (*CommunityEditSharedAddresses)(nil), // 15: protobuf.CommunityEditSharedAddresses + (*CommunityCancelRequestToJoin)(nil), // 16: protobuf.CommunityCancelRequestToJoin + (*CommunityRequestToJoinResponse)(nil), // 17: protobuf.CommunityRequestToJoinResponse + (*CommunityRequestToLeave)(nil), // 18: protobuf.CommunityRequestToLeave + (*CommunityMessageArchiveMagnetlink)(nil), // 19: protobuf.CommunityMessageArchiveMagnetlink + (*WakuMessage)(nil), // 20: protobuf.WakuMessage + (*WakuMessageArchiveMetadata)(nil), // 21: protobuf.WakuMessageArchiveMetadata + (*WakuMessageArchive)(nil), // 22: protobuf.WakuMessageArchive + (*WakuMessageArchiveIndexMetadata)(nil), // 23: protobuf.WakuMessageArchiveIndexMetadata + (*WakuMessageArchiveIndex)(nil), // 24: protobuf.WakuMessageArchiveIndex + nil, // 25: protobuf.CommunityTokenMetadata.ContractAddressesEntry + nil, // 26: protobuf.TokenCriteria.ContractAddressesEntry + nil, // 27: protobuf.CommunityDescription.MembersEntry + nil, // 28: protobuf.CommunityDescription.ChatsEntry + nil, // 29: protobuf.CommunityDescription.CategoriesEntry + nil, // 30: protobuf.CommunityDescription.TokenPermissionsEntry + nil, // 31: protobuf.CommunityChat.MembersEntry + nil, // 32: protobuf.WakuMessageArchiveIndex.ArchivesEntry + (CommunityTokenType)(0), // 33: protobuf.CommunityTokenType + (*ChatIdentity)(nil), // 34: protobuf.ChatIdentity +} +var file_communities_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityMember.roles:type_name -> protobuf.CommunityMember.Roles + 13, // 1: protobuf.CommunityMember.revealed_accounts:type_name -> protobuf.RevealedAccount + 25, // 2: protobuf.CommunityTokenMetadata.contract_addresses:type_name -> protobuf.CommunityTokenMetadata.ContractAddressesEntry + 33, // 3: protobuf.CommunityTokenMetadata.tokenType:type_name -> protobuf.CommunityTokenType + 1, // 4: protobuf.CommunityPermissions.access:type_name -> protobuf.CommunityPermissions.Access + 26, // 5: protobuf.TokenCriteria.contract_addresses:type_name -> protobuf.TokenCriteria.ContractAddressesEntry + 33, // 6: protobuf.TokenCriteria.type:type_name -> protobuf.CommunityTokenType + 2, // 7: protobuf.CommunityTokenPermission.type:type_name -> protobuf.CommunityTokenPermission.Type + 7, // 8: protobuf.CommunityTokenPermission.token_criteria:type_name -> protobuf.TokenCriteria + 27, // 9: protobuf.CommunityDescription.members:type_name -> protobuf.CommunityDescription.MembersEntry + 6, // 10: protobuf.CommunityDescription.permissions:type_name -> protobuf.CommunityPermissions + 34, // 11: protobuf.CommunityDescription.identity:type_name -> protobuf.ChatIdentity + 28, // 12: protobuf.CommunityDescription.chats:type_name -> protobuf.CommunityDescription.ChatsEntry + 29, // 13: protobuf.CommunityDescription.categories:type_name -> protobuf.CommunityDescription.CategoriesEntry + 10, // 14: protobuf.CommunityDescription.admin_settings:type_name -> protobuf.CommunityAdminSettings + 30, // 15: protobuf.CommunityDescription.token_permissions:type_name -> protobuf.CommunityDescription.TokenPermissionsEntry + 5, // 16: protobuf.CommunityDescription.community_tokens_metadata:type_name -> protobuf.CommunityTokenMetadata + 31, // 17: protobuf.CommunityChat.members:type_name -> protobuf.CommunityChat.MembersEntry + 6, // 18: protobuf.CommunityChat.permissions:type_name -> protobuf.CommunityPermissions + 34, // 19: protobuf.CommunityChat.identity:type_name -> protobuf.ChatIdentity + 13, // 20: protobuf.CommunityRequestToJoin.revealed_accounts:type_name -> protobuf.RevealedAccount + 13, // 21: protobuf.CommunityEditSharedAddresses.revealed_accounts:type_name -> protobuf.RevealedAccount + 9, // 22: protobuf.CommunityRequestToJoinResponse.community:type_name -> protobuf.CommunityDescription + 21, // 23: protobuf.WakuMessageArchive.metadata:type_name -> protobuf.WakuMessageArchiveMetadata + 20, // 24: protobuf.WakuMessageArchive.messages:type_name -> protobuf.WakuMessage + 21, // 25: protobuf.WakuMessageArchiveIndexMetadata.metadata:type_name -> protobuf.WakuMessageArchiveMetadata + 32, // 26: protobuf.WakuMessageArchiveIndex.archives:type_name -> protobuf.WakuMessageArchiveIndex.ArchivesEntry + 4, // 27: protobuf.CommunityDescription.MembersEntry.value:type_name -> protobuf.CommunityMember + 11, // 28: protobuf.CommunityDescription.ChatsEntry.value:type_name -> protobuf.CommunityChat + 12, // 29: protobuf.CommunityDescription.CategoriesEntry.value:type_name -> protobuf.CommunityCategory + 8, // 30: protobuf.CommunityDescription.TokenPermissionsEntry.value:type_name -> protobuf.CommunityTokenPermission + 4, // 31: protobuf.CommunityChat.MembersEntry.value:type_name -> protobuf.CommunityMember + 23, // 32: protobuf.WakuMessageArchiveIndex.ArchivesEntry.value:type_name -> protobuf.WakuMessageArchiveIndexMetadata + 33, // [33:33] is the sub-list for method output_type + 33, // [33:33] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name +} + +func init() { file_communities_proto_init() } +func file_communities_proto_init() { + if File_communities_proto != nil { + return + } + file_chat_identity_proto_init() + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_communities_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Grant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityMember); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityTokenMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPermissions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenCriteria); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityTokenPermission); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityAdminSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityChat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityCategory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevealedAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEditSharedAddresses); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityCancelRequestToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToJoinResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToLeave); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityMessageArchiveMagnetlink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveIndexMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveIndex); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_communities_proto_rawDesc, + NumEnums: 3, + NumMessages: 30, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_communities_proto_goTypes, + DependencyIndexes: file_communities_proto_depIdxs, + EnumInfos: file_communities_proto_enumTypes, + MessageInfos: file_communities_proto_msgTypes, + }.Build() + File_communities_proto = out.File + file_communities_proto_rawDesc = nil + file_communities_proto_goTypes = nil + file_communities_proto_depIdxs = nil } diff --git a/protocol/protobuf/communities.proto b/protocol/protobuf/communities.proto index 456d99120..b269af3b4 100644 --- a/protocol/protobuf/communities.proto +++ b/protocol/protobuf/communities.proto @@ -134,7 +134,7 @@ message CommunityRequestToJoin { repeated RevealedAccount revealed_accounts = 6; } -message CommunityEditRevealedAccounts { +message CommunityEditSharedAddresses { uint64 clock = 1; bytes community_id = 2; repeated RevealedAccount revealed_accounts = 3; diff --git a/protocol/protobuf/community_privileged_user_sync_message.pb.go b/protocol/protobuf/community_privileged_user_sync_message.pb.go index b678257fe..155ff2d2c 100644 --- a/protocol/protobuf/community_privileged_user_sync_message.pb.go +++ b/protocol/protobuf/community_privileged_user_sync_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_privileged_user_sync_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityPrivilegedUserSyncMessage_EventType int32 @@ -29,135 +29,248 @@ const ( CommunityPrivilegedUserSyncMessage_ADD_COMMUNITY_TOKENS CommunityPrivilegedUserSyncMessage_EventType = 3 ) -var CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN", - 2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN", - 3: "ADD_COMMUNITY_TOKENS", -} +// Enum value maps for CommunityPrivilegedUserSyncMessage_EventType. +var ( + CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN", + 2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN", + 3: "ADD_COMMUNITY_TOKENS", + } + CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1, + "CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2, + "ADD_COMMUNITY_TOKENS": 3, + } +) -var CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1, - "CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2, - "ADD_COMMUNITY_TOKENS": 3, +func (x CommunityPrivilegedUserSyncMessage_EventType) Enum() *CommunityPrivilegedUserSyncMessage_EventType { + p := new(CommunityPrivilegedUserSyncMessage_EventType) + *p = x + return p } func (x CommunityPrivilegedUserSyncMessage_EventType) String() string { - return proto.EnumName(CommunityPrivilegedUserSyncMessage_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityPrivilegedUserSyncMessage_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_community_privileged_user_sync_message_proto_enumTypes[0].Descriptor() +} + +func (CommunityPrivilegedUserSyncMessage_EventType) Type() protoreflect.EnumType { + return &file_community_privileged_user_sync_message_proto_enumTypes[0] +} + +func (x CommunityPrivilegedUserSyncMessage_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityPrivilegedUserSyncMessage_EventType.Descriptor instead. func (CommunityPrivilegedUserSyncMessage_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_158595055b4cfee2, []int{0, 0} + return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0, 0} } type CommunityPrivilegedUserSyncMessage struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"` - CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - CommunityTokens []*CommunityToken `protobuf:"bytes,5,rep,name=community_tokens,json=communityTokens,proto3" json:"community_tokens,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"` + CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CommunityTokens []*CommunityToken `protobuf:"bytes,5,rep,name=community_tokens,json=communityTokens,proto3" json:"community_tokens,omitempty"` } -func (m *CommunityPrivilegedUserSyncMessage) Reset() { *m = CommunityPrivilegedUserSyncMessage{} } -func (m *CommunityPrivilegedUserSyncMessage) String() string { return proto.CompactTextString(m) } -func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {} +func (x *CommunityPrivilegedUserSyncMessage) Reset() { + *x = CommunityPrivilegedUserSyncMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_community_privileged_user_sync_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityPrivilegedUserSyncMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {} + +func (x *CommunityPrivilegedUserSyncMessage) ProtoReflect() protoreflect.Message { + mi := &file_community_privileged_user_sync_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPrivilegedUserSyncMessage.ProtoReflect.Descriptor instead. func (*CommunityPrivilegedUserSyncMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_158595055b4cfee2, []int{0} + return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0} } -func (m *CommunityPrivilegedUserSyncMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Unmarshal(m, b) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Marshal(b, m, deterministic) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Merge(m, src) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Size() int { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Size(m) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityPrivilegedUserSyncMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityPrivilegedUserSyncMessage proto.InternalMessageInfo - -func (m *CommunityPrivilegedUserSyncMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityPrivilegedUserSyncMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType { - if m != nil { - return m.Type +func (x *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType { + if x != nil { + return x.Type } return CommunityPrivilegedUserSyncMessage_UNKNOWN } -func (m *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.RequestToJoin +func (x *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.RequestToJoin } return nil } -func (m *CommunityPrivilegedUserSyncMessage) GetCommunityTokens() []*CommunityToken { - if m != nil { - return m.CommunityTokens +func (x *CommunityPrivilegedUserSyncMessage) GetCommunityTokens() []*CommunityToken { + if x != nil { + return x.CommunityTokens } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityPrivilegedUserSyncMessage_EventType", CommunityPrivilegedUserSyncMessage_EventType_name, CommunityPrivilegedUserSyncMessage_EventType_value) - proto.RegisterType((*CommunityPrivilegedUserSyncMessage)(nil), "protobuf.CommunityPrivilegedUserSyncMessage") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry") +var File_community_privileged_user_sync_message_proto protoreflect.FileDescriptor + +var file_community_privileged_user_sync_message_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xc2, 0x04, 0x0a, 0x22, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, + 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x67, + 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, + 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, + 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x43, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x1a, 0x62, 0x0a, 0x12, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x84, 0x01, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x43, + 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, + 0x50, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, + 0x49, 0x4e, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, + 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x18, 0x0a, + 0x14, 0x41, 0x44, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x54, + 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_privileged_user_sync_message.proto", fileDescriptor_158595055b4cfee2) +var ( + file_community_privileged_user_sync_message_proto_rawDescOnce sync.Once + file_community_privileged_user_sync_message_proto_rawDescData = file_community_privileged_user_sync_message_proto_rawDesc +) + +func file_community_privileged_user_sync_message_proto_rawDescGZIP() []byte { + file_community_privileged_user_sync_message_proto_rawDescOnce.Do(func() { + file_community_privileged_user_sync_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_privileged_user_sync_message_proto_rawDescData) + }) + return file_community_privileged_user_sync_message_proto_rawDescData } -var fileDescriptor_158595055b4cfee2 = []byte{ - // 403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x49, 0x93, 0x02, 0x73, 0x36, 0x16, 0xac, 0x21, 0x45, 0x3d, 0x85, 0x72, 0x20, 0x07, - 0x14, 0xa4, 0x22, 0x4d, 0x08, 0x0e, 0x68, 0xa4, 0x3e, 0x34, 0xa3, 0xf6, 0x70, 0x1d, 0x21, 0xb8, - 0x58, 0x6b, 0x6a, 0xaa, 0xd0, 0xd6, 0x0e, 0xb1, 0x53, 0x29, 0x77, 0x3e, 0x19, 0x9f, 0x0c, 0x2d, - 0x51, 0x3a, 0x46, 0x2b, 0xa1, 0x9d, 0xfc, 0xfe, 0x79, 0xfc, 0xfc, 0x5e, 0x3d, 0xe0, 0x55, 0xa6, - 0x36, 0x9b, 0x4a, 0xe6, 0xa6, 0xe6, 0x45, 0x99, 0x6f, 0xf3, 0xb5, 0x58, 0x8a, 0x05, 0xaf, 0xb4, - 0x28, 0xb9, 0xae, 0x65, 0xc6, 0x37, 0x42, 0xeb, 0xeb, 0xa5, 0x88, 0x8a, 0x52, 0x19, 0x05, 0x1f, - 0x37, 0xcf, 0xbc, 0xfa, 0x3e, 0x78, 0xda, 0xfd, 0xcb, 0x85, 0x6e, 0x97, 0x83, 0x67, 0xb7, 0x56, - 0x46, 0xad, 0x84, 0x6c, 0xc7, 0xc3, 0xdf, 0x0e, 0x18, 0xc6, 0xdd, 0xe6, 0x6a, 0xc7, 0x48, 0xb5, - 0x28, 0x67, 0xb5, 0xcc, 0xa6, 0x2d, 0x00, 0x9e, 0x81, 0x7e, 0xb6, 0x56, 0xd9, 0xca, 0xb7, 0x02, - 0x2b, 0x74, 0x68, 0xdb, 0xc0, 0x04, 0x38, 0xa6, 0x2e, 0x84, 0xdf, 0x0b, 0xac, 0xf0, 0xc9, 0xe8, - 0x3c, 0xea, 0xf8, 0xd1, 0xff, 0x1d, 0x23, 0xb4, 0x15, 0xd2, 0xb0, 0xba, 0x10, 0xb4, 0xf1, 0x80, - 0xcf, 0xc1, 0xf1, 0xed, 0x85, 0xf9, 0xc2, 0xb7, 0x03, 0x2b, 0x3c, 0xa6, 0xee, 0x6e, 0x36, 0x59, - 0xc0, 0x25, 0x38, 0x2d, 0xc5, 0xcf, 0x4a, 0x68, 0xc3, 0x8d, 0xe2, 0x3f, 0x54, 0x2e, 0x7d, 0x27, - 0xb0, 0x43, 0x77, 0xf4, 0xe1, 0x5e, 0x64, 0xda, 0x7a, 0x30, 0x95, 0xa8, 0x5c, 0x22, 0x69, 0xca, - 0x9a, 0x9e, 0x94, 0x7f, 0xcf, 0x60, 0x0c, 0xbc, 0x7f, 0xd2, 0xd2, 0x7e, 0xbf, 0x21, 0xf9, 0x07, - 0x48, 0xec, 0x46, 0x40, 0x4f, 0xb3, 0x3b, 0xbd, 0x1e, 0xcc, 0x01, 0xdc, 0x27, 0x41, 0x0f, 0xd8, - 0x2b, 0x51, 0x37, 0x31, 0x1e, 0xd1, 0x9b, 0x12, 0x9e, 0x83, 0xfe, 0xf6, 0x7a, 0x5d, 0xb5, 0x29, - 0xba, 0xa3, 0xe0, 0x00, 0xe1, 0x8e, 0x0f, 0x6d, 0xe5, 0xef, 0x7a, 0x6f, 0xad, 0xe1, 0x2f, 0x0b, - 0x1c, 0xed, 0x82, 0x84, 0x2e, 0x78, 0x94, 0xe2, 0x4b, 0x4c, 0xbe, 0x60, 0xef, 0x01, 0x7c, 0x09, - 0x5e, 0xc4, 0x04, 0x33, 0x4a, 0x3e, 0x71, 0x4c, 0xc6, 0x88, 0x5f, 0xc4, 0x31, 0xba, 0x62, 0x9c, - 0xa2, 0xcf, 0x29, 0x9a, 0x31, 0xce, 0x08, 0x4f, 0xc8, 0x04, 0x7b, 0xd6, 0x9e, 0x90, 0xa2, 0x04, - 0xc5, 0xfb, 0xc2, 0x1e, 0xf4, 0xc1, 0xd9, 0xc5, 0x78, 0xcc, 0x63, 0x32, 0x9d, 0xa6, 0x78, 0xc2, - 0xbe, 0x72, 0x46, 0x2e, 0x11, 0x9e, 0x79, 0xf6, 0xc7, 0x93, 0x6f, 0x6e, 0xf4, 0xfa, 0x7d, 0x77, - 0xf7, 0xfc, 0x61, 0x53, 0xbd, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, 0x76, 0x02, 0x4a, 0xb3, 0xbe, - 0x02, 0x00, 0x00, +var file_community_privileged_user_sync_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_community_privileged_user_sync_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_community_privileged_user_sync_message_proto_goTypes = []interface{}{ + (CommunityPrivilegedUserSyncMessage_EventType)(0), // 0: protobuf.CommunityPrivilegedUserSyncMessage.EventType + (*CommunityPrivilegedUserSyncMessage)(nil), // 1: protobuf.CommunityPrivilegedUserSyncMessage + nil, // 2: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry + (*CommunityToken)(nil), // 3: protobuf.CommunityToken + (*CommunityRequestToJoin)(nil), // 4: protobuf.CommunityRequestToJoin +} +var file_community_privileged_user_sync_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityPrivilegedUserSyncMessage.type:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.EventType + 2, // 1: protobuf.CommunityPrivilegedUserSyncMessage.request_to_join:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry + 3, // 2: protobuf.CommunityPrivilegedUserSyncMessage.community_tokens:type_name -> protobuf.CommunityToken + 4, // 3: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_community_privileged_user_sync_message_proto_init() } +func file_community_privileged_user_sync_message_proto_init() { + if File_community_privileged_user_sync_message_proto != nil { + return + } + file_communities_proto_init() + file_community_token_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_privileged_user_sync_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPrivilegedUserSyncMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_privileged_user_sync_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_privileged_user_sync_message_proto_goTypes, + DependencyIndexes: file_community_privileged_user_sync_message_proto_depIdxs, + EnumInfos: file_community_privileged_user_sync_message_proto_enumTypes, + MessageInfos: file_community_privileged_user_sync_message_proto_msgTypes, + }.Build() + File_community_privileged_user_sync_message_proto = out.File + file_community_privileged_user_sync_message_proto_rawDesc = nil + file_community_privileged_user_sync_message_proto_goTypes = nil + file_community_privileged_user_sync_message_proto_depIdxs = nil } diff --git a/protocol/protobuf/community_token.pb.go b/protocol/protobuf/community_token.pb.go index d6280943f..69722e490 100644 --- a/protocol/protobuf/community_token.pb.go +++ b/protocol/protobuf/community_token.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_token.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityToken_DeployState int32 @@ -29,26 +29,47 @@ const ( CommunityToken_DEPLOYED CommunityToken_DeployState = 3 ) -var CommunityToken_DeployState_name = map[int32]string{ - 0: "UNKNOWN", - 1: "FAILED", - 2: "IN_PROGRESS", - 3: "DEPLOYED", -} +// Enum value maps for CommunityToken_DeployState. +var ( + CommunityToken_DeployState_name = map[int32]string{ + 0: "UNKNOWN", + 1: "FAILED", + 2: "IN_PROGRESS", + 3: "DEPLOYED", + } + CommunityToken_DeployState_value = map[string]int32{ + "UNKNOWN": 0, + "FAILED": 1, + "IN_PROGRESS": 2, + "DEPLOYED": 3, + } +) -var CommunityToken_DeployState_value = map[string]int32{ - "UNKNOWN": 0, - "FAILED": 1, - "IN_PROGRESS": 2, - "DEPLOYED": 3, +func (x CommunityToken_DeployState) Enum() *CommunityToken_DeployState { + p := new(CommunityToken_DeployState) + *p = x + return p } func (x CommunityToken_DeployState) String() string { - return proto.EnumName(CommunityToken_DeployState_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityToken_DeployState) Descriptor() protoreflect.EnumDescriptor { + return file_community_token_proto_enumTypes[0].Descriptor() +} + +func (CommunityToken_DeployState) Type() protoreflect.EnumType { + return &file_community_token_proto_enumTypes[0] +} + +func (x CommunityToken_DeployState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityToken_DeployState.Descriptor instead. func (CommunityToken_DeployState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e2582028caf1a04a, []int{0, 0} + return file_community_token_proto_rawDescGZIP(), []int{0, 0} } type CommunityToken_PrivilegesLevel int32 @@ -59,227 +80,341 @@ const ( CommunityToken_COMMUNITY_LEVEL CommunityToken_PrivilegesLevel = 2 ) -var CommunityToken_PrivilegesLevel_name = map[int32]string{ - 0: "OWNER_LEVEL", - 1: "MASTER_LEVEL", - 2: "COMMUNITY_LEVEL", -} +// Enum value maps for CommunityToken_PrivilegesLevel. +var ( + CommunityToken_PrivilegesLevel_name = map[int32]string{ + 0: "OWNER_LEVEL", + 1: "MASTER_LEVEL", + 2: "COMMUNITY_LEVEL", + } + CommunityToken_PrivilegesLevel_value = map[string]int32{ + "OWNER_LEVEL": 0, + "MASTER_LEVEL": 1, + "COMMUNITY_LEVEL": 2, + } +) -var CommunityToken_PrivilegesLevel_value = map[string]int32{ - "OWNER_LEVEL": 0, - "MASTER_LEVEL": 1, - "COMMUNITY_LEVEL": 2, +func (x CommunityToken_PrivilegesLevel) Enum() *CommunityToken_PrivilegesLevel { + p := new(CommunityToken_PrivilegesLevel) + *p = x + return p } func (x CommunityToken_PrivilegesLevel) String() string { - return proto.EnumName(CommunityToken_PrivilegesLevel_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityToken_PrivilegesLevel) Descriptor() protoreflect.EnumDescriptor { + return file_community_token_proto_enumTypes[1].Descriptor() +} + +func (CommunityToken_PrivilegesLevel) Type() protoreflect.EnumType { + return &file_community_token_proto_enumTypes[1] +} + +func (x CommunityToken_PrivilegesLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityToken_PrivilegesLevel.Descriptor instead. func (CommunityToken_PrivilegesLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e2582028caf1a04a, []int{0, 1} + return file_community_token_proto_rawDescGZIP(), []int{0, 1} } type CommunityToken struct { - TokenType CommunityTokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"token_type,omitempty"` - CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` - Supply string `protobuf:"bytes,7,opt,name=supply,proto3" json:"supply,omitempty"` - InfiniteSupply bool `protobuf:"varint,8,opt,name=infinite_supply,json=infiniteSupply,proto3" json:"infinite_supply,omitempty"` - Transferable bool `protobuf:"varint,9,opt,name=transferable,proto3" json:"transferable,omitempty"` - RemoteSelfDestruct bool `protobuf:"varint,10,opt,name=remote_self_destruct,json=remoteSelfDestruct,proto3" json:"remote_self_destruct,omitempty"` - ChainId int32 `protobuf:"varint,11,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - DeployState CommunityToken_DeployState `protobuf:"varint,12,opt,name=deploy_state,json=deployState,proto3,enum=protobuf.CommunityToken_DeployState" json:"deploy_state,omitempty"` - Base64Image string `protobuf:"bytes,13,opt,name=base64_image,json=base64Image,proto3" json:"base64_image,omitempty"` - Decimals int32 `protobuf:"varint,14,opt,name=decimals,proto3" json:"decimals,omitempty"` - Deployer string `protobuf:"bytes,15,opt,name=deployer,proto3" json:"deployer,omitempty"` - PrivilegesLevel CommunityToken_PrivilegesLevel `protobuf:"varint,16,opt,name=privileges_level,json=privilegesLevel,proto3,enum=protobuf.CommunityToken_PrivilegesLevel" json:"privileges_level,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TokenType CommunityTokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"token_type,omitempty"` + CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Supply string `protobuf:"bytes,7,opt,name=supply,proto3" json:"supply,omitempty"` + InfiniteSupply bool `protobuf:"varint,8,opt,name=infinite_supply,json=infiniteSupply,proto3" json:"infinite_supply,omitempty"` + Transferable bool `protobuf:"varint,9,opt,name=transferable,proto3" json:"transferable,omitempty"` + RemoteSelfDestruct bool `protobuf:"varint,10,opt,name=remote_self_destruct,json=remoteSelfDestruct,proto3" json:"remote_self_destruct,omitempty"` + ChainId int32 `protobuf:"varint,11,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + DeployState CommunityToken_DeployState `protobuf:"varint,12,opt,name=deploy_state,json=deployState,proto3,enum=protobuf.CommunityToken_DeployState" json:"deploy_state,omitempty"` + Base64Image string `protobuf:"bytes,13,opt,name=base64_image,json=base64Image,proto3" json:"base64_image,omitempty"` + Decimals int32 `protobuf:"varint,14,opt,name=decimals,proto3" json:"decimals,omitempty"` + Deployer string `protobuf:"bytes,15,opt,name=deployer,proto3" json:"deployer,omitempty"` + PrivilegesLevel CommunityToken_PrivilegesLevel `protobuf:"varint,16,opt,name=privileges_level,json=privilegesLevel,proto3,enum=protobuf.CommunityToken_PrivilegesLevel" json:"privileges_level,omitempty"` } -func (m *CommunityToken) Reset() { *m = CommunityToken{} } -func (m *CommunityToken) String() string { return proto.CompactTextString(m) } -func (*CommunityToken) ProtoMessage() {} +func (x *CommunityToken) Reset() { + *x = CommunityToken{} + if protoimpl.UnsafeEnabled { + mi := &file_community_token_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityToken) ProtoMessage() {} + +func (x *CommunityToken) ProtoReflect() protoreflect.Message { + mi := &file_community_token_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityToken.ProtoReflect.Descriptor instead. func (*CommunityToken) Descriptor() ([]byte, []int) { - return fileDescriptor_e2582028caf1a04a, []int{0} + return file_community_token_proto_rawDescGZIP(), []int{0} } -func (m *CommunityToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityToken.Unmarshal(m, b) -} -func (m *CommunityToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityToken.Marshal(b, m, deterministic) -} -func (m *CommunityToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityToken.Merge(m, src) -} -func (m *CommunityToken) XXX_Size() int { - return xxx_messageInfo_CommunityToken.Size(m) -} -func (m *CommunityToken) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityToken.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityToken proto.InternalMessageInfo - -func (m *CommunityToken) GetTokenType() CommunityTokenType { - if m != nil { - return m.TokenType +func (x *CommunityToken) GetTokenType() CommunityTokenType { + if x != nil { + return x.TokenType } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (m *CommunityToken) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *CommunityToken) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *CommunityToken) GetAddress() string { - if m != nil { - return m.Address +func (x *CommunityToken) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *CommunityToken) GetName() string { - if m != nil { - return m.Name +func (x *CommunityToken) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CommunityToken) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *CommunityToken) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *CommunityToken) GetDescription() string { - if m != nil { - return m.Description +func (x *CommunityToken) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *CommunityToken) GetSupply() string { - if m != nil { - return m.Supply +func (x *CommunityToken) GetSupply() string { + if x != nil { + return x.Supply } return "" } -func (m *CommunityToken) GetInfiniteSupply() bool { - if m != nil { - return m.InfiniteSupply +func (x *CommunityToken) GetInfiniteSupply() bool { + if x != nil { + return x.InfiniteSupply } return false } -func (m *CommunityToken) GetTransferable() bool { - if m != nil { - return m.Transferable +func (x *CommunityToken) GetTransferable() bool { + if x != nil { + return x.Transferable } return false } -func (m *CommunityToken) GetRemoteSelfDestruct() bool { - if m != nil { - return m.RemoteSelfDestruct +func (x *CommunityToken) GetRemoteSelfDestruct() bool { + if x != nil { + return x.RemoteSelfDestruct } return false } -func (m *CommunityToken) GetChainId() int32 { - if m != nil { - return m.ChainId +func (x *CommunityToken) GetChainId() int32 { + if x != nil { + return x.ChainId } return 0 } -func (m *CommunityToken) GetDeployState() CommunityToken_DeployState { - if m != nil { - return m.DeployState +func (x *CommunityToken) GetDeployState() CommunityToken_DeployState { + if x != nil { + return x.DeployState } return CommunityToken_UNKNOWN } -func (m *CommunityToken) GetBase64Image() string { - if m != nil { - return m.Base64Image +func (x *CommunityToken) GetBase64Image() string { + if x != nil { + return x.Base64Image } return "" } -func (m *CommunityToken) GetDecimals() int32 { - if m != nil { - return m.Decimals +func (x *CommunityToken) GetDecimals() int32 { + if x != nil { + return x.Decimals } return 0 } -func (m *CommunityToken) GetDeployer() string { - if m != nil { - return m.Deployer +func (x *CommunityToken) GetDeployer() string { + if x != nil { + return x.Deployer } return "" } -func (m *CommunityToken) GetPrivilegesLevel() CommunityToken_PrivilegesLevel { - if m != nil { - return m.PrivilegesLevel +func (x *CommunityToken) GetPrivilegesLevel() CommunityToken_PrivilegesLevel { + if x != nil { + return x.PrivilegesLevel } return CommunityToken_OWNER_LEVEL } -func init() { - proto.RegisterEnum("protobuf.CommunityToken_DeployState", CommunityToken_DeployState_name, CommunityToken_DeployState_value) - proto.RegisterEnum("protobuf.CommunityToken_PrivilegesLevel", CommunityToken_PrivilegesLevel_name, CommunityToken_PrivilegesLevel_value) - proto.RegisterType((*CommunityToken)(nil), "protobuf.CommunityToken") +var File_community_token_proto protoreflect.FileDescriptor + +var file_community_token_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, + 0x06, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x3b, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x70, + 0x70, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x70, 0x70, 0x6c, + 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x75, + 0x70, 0x70, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x30, + 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x65, 0x6c, 0x66, 0x44, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0c, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, + 0x36, 0x34, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x12, + 0x53, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, + 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x22, 0x49, 0x0a, 0x0f, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0f, + 0x0a, 0x0b, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, + 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x10, 0x02, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_token.proto", fileDescriptor_e2582028caf1a04a) +var ( + file_community_token_proto_rawDescOnce sync.Once + file_community_token_proto_rawDescData = file_community_token_proto_rawDesc +) + +func file_community_token_proto_rawDescGZIP() []byte { + file_community_token_proto_rawDescOnce.Do(func() { + file_community_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_token_proto_rawDescData) + }) + return file_community_token_proto_rawDescData } -var fileDescriptor_e2582028caf1a04a = []byte{ - // 509 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x4f, 0x6f, 0x9b, 0x40, - 0x10, 0xc5, 0x83, 0x93, 0xd8, 0x78, 0x20, 0x06, 0x4d, 0xff, 0x68, 0x1b, 0xf5, 0xe0, 0x5a, 0x95, - 0xea, 0x93, 0x5b, 0xb5, 0x55, 0x2f, 0x39, 0xa5, 0x31, 0x8d, 0x50, 0x6d, 0x6c, 0x81, 0xd3, 0x28, - 0xbd, 0x20, 0x6c, 0xc6, 0xe9, 0xaa, 0xfc, 0x13, 0xac, 0x23, 0xf1, 0x41, 0xfa, 0x7d, 0x2b, 0x16, - 0x43, 0xe3, 0x4a, 0x39, 0xb1, 0xef, 0x37, 0xef, 0xed, 0xce, 0x0c, 0xf0, 0x62, 0x93, 0xc6, 0xf1, - 0x2e, 0xe1, 0xa2, 0xf4, 0x45, 0xfa, 0x9b, 0x92, 0x49, 0x96, 0xa7, 0x22, 0x45, 0x55, 0x7e, 0xd6, - 0xbb, 0xed, 0xb9, 0x46, 0xc9, 0x2e, 0x2e, 0x6a, 0x3c, 0xfa, 0xd3, 0x85, 0xc1, 0x55, 0x13, 0x58, - 0x55, 0x7e, 0xbc, 0x00, 0x90, 0x41, 0x5f, 0x94, 0x19, 0x31, 0x65, 0xa8, 0x8c, 0x07, 0x1f, 0x5f, - 0x4f, 0x9a, 0xf8, 0xe4, 0xd0, 0xbd, 0x2a, 0x33, 0x72, 0xfb, 0xa2, 0x39, 0xe2, 0x1b, 0xd0, 0xff, - 0xbd, 0xcf, 0x43, 0xd6, 0x19, 0x2a, 0xe3, 0xbe, 0xab, 0xb5, 0xcc, 0x0e, 0x91, 0x41, 0x2f, 0x08, - 0xc3, 0x9c, 0x8a, 0x82, 0x1d, 0xcb, 0x6a, 0x23, 0x11, 0xe1, 0x24, 0x09, 0x62, 0x62, 0x27, 0x12, - 0xcb, 0x33, 0xbe, 0x84, 0x6e, 0x51, 0xc6, 0xeb, 0x34, 0x62, 0xa7, 0x92, 0xee, 0x15, 0x0e, 0x41, - 0x0b, 0xa9, 0xd8, 0xe4, 0x3c, 0x13, 0x3c, 0x4d, 0x58, 0xb7, 0x7e, 0xe7, 0x11, 0x92, 0xc9, 0x5d, - 0x96, 0x45, 0x25, 0xeb, 0xed, 0x93, 0x52, 0xe1, 0x3b, 0x30, 0x78, 0xb2, 0xe5, 0x09, 0x17, 0xe4, - 0xef, 0x0d, 0xea, 0x50, 0x19, 0xab, 0xee, 0xa0, 0xc1, 0x5e, 0x6d, 0x1c, 0x81, 0x2e, 0xf2, 0x20, - 0x29, 0xb6, 0x94, 0x07, 0xeb, 0x88, 0x58, 0x5f, 0xba, 0x0e, 0x18, 0x7e, 0x80, 0xe7, 0x39, 0xc5, - 0x69, 0x75, 0x15, 0x45, 0x5b, 0x3f, 0xa4, 0x42, 0xe4, 0xbb, 0x8d, 0x60, 0x20, 0xbd, 0x58, 0xd7, - 0x3c, 0x8a, 0xb6, 0xd3, 0x7d, 0x05, 0x5f, 0x81, 0xba, 0xf9, 0x15, 0xf0, 0xa4, 0xda, 0x8e, 0x36, - 0x54, 0xc6, 0xa7, 0x6e, 0x4f, 0x6a, 0x3b, 0xc4, 0x6b, 0xd0, 0x43, 0xca, 0xa2, 0xb4, 0xf4, 0x0b, - 0x11, 0x08, 0x62, 0xba, 0xdc, 0xfd, 0xdb, 0xa7, 0x76, 0x3f, 0x99, 0x4a, 0xb3, 0x57, 0x79, 0xab, - 0xd1, 0x5b, 0x51, 0xfd, 0x85, 0x75, 0x50, 0xd0, 0x97, 0xcf, 0x3e, 0x8f, 0x83, 0x7b, 0x62, 0x67, - 0xf5, 0x76, 0x6a, 0x66, 0x57, 0x08, 0xcf, 0x41, 0x0d, 0x69, 0xc3, 0xe3, 0x20, 0x2a, 0xd8, 0x40, - 0xb6, 0xd1, 0xea, 0xba, 0x56, 0xdd, 0x46, 0x39, 0x33, 0x64, 0xb4, 0xd5, 0xe8, 0x81, 0x99, 0xe5, - 0xfc, 0x81, 0x47, 0x74, 0x4f, 0x85, 0x1f, 0xd1, 0x03, 0x45, 0xcc, 0x94, 0x7d, 0x8e, 0x9f, 0xec, - 0x73, 0xd9, 0x06, 0x66, 0x95, 0xdf, 0x35, 0xb2, 0x43, 0x30, 0xb2, 0x40, 0x7b, 0x34, 0x0b, 0x6a, - 0xd0, 0xbb, 0x71, 0xbe, 0x3b, 0x8b, 0x5b, 0xc7, 0x3c, 0x42, 0x80, 0xee, 0xb7, 0x4b, 0x7b, 0x66, - 0x4d, 0x4d, 0x05, 0x0d, 0xd0, 0x6c, 0xc7, 0x5f, 0xba, 0x8b, 0x6b, 0xd7, 0xf2, 0x3c, 0xb3, 0x83, - 0x3a, 0xa8, 0x53, 0x6b, 0x39, 0x5b, 0xdc, 0x59, 0x53, 0xf3, 0x78, 0x64, 0x83, 0xf1, 0xdf, 0x53, - 0x55, 0x62, 0x71, 0xeb, 0x58, 0xae, 0x3f, 0xb3, 0x7e, 0x58, 0x33, 0xf3, 0x08, 0x4d, 0xd0, 0xe7, - 0x97, 0xde, 0xaa, 0x25, 0x0a, 0x3e, 0x03, 0xe3, 0x6a, 0x31, 0x9f, 0xdf, 0x38, 0xf6, 0xea, 0x6e, - 0x0f, 0x3b, 0x5f, 0xcf, 0x7e, 0x6a, 0x93, 0xf7, 0x17, 0xcd, 0x40, 0xeb, 0xae, 0x3c, 0x7d, 0xfa, - 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x8d, 0x9f, 0x59, 0x5d, 0x03, 0x00, 0x00, +var file_community_token_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_community_token_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_community_token_proto_goTypes = []interface{}{ + (CommunityToken_DeployState)(0), // 0: protobuf.CommunityToken.DeployState + (CommunityToken_PrivilegesLevel)(0), // 1: protobuf.CommunityToken.PrivilegesLevel + (*CommunityToken)(nil), // 2: protobuf.CommunityToken + (CommunityTokenType)(0), // 3: protobuf.CommunityTokenType +} +var file_community_token_proto_depIdxs = []int32{ + 3, // 0: protobuf.CommunityToken.token_type:type_name -> protobuf.CommunityTokenType + 0, // 1: protobuf.CommunityToken.deploy_state:type_name -> protobuf.CommunityToken.DeployState + 1, // 2: protobuf.CommunityToken.privileges_level:type_name -> protobuf.CommunityToken.PrivilegesLevel + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_community_token_proto_init() } +func file_community_token_proto_init() { + if File_community_token_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_token_proto_rawDesc, + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_token_proto_goTypes, + DependencyIndexes: file_community_token_proto_depIdxs, + EnumInfos: file_community_token_proto_enumTypes, + MessageInfos: file_community_token_proto_msgTypes, + }.Build() + File_community_token_proto = out.File + file_community_token_proto_rawDesc = nil + file_community_token_proto_goTypes = nil + file_community_token_proto_depIdxs = nil } diff --git a/protocol/protobuf/community_update.pb.go b/protocol/protobuf/community_update.pb.go index a53e842b9..385e3e964 100644 --- a/protocol/protobuf/community_update.pb.go +++ b/protocol/protobuf/community_update.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_update.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityEvent_EventType int32 @@ -43,57 +43,82 @@ const ( CommunityEvent_COMMUNITY_TOKEN_ADD CommunityEvent_EventType = 17 ) -var CommunityEvent_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "COMMUNITY_EDIT", - 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", - 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", - 4: "COMMUNITY_CATEGORY_CREATE", - 5: "COMMUNITY_CATEGORY_DELETE", - 6: "COMMUNITY_CATEGORY_EDIT", - 7: "COMMUNITY_CHANNEL_CREATE", - 8: "COMMUNITY_CHANNEL_DELETE", - 9: "COMMUNITY_CHANNEL_EDIT", - 10: "COMMUNITY_CATEGORY_REORDER", - 11: "COMMUNITY_CHANNEL_REORDER", - 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", - 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", - 14: "COMMUNITY_MEMBER_KICK", - 15: "COMMUNITY_MEMBER_BAN", - 16: "COMMUNITY_MEMBER_UNBAN", - 17: "COMMUNITY_TOKEN_ADD", -} +// Enum value maps for CommunityEvent_EventType. +var ( + CommunityEvent_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "COMMUNITY_EDIT", + 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", + 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", + 4: "COMMUNITY_CATEGORY_CREATE", + 5: "COMMUNITY_CATEGORY_DELETE", + 6: "COMMUNITY_CATEGORY_EDIT", + 7: "COMMUNITY_CHANNEL_CREATE", + 8: "COMMUNITY_CHANNEL_DELETE", + 9: "COMMUNITY_CHANNEL_EDIT", + 10: "COMMUNITY_CATEGORY_REORDER", + 11: "COMMUNITY_CHANNEL_REORDER", + 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", + 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", + 14: "COMMUNITY_MEMBER_KICK", + 15: "COMMUNITY_MEMBER_BAN", + 16: "COMMUNITY_MEMBER_UNBAN", + 17: "COMMUNITY_TOKEN_ADD", + } + CommunityEvent_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "COMMUNITY_EDIT": 1, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, + "COMMUNITY_CATEGORY_CREATE": 4, + "COMMUNITY_CATEGORY_DELETE": 5, + "COMMUNITY_CATEGORY_EDIT": 6, + "COMMUNITY_CHANNEL_CREATE": 7, + "COMMUNITY_CHANNEL_DELETE": 8, + "COMMUNITY_CHANNEL_EDIT": 9, + "COMMUNITY_CATEGORY_REORDER": 10, + "COMMUNITY_CHANNEL_REORDER": 11, + "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, + "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, + "COMMUNITY_MEMBER_KICK": 14, + "COMMUNITY_MEMBER_BAN": 15, + "COMMUNITY_MEMBER_UNBAN": 16, + "COMMUNITY_TOKEN_ADD": 17, + } +) -var CommunityEvent_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "COMMUNITY_EDIT": 1, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, - "COMMUNITY_CATEGORY_CREATE": 4, - "COMMUNITY_CATEGORY_DELETE": 5, - "COMMUNITY_CATEGORY_EDIT": 6, - "COMMUNITY_CHANNEL_CREATE": 7, - "COMMUNITY_CHANNEL_DELETE": 8, - "COMMUNITY_CHANNEL_EDIT": 9, - "COMMUNITY_CATEGORY_REORDER": 10, - "COMMUNITY_CHANNEL_REORDER": 11, - "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, - "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, - "COMMUNITY_MEMBER_KICK": 14, - "COMMUNITY_MEMBER_BAN": 15, - "COMMUNITY_MEMBER_UNBAN": 16, - "COMMUNITY_TOKEN_ADD": 17, +func (x CommunityEvent_EventType) Enum() *CommunityEvent_EventType { + p := new(CommunityEvent_EventType) + *p = x + return p } func (x CommunityEvent_EventType) String() string { - return proto.EnumName(CommunityEvent_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityEvent_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_community_update_proto_enumTypes[0].Descriptor() +} + +func (CommunityEvent_EventType) Type() protoreflect.EnumType { + return &file_community_update_proto_enumTypes[0] +} + +func (x CommunityEvent_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityEvent_EventType.Descriptor instead. func (CommunityEvent_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{0, 0} + return file_community_update_proto_rawDescGZIP(), []int{0, 0} } type CommunityEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + CommunityEventClock uint64 `protobuf:"varint,1,opt,name=community_event_clock,json=communityEventClock,proto3" json:"community_event_clock,omitempty"` Type CommunityEvent_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityEvent_EventType" json:"type,omitempty"` CommunityConfig *CommunityConfig `protobuf:"bytes,3,opt,name=community_config,json=communityConfig,proto3" json:"community_config,omitempty"` @@ -105,363 +130,399 @@ type CommunityEvent struct { RejectedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,9,rep,name=rejectedRequestsToJoin,proto3" json:"rejectedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` AcceptedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,10,rep,name=acceptedRequestsToJoin,proto3" json:"acceptedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` TokenMetadata *CommunityTokenMetadata `protobuf:"bytes,11,opt,name=token_metadata,json=tokenMetadata,proto3" json:"token_metadata,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *CommunityEvent) Reset() { *m = CommunityEvent{} } -func (m *CommunityEvent) String() string { return proto.CompactTextString(m) } -func (*CommunityEvent) ProtoMessage() {} +func (x *CommunityEvent) Reset() { + *x = CommunityEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEvent) ProtoMessage() {} + +func (x *CommunityEvent) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEvent.ProtoReflect.Descriptor instead. func (*CommunityEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{0} + return file_community_update_proto_rawDescGZIP(), []int{0} } -func (m *CommunityEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEvent.Unmarshal(m, b) -} -func (m *CommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEvent.Marshal(b, m, deterministic) -} -func (m *CommunityEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEvent.Merge(m, src) -} -func (m *CommunityEvent) XXX_Size() int { - return xxx_messageInfo_CommunityEvent.Size(m) -} -func (m *CommunityEvent) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEvent proto.InternalMessageInfo - -func (m *CommunityEvent) GetCommunityEventClock() uint64 { - if m != nil { - return m.CommunityEventClock +func (x *CommunityEvent) GetCommunityEventClock() uint64 { + if x != nil { + return x.CommunityEventClock } return 0 } -func (m *CommunityEvent) GetType() CommunityEvent_EventType { - if m != nil { - return m.Type +func (x *CommunityEvent) GetType() CommunityEvent_EventType { + if x != nil { + return x.Type } return CommunityEvent_UNKNOWN } -func (m *CommunityEvent) GetCommunityConfig() *CommunityConfig { - if m != nil { - return m.CommunityConfig +func (x *CommunityEvent) GetCommunityConfig() *CommunityConfig { + if x != nil { + return x.CommunityConfig } return nil } -func (m *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { - if m != nil { - return m.TokenPermission +func (x *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { + if x != nil { + return x.TokenPermission } return nil } -func (m *CommunityEvent) GetCategoryData() *CategoryData { - if m != nil { - return m.CategoryData +func (x *CommunityEvent) GetCategoryData() *CategoryData { + if x != nil { + return x.CategoryData } return nil } -func (m *CommunityEvent) GetChannelData() *ChannelData { - if m != nil { - return m.ChannelData +func (x *CommunityEvent) GetChannelData() *ChannelData { + if x != nil { + return x.ChannelData } return nil } -func (m *CommunityEvent) GetMemberToAction() string { - if m != nil { - return m.MemberToAction +func (x *CommunityEvent) GetMemberToAction() string { + if x != nil { + return x.MemberToAction } return "" } -func (m *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { - if m != nil { - return m.MembersAdded +func (x *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { + if x != nil { + return x.MembersAdded } return nil } -func (m *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.RejectedRequestsToJoin +func (x *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.RejectedRequestsToJoin } return nil } -func (m *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.AcceptedRequestsToJoin +func (x *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.AcceptedRequestsToJoin } return nil } -func (m *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { - if m != nil { - return m.TokenMetadata +func (x *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { + if x != nil { + return x.TokenMetadata } return nil } type CommunityConfig struct { - Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` - IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` - OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` + IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` + OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` } -func (m *CommunityConfig) Reset() { *m = CommunityConfig{} } -func (m *CommunityConfig) String() string { return proto.CompactTextString(m) } -func (*CommunityConfig) ProtoMessage() {} +func (x *CommunityConfig) Reset() { + *x = CommunityConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityConfig) ProtoMessage() {} + +func (x *CommunityConfig) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityConfig.ProtoReflect.Descriptor instead. func (*CommunityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{1} + return file_community_update_proto_rawDescGZIP(), []int{1} } -func (m *CommunityConfig) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityConfig.Unmarshal(m, b) -} -func (m *CommunityConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityConfig.Marshal(b, m, deterministic) -} -func (m *CommunityConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityConfig.Merge(m, src) -} -func (m *CommunityConfig) XXX_Size() int { - return xxx_messageInfo_CommunityConfig.Size(m) -} -func (m *CommunityConfig) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityConfig.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityConfig proto.InternalMessageInfo - -func (m *CommunityConfig) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityConfig) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityConfig) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityConfig) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { - if m != nil { - return m.AdminSettings +func (x *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { + if x != nil { + return x.AdminSettings } return nil } -func (m *CommunityConfig) GetIntroMessage() string { - if m != nil { - return m.IntroMessage +func (x *CommunityConfig) GetIntroMessage() string { + if x != nil { + return x.IntroMessage } return "" } -func (m *CommunityConfig) GetOutroMessage() string { - if m != nil { - return m.OutroMessage +func (x *CommunityConfig) GetOutroMessage() string { + if x != nil { + return x.OutroMessage } return "" } -func (m *CommunityConfig) GetTags() []string { - if m != nil { - return m.Tags +func (x *CommunityConfig) GetTags() []string { + if x != nil { + return x.Tags } return nil } type CategoryData struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` - Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` } -func (m *CategoryData) Reset() { *m = CategoryData{} } -func (m *CategoryData) String() string { return proto.CompactTextString(m) } -func (*CategoryData) ProtoMessage() {} +func (x *CategoryData) Reset() { + *x = CategoryData{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryData) ProtoMessage() {} + +func (x *CategoryData) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryData.ProtoReflect.Descriptor instead. func (*CategoryData) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{2} + return file_community_update_proto_rawDescGZIP(), []int{2} } -func (m *CategoryData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CategoryData.Unmarshal(m, b) -} -func (m *CategoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CategoryData.Marshal(b, m, deterministic) -} -func (m *CategoryData) XXX_Merge(src proto.Message) { - xxx_messageInfo_CategoryData.Merge(m, src) -} -func (m *CategoryData) XXX_Size() int { - return xxx_messageInfo_CategoryData.Size(m) -} -func (m *CategoryData) XXX_DiscardUnknown() { - xxx_messageInfo_CategoryData.DiscardUnknown(m) -} - -var xxx_messageInfo_CategoryData proto.InternalMessageInfo - -func (m *CategoryData) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CategoryData) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CategoryData) GetName() string { - if m != nil { - return m.Name +func (x *CategoryData) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CategoryData) GetChannelsIds() []string { - if m != nil { - return m.ChannelsIds +func (x *CategoryData) GetChannelsIds() []string { + if x != nil { + return x.ChannelsIds } return nil } -func (m *CategoryData) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CategoryData) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } type ChannelData struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` } -func (m *ChannelData) Reset() { *m = ChannelData{} } -func (m *ChannelData) String() string { return proto.CompactTextString(m) } -func (*ChannelData) ProtoMessage() {} +func (x *ChannelData) Reset() { + *x = ChannelData{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelData) ProtoMessage() {} + +func (x *ChannelData) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead. func (*ChannelData) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{3} + return file_community_update_proto_rawDescGZIP(), []int{3} } -func (m *ChannelData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChannelData.Unmarshal(m, b) -} -func (m *ChannelData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChannelData.Marshal(b, m, deterministic) -} -func (m *ChannelData) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChannelData.Merge(m, src) -} -func (m *ChannelData) XXX_Size() int { - return xxx_messageInfo_ChannelData.Size(m) -} -func (m *ChannelData) XXX_DiscardUnknown() { - xxx_messageInfo_ChannelData.DiscardUnknown(m) -} - -var xxx_messageInfo_ChannelData proto.InternalMessageInfo - -func (m *ChannelData) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *ChannelData) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *ChannelData) GetChannelId() string { - if m != nil { - return m.ChannelId +func (x *ChannelData) GetChannelId() string { + if x != nil { + return x.ChannelId } return "" } -func (m *ChannelData) GetPosition() int32 { - if m != nil { - return m.Position +func (x *ChannelData) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } -func (m *ChannelData) GetChannel() *CommunityChat { - if m != nil { - return m.Channel +func (x *ChannelData) GetChannel() *CommunityChat { + if x != nil { + return x.Channel } return nil } type SignedCommunityEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // Marshaled CommunityEvent - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *SignedCommunityEvent) Reset() { *m = SignedCommunityEvent{} } -func (m *SignedCommunityEvent) String() string { return proto.CompactTextString(m) } -func (*SignedCommunityEvent) ProtoMessage() {} +func (x *SignedCommunityEvent) Reset() { + *x = SignedCommunityEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedCommunityEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedCommunityEvent) ProtoMessage() {} + +func (x *SignedCommunityEvent) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedCommunityEvent.ProtoReflect.Descriptor instead. func (*SignedCommunityEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{4} + return file_community_update_proto_rawDescGZIP(), []int{4} } -func (m *SignedCommunityEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignedCommunityEvent.Unmarshal(m, b) -} -func (m *SignedCommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignedCommunityEvent.Marshal(b, m, deterministic) -} -func (m *SignedCommunityEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignedCommunityEvent.Merge(m, src) -} -func (m *SignedCommunityEvent) XXX_Size() int { - return xxx_messageInfo_SignedCommunityEvent.Size(m) -} -func (m *SignedCommunityEvent) XXX_DiscardUnknown() { - xxx_messageInfo_SignedCommunityEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_SignedCommunityEvent proto.InternalMessageInfo - -func (m *SignedCommunityEvent) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *SignedCommunityEvent) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *SignedCommunityEvent) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *SignedCommunityEvent) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } @@ -469,199 +530,480 @@ func (m *SignedCommunityEvent) GetPayload() []byte { // CommunityEventsMessage is a message used to propagate information // about community changes. type CommunityEventsMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` // Events base CommunityDescription with owner signature on top of which events were generated EventsBaseCommunityDescription []byte `protobuf:"bytes,2,opt,name=events_base_community_description,json=eventsBaseCommunityDescription,proto3" json:"events_base_community_description,omitempty"` // A list of admins events for the channel in bytes // Deprecated: use signed_events instead. - Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Marked as deprecated in community_update.proto. + Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // A list of signed community events - SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` } -func (m *CommunityEventsMessage) Reset() { *m = CommunityEventsMessage{} } -func (m *CommunityEventsMessage) String() string { return proto.CompactTextString(m) } -func (*CommunityEventsMessage) ProtoMessage() {} +func (x *CommunityEventsMessage) Reset() { + *x = CommunityEventsMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEventsMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEventsMessage) ProtoMessage() {} + +func (x *CommunityEventsMessage) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEventsMessage.ProtoReflect.Descriptor instead. func (*CommunityEventsMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{5} + return file_community_update_proto_rawDescGZIP(), []int{5} } -func (m *CommunityEventsMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEventsMessage.Unmarshal(m, b) -} -func (m *CommunityEventsMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEventsMessage.Marshal(b, m, deterministic) -} -func (m *CommunityEventsMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEventsMessage.Merge(m, src) -} -func (m *CommunityEventsMessage) XXX_Size() int { - return xxx_messageInfo_CommunityEventsMessage.Size(m) -} -func (m *CommunityEventsMessage) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEventsMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEventsMessage proto.InternalMessageInfo - -func (m *CommunityEventsMessage) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityEventsMessage) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { - if m != nil { - return m.EventsBaseCommunityDescription +func (x *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { + if x != nil { + return x.EventsBaseCommunityDescription } return nil } -// Deprecated: Do not use. -func (m *CommunityEventsMessage) GetEvents() [][]byte { - if m != nil { - return m.Events +// Deprecated: Marked as deprecated in community_update.proto. +func (x *CommunityEventsMessage) GetEvents() [][]byte { + if x != nil { + return x.Events } return nil } -func (m *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { - if m != nil { - return m.SignedEvents +func (x *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { + if x != nil { + return x.SignedEvents } return nil } type CommunityEventsMessageRejected struct { - Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } -func (m *CommunityEventsMessageRejected) Reset() { *m = CommunityEventsMessageRejected{} } -func (m *CommunityEventsMessageRejected) String() string { return proto.CompactTextString(m) } -func (*CommunityEventsMessageRejected) ProtoMessage() {} +func (x *CommunityEventsMessageRejected) Reset() { + *x = CommunityEventsMessageRejected{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEventsMessageRejected) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEventsMessageRejected) ProtoMessage() {} + +func (x *CommunityEventsMessageRejected) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEventsMessageRejected.ProtoReflect.Descriptor instead. func (*CommunityEventsMessageRejected) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{6} + return file_community_update_proto_rawDescGZIP(), []int{6} } -func (m *CommunityEventsMessageRejected) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEventsMessageRejected.Unmarshal(m, b) -} -func (m *CommunityEventsMessageRejected) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEventsMessageRejected.Marshal(b, m, deterministic) -} -func (m *CommunityEventsMessageRejected) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEventsMessageRejected.Merge(m, src) -} -func (m *CommunityEventsMessageRejected) XXX_Size() int { - return xxx_messageInfo_CommunityEventsMessageRejected.Size(m) -} -func (m *CommunityEventsMessageRejected) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEventsMessageRejected.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEventsMessageRejected proto.InternalMessageInfo - -func (m *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { - if m != nil { - return m.Msg +func (x *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { + if x != nil { + return x.Msg } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityEvent_EventType", CommunityEvent_EventType_name, CommunityEvent_EventType_value) - proto.RegisterType((*CommunityEvent)(nil), "protobuf.CommunityEvent") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.AcceptedRequestsToJoinEntry") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityEvent.MembersAddedEntry") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.RejectedRequestsToJoinEntry") - proto.RegisterType((*CommunityConfig)(nil), "protobuf.CommunityConfig") - proto.RegisterType((*CategoryData)(nil), "protobuf.CategoryData") - proto.RegisterType((*ChannelData)(nil), "protobuf.ChannelData") - proto.RegisterType((*SignedCommunityEvent)(nil), "protobuf.SignedCommunityEvent") - proto.RegisterType((*CommunityEventsMessage)(nil), "protobuf.CommunityEventsMessage") - proto.RegisterType((*CommunityEventsMessageRejected)(nil), "protobuf.CommunityEventsMessageRejected") +var File_community_update_proto protoreflect.FileDescriptor + +var file_community_update_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x0d, 0x0a, 0x0e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x4d, 0x0a, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, + 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0c, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x4e, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, + 0x6c, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x6c, 0x0a, + 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x47, 0x0a, 0x0e, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5a, 0x0a, 0x11, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, + 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x6b, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, + 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, + 0x1b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x04, 0x0a, 0x09, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, + 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, + 0x4b, 0x45, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, + 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, + 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, + 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x06, + 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, + 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, + 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x52, 0x45, + 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x0c, 0x12, 0x24, 0x0a, + 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x10, 0x0d, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x10, 0x0e, 0x12, 0x18, + 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x42, 0x41, 0x4e, 0x10, 0x0f, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x42, + 0x41, 0x4e, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, + 0x59, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x11, 0x22, 0xae, 0x02, + 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, + 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x82, + 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x31, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x22, 0x4e, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x22, 0xe7, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x49, 0x0a, 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x54, 0x0a, 0x1e, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x32, + 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_update.proto", fileDescriptor_52ed23dfc73918ab) +var ( + file_community_update_proto_rawDescOnce sync.Once + file_community_update_proto_rawDescData = file_community_update_proto_rawDesc +) + +func file_community_update_proto_rawDescGZIP() []byte { + file_community_update_proto_rawDescOnce.Do(func() { + file_community_update_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_update_proto_rawDescData) + }) + return file_community_update_proto_rawDescData } -var fileDescriptor_52ed23dfc73918ab = []byte{ - // 1095 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0xdb, 0x46, - 0x14, 0xad, 0x2c, 0xf9, 0xa1, 0xab, 0x87, 0xe9, 0x71, 0x6c, 0xd3, 0x4a, 0xe2, 0x2a, 0x6a, 0x17, - 0x42, 0x51, 0x38, 0xa8, 0x5a, 0x04, 0x41, 0xb3, 0xa9, 0x4c, 0x0d, 0x1c, 0xda, 0x11, 0xe5, 0x8e, - 0x69, 0x14, 0xc9, 0x86, 0x18, 0x93, 0x13, 0x99, 0xb5, 0x45, 0xaa, 0x9a, 0x51, 0x00, 0x6d, 0xfb, - 0x05, 0xfd, 0x80, 0x7e, 0x43, 0xd1, 0xbf, 0xea, 0x6f, 0x14, 0x9c, 0x21, 0x45, 0xd2, 0xa6, 0x9c, - 0x2e, 0xba, 0x91, 0x38, 0xf7, 0x9c, 0x7b, 0xce, 0xdc, 0x79, 0xf0, 0x12, 0xf6, 0xdd, 0x70, 0x32, - 0x99, 0x07, 0xbe, 0x58, 0x38, 0xf3, 0xa9, 0x47, 0x05, 0x3b, 0x9e, 0xce, 0x42, 0x11, 0xa2, 0x2d, - 0xf9, 0x77, 0x3d, 0xff, 0xd8, 0xda, 0x75, 0x6f, 0xa8, 0x70, 0x7c, 0x8f, 0x05, 0xc2, 0x17, 0x0b, - 0x05, 0xb7, 0x76, 0x92, 0x34, 0x9f, 0x71, 0x15, 0xea, 0xfc, 0xd1, 0x80, 0xa6, 0x91, 0x88, 0xe1, - 0x4f, 0x2c, 0x10, 0xa8, 0x07, 0x7b, 0xa9, 0x3c, 0x8b, 0x42, 0x8e, 0x7b, 0x17, 0xba, 0xb7, 0x7a, - 0xa9, 0x5d, 0xea, 0x56, 0xc8, 0xae, 0x9b, 0xa3, 0x1b, 0x11, 0x84, 0x5e, 0x41, 0x45, 0x2c, 0xa6, - 0x4c, 0x5f, 0x6b, 0x97, 0xba, 0xcd, 0x5e, 0xe7, 0x38, 0x99, 0xc7, 0x71, 0x5e, 0xfb, 0x58, 0xfe, - 0xda, 0x8b, 0x29, 0x23, 0x92, 0x8f, 0x06, 0xa0, 0xa5, 0x5e, 0x6e, 0x18, 0x7c, 0xf4, 0xc7, 0x7a, - 0xb9, 0x5d, 0xea, 0xd6, 0x7a, 0x87, 0x05, 0x1a, 0x86, 0x24, 0x90, 0x6d, 0x37, 0x1f, 0x40, 0x43, - 0xd0, 0x44, 0x78, 0xcb, 0x02, 0x67, 0xca, 0x66, 0x13, 0x9f, 0x73, 0x3f, 0x0c, 0xf4, 0x8a, 0x54, - 0x29, 0x9a, 0x89, 0x1d, 0x51, 0x2f, 0x96, 0x4c, 0xb2, 0x2d, 0xf2, 0x01, 0xf4, 0x06, 0x1a, 0x2e, - 0x15, 0x6c, 0x1c, 0xce, 0x16, 0x8e, 0x47, 0x05, 0xd5, 0xd7, 0xa5, 0xd6, 0x7e, 0x46, 0x2b, 0x86, - 0x07, 0x54, 0x50, 0x52, 0x77, 0x33, 0x23, 0xf4, 0x1a, 0xea, 0xee, 0x0d, 0x0d, 0x02, 0x76, 0xa7, - 0x72, 0x37, 0x64, 0xee, 0x5e, 0x26, 0x57, 0xa1, 0x32, 0xb5, 0xe6, 0xa6, 0x03, 0xd4, 0x05, 0x6d, - 0xc2, 0x26, 0xd7, 0x6c, 0xe6, 0x88, 0xd0, 0xa1, 0xae, 0x88, 0xaa, 0xd8, 0x6c, 0x97, 0xba, 0x55, - 0xd2, 0x54, 0x71, 0x3b, 0xec, 0xcb, 0x28, 0xb2, 0xa0, 0xae, 0x22, 0xbc, 0xef, 0x79, 0xcc, 0xd3, - 0xb7, 0xda, 0xe5, 0x6e, 0xad, 0xf7, 0xcd, 0xca, 0x55, 0x1f, 0x66, 0xc8, 0x38, 0x10, 0xb3, 0x05, - 0xc9, 0xe5, 0xa3, 0x3b, 0xd8, 0x9f, 0xb1, 0x5f, 0x99, 0x2b, 0x98, 0x47, 0xd8, 0x6f, 0x73, 0xc6, - 0x05, 0xb7, 0xc3, 0xb3, 0xd0, 0x0f, 0xf4, 0xaa, 0x54, 0xfe, 0x61, 0xa5, 0x32, 0x29, 0x4c, 0x53, - 0x1e, 0x2b, 0x34, 0x23, 0x37, 0xea, 0xba, 0x6c, 0xfa, 0xd0, 0x0d, 0x3e, 0xe3, 0xd6, 0x2f, 0x4c, - 0x8b, 0xdd, 0x8a, 0x35, 0xd1, 0x29, 0x34, 0xd5, 0xd9, 0x98, 0x30, 0x41, 0xe5, 0x8e, 0xd4, 0xe4, - 0x8e, 0xb4, 0x57, 0x9d, 0x8c, 0x61, 0xcc, 0x23, 0x0d, 0x91, 0x1d, 0xb6, 0x3e, 0xc0, 0xce, 0x83, - 0x75, 0x44, 0x1a, 0x94, 0x6f, 0xd9, 0x42, 0xde, 0x8c, 0x2a, 0x89, 0x1e, 0xd1, 0x4b, 0x58, 0xff, - 0x44, 0xef, 0xe6, 0xea, 0x2a, 0x14, 0x1f, 0x63, 0x25, 0x43, 0x14, 0xef, 0xc7, 0xb5, 0xd7, 0xa5, - 0xd6, 0x2d, 0x3c, 0x7d, 0x64, 0x25, 0x0b, 0x5c, 0x5e, 0xe5, 0x5d, 0x8a, 0x8a, 0x89, 0x85, 0x94, - 0xce, 0x3d, 0xb3, 0x47, 0x16, 0xf2, 0xff, 0x35, 0xeb, 0xfc, 0x5d, 0x81, 0xea, 0xf2, 0xd2, 0xa3, - 0x1a, 0x6c, 0x5e, 0x59, 0xe7, 0xd6, 0xe8, 0x17, 0x4b, 0xfb, 0x02, 0x21, 0x68, 0x1a, 0xa3, 0xe1, - 0xf0, 0xca, 0x32, 0xed, 0xf7, 0x0e, 0x1e, 0x98, 0xb6, 0x56, 0x42, 0xdf, 0x42, 0x37, 0x8d, 0x0d, - 0xf1, 0xf0, 0x04, 0x13, 0xc7, 0x1e, 0x9d, 0x63, 0xcb, 0xb9, 0xc0, 0x64, 0x68, 0x5e, 0x5e, 0x9a, - 0x23, 0xcb, 0x31, 0xde, 0xf6, 0xad, 0x53, 0xac, 0xad, 0xfd, 0x37, 0xf6, 0x00, 0xbf, 0xc3, 0x36, - 0xd6, 0xca, 0xe8, 0x39, 0x1c, 0xa6, 0x6c, 0xa3, 0x6f, 0xe3, 0xd3, 0x11, 0x79, 0xef, 0x18, 0x04, - 0xf7, 0x6d, 0xac, 0x55, 0x56, 0xc0, 0x71, 0xf6, 0x3a, 0x7a, 0x0a, 0x07, 0x05, 0xb0, 0x9c, 0xf6, - 0x06, 0x7a, 0x06, 0x7a, 0x06, 0x7c, 0xdb, 0xb7, 0x2c, 0xfc, 0x2e, 0x51, 0xde, 0x2c, 0x46, 0x63, - 0xe1, 0x2d, 0xd4, 0x82, 0xfd, 0x87, 0xa8, 0xd4, 0xad, 0xa2, 0x23, 0x68, 0x15, 0x98, 0x12, 0x3c, - 0x22, 0x03, 0x4c, 0x34, 0xb8, 0x37, 0xe7, 0x38, 0x37, 0x81, 0x6b, 0xe8, 0x6b, 0x68, 0xa7, 0x30, - 0xc1, 0x3f, 0x5f, 0xe1, 0x4b, 0xdb, 0xb1, 0x47, 0xce, 0xd9, 0xc8, 0xb4, 0x9c, 0xbe, 0x61, 0xe0, - 0x0b, 0x5b, 0xab, 0x3f, 0xce, 0x22, 0xf8, 0x0c, 0x1b, 0xb6, 0xd6, 0x40, 0x87, 0xb0, 0xf7, 0x60, - 0xad, 0xcf, 0x4d, 0xe3, 0x5c, 0x6b, 0x22, 0x1d, 0x9e, 0x3c, 0x80, 0x4e, 0xfa, 0x96, 0xb6, 0x9d, - 0xaf, 0x2d, 0x46, 0xae, 0xac, 0x08, 0xd3, 0xd0, 0x01, 0xec, 0xa6, 0x98, 0xda, 0xb5, 0xfe, 0x60, - 0xa0, 0xed, 0x74, 0xfe, 0x5a, 0x83, 0xed, 0x7b, 0xaf, 0x7c, 0xd4, 0x83, 0xad, 0xa4, 0x97, 0xc9, - 0x93, 0x99, 0x7f, 0x1b, 0xdf, 0x50, 0x61, 0xc6, 0x28, 0x59, 0xf2, 0xd0, 0x4f, 0x50, 0x4b, 0xfb, - 0x01, 0x8f, 0x0f, 0xef, 0x51, 0xc1, 0xe1, 0x4d, 0x5f, 0xfd, 0x9c, 0x64, 0x53, 0xa2, 0x77, 0x07, - 0xf5, 0x26, 0x7e, 0xe0, 0x70, 0x26, 0x84, 0x1f, 0x8c, 0x79, 0xdc, 0x9b, 0x8a, 0x6e, 0x40, 0x3f, - 0x22, 0x5e, 0xc6, 0x3c, 0xd2, 0xa0, 0xd9, 0x21, 0xfa, 0x0a, 0x1a, 0x7e, 0x20, 0x66, 0xa1, 0x33, - 0x61, 0x9c, 0xd3, 0x31, 0x93, 0xdd, 0xa9, 0x4a, 0xea, 0x32, 0x38, 0x54, 0xb1, 0x88, 0x14, 0xce, - 0xb3, 0xa4, 0x75, 0x45, 0x92, 0xc1, 0x84, 0x84, 0xa0, 0x22, 0xe8, 0x98, 0xeb, 0x1b, 0xed, 0x72, - 0xb7, 0x4a, 0xe4, 0x73, 0xe7, 0xf7, 0x12, 0xd4, 0xb3, 0x1d, 0x09, 0x7d, 0x09, 0xb5, 0x65, 0x03, - 0xf3, 0xbd, 0xf8, 0x2a, 0x43, 0x12, 0x32, 0xbd, 0x48, 0x25, 0xa0, 0x13, 0x75, 0xa1, 0xab, 0x44, - 0x3e, 0xa3, 0x17, 0xcb, 0xc6, 0xc5, 0x1d, 0xdf, 0x8b, 0x4a, 0x8d, 0x1c, 0x92, 0x0e, 0xc5, 0x4d, - 0x8f, 0xa3, 0x16, 0x6c, 0x4d, 0x43, 0xee, 0x8b, 0xa4, 0xbf, 0xae, 0x93, 0xe5, 0xb8, 0xf3, 0x67, - 0x09, 0x6a, 0x99, 0xd6, 0xf6, 0xf9, 0x39, 0x3c, 0x07, 0x48, 0x1a, 0xa5, 0xef, 0xc5, 0x33, 0xa9, - 0xc6, 0x11, 0xd3, 0xcb, 0x79, 0x95, 0xf3, 0x5e, 0xe8, 0x3b, 0xd8, 0x8c, 0x89, 0x71, 0x9b, 0x3f, - 0x28, 0xfa, 0x58, 0xb8, 0xa1, 0x82, 0x24, 0xbc, 0x8e, 0x05, 0x4f, 0x2e, 0xfd, 0x71, 0xc0, 0xbc, - 0x7b, 0x1f, 0x3b, 0xcf, 0xa0, 0xca, 0xfd, 0x71, 0x40, 0xc5, 0x7c, 0xc6, 0xe4, 0x24, 0xeb, 0x24, - 0x0d, 0x20, 0x1d, 0x36, 0xa7, 0x74, 0x71, 0x17, 0x52, 0x35, 0xc1, 0x3a, 0x49, 0x86, 0x9d, 0x7f, - 0x4a, 0xb0, 0x9f, 0x97, 0xe2, 0xc9, 0x16, 0x45, 0x0b, 0xb9, 0xfc, 0xa6, 0x89, 0x4b, 0xaf, 0x93, - 0xda, 0x32, 0x66, 0x7a, 0xc8, 0x84, 0x17, 0xf2, 0xc3, 0x8a, 0x3b, 0xd7, 0x94, 0x33, 0x27, 0xa5, - 0x7b, 0x8c, 0xbb, 0x33, 0x7f, 0x2a, 0xab, 0x56, 0x8e, 0x47, 0x8a, 0x78, 0x42, 0x39, 0x5b, 0xfa, - 0x0d, 0x52, 0x16, 0x6a, 0xc1, 0x86, 0x62, 0xc8, 0x0d, 0xab, 0x9f, 0xac, 0xe9, 0x25, 0x12, 0x47, - 0x90, 0x01, 0x0d, 0x2e, 0x8b, 0x76, 0x62, 0x4a, 0x45, 0x36, 0xd8, 0xcc, 0x1d, 0x28, 0x5a, 0x13, - 0x52, 0x57, 0x49, 0xaa, 0xaa, 0x8e, 0x0d, 0x47, 0xc5, 0x85, 0x26, 0x1d, 0x0b, 0xf5, 0xa0, 0x3c, - 0xe1, 0xe3, 0xf8, 0x5e, 0xb6, 0x57, 0x75, 0xef, 0x65, 0x5a, 0x44, 0x3e, 0x69, 0x7c, 0xa8, 0x1d, - 0xbf, 0x7c, 0x93, 0x50, 0xaf, 0x37, 0xe4, 0xd3, 0xf7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x92, - 0x1f, 0x8f, 0xf4, 0xd9, 0x0a, 0x00, 0x00, +var file_community_update_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_community_update_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_community_update_proto_goTypes = []interface{}{ + (CommunityEvent_EventType)(0), // 0: protobuf.CommunityEvent.EventType + (*CommunityEvent)(nil), // 1: protobuf.CommunityEvent + (*CommunityConfig)(nil), // 2: protobuf.CommunityConfig + (*CategoryData)(nil), // 3: protobuf.CategoryData + (*ChannelData)(nil), // 4: protobuf.ChannelData + (*SignedCommunityEvent)(nil), // 5: protobuf.SignedCommunityEvent + (*CommunityEventsMessage)(nil), // 6: protobuf.CommunityEventsMessage + (*CommunityEventsMessageRejected)(nil), // 7: protobuf.CommunityEventsMessageRejected + nil, // 8: protobuf.CommunityEvent.MembersAddedEntry + nil, // 9: protobuf.CommunityEvent.RejectedRequestsToJoinEntry + nil, // 10: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry + (*CommunityTokenPermission)(nil), // 11: protobuf.CommunityTokenPermission + (*CommunityTokenMetadata)(nil), // 12: protobuf.CommunityTokenMetadata + (*ChatIdentity)(nil), // 13: protobuf.ChatIdentity + (*CommunityPermissions)(nil), // 14: protobuf.CommunityPermissions + (*CommunityAdminSettings)(nil), // 15: protobuf.CommunityAdminSettings + (*CommunityChat)(nil), // 16: protobuf.CommunityChat + (*CommunityMember)(nil), // 17: protobuf.CommunityMember + (*CommunityRequestToJoin)(nil), // 18: protobuf.CommunityRequestToJoin +} +var file_community_update_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityEvent.type:type_name -> protobuf.CommunityEvent.EventType + 2, // 1: protobuf.CommunityEvent.community_config:type_name -> protobuf.CommunityConfig + 11, // 2: protobuf.CommunityEvent.token_permission:type_name -> protobuf.CommunityTokenPermission + 3, // 3: protobuf.CommunityEvent.category_data:type_name -> protobuf.CategoryData + 4, // 4: protobuf.CommunityEvent.channel_data:type_name -> protobuf.ChannelData + 8, // 5: protobuf.CommunityEvent.membersAdded:type_name -> protobuf.CommunityEvent.MembersAddedEntry + 9, // 6: protobuf.CommunityEvent.rejectedRequestsToJoin:type_name -> protobuf.CommunityEvent.RejectedRequestsToJoinEntry + 10, // 7: protobuf.CommunityEvent.acceptedRequestsToJoin:type_name -> protobuf.CommunityEvent.AcceptedRequestsToJoinEntry + 12, // 8: protobuf.CommunityEvent.token_metadata:type_name -> protobuf.CommunityTokenMetadata + 13, // 9: protobuf.CommunityConfig.identity:type_name -> protobuf.ChatIdentity + 14, // 10: protobuf.CommunityConfig.permissions:type_name -> protobuf.CommunityPermissions + 15, // 11: protobuf.CommunityConfig.admin_settings:type_name -> protobuf.CommunityAdminSettings + 16, // 12: protobuf.ChannelData.channel:type_name -> protobuf.CommunityChat + 5, // 13: protobuf.CommunityEventsMessage.signed_events:type_name -> protobuf.SignedCommunityEvent + 6, // 14: protobuf.CommunityEventsMessageRejected.msg:type_name -> protobuf.CommunityEventsMessage + 17, // 15: protobuf.CommunityEvent.MembersAddedEntry.value:type_name -> protobuf.CommunityMember + 18, // 16: protobuf.CommunityEvent.RejectedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 18, // 17: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_community_update_proto_init() } +func file_community_update_proto_init() { + if File_community_update_proto != nil { + return + } + file_chat_identity_proto_init() + file_communities_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_update_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedCommunityEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEventsMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEventsMessageRejected); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_update_proto_rawDesc, + NumEnums: 1, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_update_proto_goTypes, + DependencyIndexes: file_community_update_proto_depIdxs, + EnumInfos: file_community_update_proto_enumTypes, + MessageInfos: file_community_update_proto_msgTypes, + }.Build() + File_community_update_proto = out.File + file_community_update_proto_rawDesc = nil + file_community_update_proto_goTypes = nil + file_community_update_proto_depIdxs = nil } diff --git a/protocol/protobuf/contact.pb.go b/protocol/protobuf/contact.pb.go index 8d4213ba7..3eedcc001 100644 --- a/protocol/protobuf/contact.pb.go +++ b/protocol/protobuf/contact.pb.go @@ -1,89 +1,101 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: contact.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ContactRequestPropagatedState struct { - LocalClock uint64 `protobuf:"varint,1,opt,name=local_clock,json=localClock,proto3" json:"local_clock,omitempty"` - LocalState uint64 `protobuf:"varint,2,opt,name=local_state,json=localState,proto3" json:"local_state,omitempty"` - RemoteClock uint64 `protobuf:"varint,3,opt,name=remote_clock,json=remoteClock,proto3" json:"remote_clock,omitempty"` - RemoteState uint64 `protobuf:"varint,4,opt,name=remote_state,json=remoteState,proto3" json:"remote_state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LocalClock uint64 `protobuf:"varint,1,opt,name=local_clock,json=localClock,proto3" json:"local_clock,omitempty"` + LocalState uint64 `protobuf:"varint,2,opt,name=local_state,json=localState,proto3" json:"local_state,omitempty"` + RemoteClock uint64 `protobuf:"varint,3,opt,name=remote_clock,json=remoteClock,proto3" json:"remote_clock,omitempty"` + RemoteState uint64 `protobuf:"varint,4,opt,name=remote_state,json=remoteState,proto3" json:"remote_state,omitempty"` } -func (m *ContactRequestPropagatedState) Reset() { *m = ContactRequestPropagatedState{} } -func (m *ContactRequestPropagatedState) String() string { return proto.CompactTextString(m) } -func (*ContactRequestPropagatedState) ProtoMessage() {} +func (x *ContactRequestPropagatedState) Reset() { + *x = ContactRequestPropagatedState{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactRequestPropagatedState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactRequestPropagatedState) ProtoMessage() {} + +func (x *ContactRequestPropagatedState) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactRequestPropagatedState.ProtoReflect.Descriptor instead. func (*ContactRequestPropagatedState) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{0} + return file_contact_proto_rawDescGZIP(), []int{0} } -func (m *ContactRequestPropagatedState) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactRequestPropagatedState.Unmarshal(m, b) -} -func (m *ContactRequestPropagatedState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactRequestPropagatedState.Marshal(b, m, deterministic) -} -func (m *ContactRequestPropagatedState) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactRequestPropagatedState.Merge(m, src) -} -func (m *ContactRequestPropagatedState) XXX_Size() int { - return xxx_messageInfo_ContactRequestPropagatedState.Size(m) -} -func (m *ContactRequestPropagatedState) XXX_DiscardUnknown() { - xxx_messageInfo_ContactRequestPropagatedState.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactRequestPropagatedState proto.InternalMessageInfo - -func (m *ContactRequestPropagatedState) GetLocalClock() uint64 { - if m != nil { - return m.LocalClock +func (x *ContactRequestPropagatedState) GetLocalClock() uint64 { + if x != nil { + return x.LocalClock } return 0 } -func (m *ContactRequestPropagatedState) GetLocalState() uint64 { - if m != nil { - return m.LocalState +func (x *ContactRequestPropagatedState) GetLocalState() uint64 { + if x != nil { + return x.LocalState } return 0 } -func (m *ContactRequestPropagatedState) GetRemoteClock() uint64 { - if m != nil { - return m.RemoteClock +func (x *ContactRequestPropagatedState) GetRemoteClock() uint64 { + if x != nil { + return x.RemoteClock } return 0 } -func (m *ContactRequestPropagatedState) GetRemoteState() uint64 { - if m != nil { - return m.RemoteState +func (x *ContactRequestPropagatedState) GetRemoteState() uint64 { + if x != nil { + return x.RemoteState } return 0 } type ContactUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` ProfileImage string `protobuf:"bytes,3,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` @@ -91,212 +103,346 @@ type ContactUpdate struct { ContactRequestClock uint64 `protobuf:"varint,5,opt,name=contact_request_clock,json=contactRequestClock,proto3" json:"contact_request_clock,omitempty"` ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,6,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"` PublicKey string `protobuf:"bytes,7,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ContactUpdate) Reset() { *m = ContactUpdate{} } -func (m *ContactUpdate) String() string { return proto.CompactTextString(m) } -func (*ContactUpdate) ProtoMessage() {} +func (x *ContactUpdate) Reset() { + *x = ContactUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactUpdate) ProtoMessage() {} + +func (x *ContactUpdate) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactUpdate.ProtoReflect.Descriptor instead. func (*ContactUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{1} + return file_contact_proto_rawDescGZIP(), []int{1} } -func (m *ContactUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactUpdate.Unmarshal(m, b) -} -func (m *ContactUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactUpdate.Marshal(b, m, deterministic) -} -func (m *ContactUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactUpdate.Merge(m, src) -} -func (m *ContactUpdate) XXX_Size() int { - return xxx_messageInfo_ContactUpdate.Size(m) -} -func (m *ContactUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_ContactUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactUpdate proto.InternalMessageInfo - -func (m *ContactUpdate) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ContactUpdate) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ContactUpdate) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ContactUpdate) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ContactUpdate) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *ContactUpdate) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *ContactUpdate) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *ContactUpdate) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *ContactUpdate) GetContactRequestClock() uint64 { - if m != nil { - return m.ContactRequestClock +func (x *ContactUpdate) GetContactRequestClock() uint64 { + if x != nil { + return x.ContactRequestClock } return 0 } -func (m *ContactUpdate) GetContactRequestPropagatedState() *ContactRequestPropagatedState { - if m != nil { - return m.ContactRequestPropagatedState +func (x *ContactUpdate) GetContactRequestPropagatedState() *ContactRequestPropagatedState { + if x != nil { + return x.ContactRequestPropagatedState } return nil } -func (m *ContactUpdate) GetPublicKey() string { - if m != nil { - return m.PublicKey +func (x *ContactUpdate) GetPublicKey() string { + if x != nil { + return x.PublicKey } return "" } type AcceptContactRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *AcceptContactRequest) Reset() { *m = AcceptContactRequest{} } -func (m *AcceptContactRequest) String() string { return proto.CompactTextString(m) } -func (*AcceptContactRequest) ProtoMessage() {} +func (x *AcceptContactRequest) Reset() { + *x = AcceptContactRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptContactRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptContactRequest) ProtoMessage() {} + +func (x *AcceptContactRequest) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptContactRequest.ProtoReflect.Descriptor instead. func (*AcceptContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{2} + return file_contact_proto_rawDescGZIP(), []int{2} } -func (m *AcceptContactRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptContactRequest.Unmarshal(m, b) -} -func (m *AcceptContactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptContactRequest.Marshal(b, m, deterministic) -} -func (m *AcceptContactRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptContactRequest.Merge(m, src) -} -func (m *AcceptContactRequest) XXX_Size() int { - return xxx_messageInfo_AcceptContactRequest.Size(m) -} -func (m *AcceptContactRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptContactRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptContactRequest proto.InternalMessageInfo - -func (m *AcceptContactRequest) GetId() string { - if m != nil { - return m.Id +func (x *AcceptContactRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptContactRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptContactRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type RetractContactRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *RetractContactRequest) Reset() { *m = RetractContactRequest{} } -func (m *RetractContactRequest) String() string { return proto.CompactTextString(m) } -func (*RetractContactRequest) ProtoMessage() {} +func (x *RetractContactRequest) Reset() { + *x = RetractContactRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RetractContactRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RetractContactRequest) ProtoMessage() {} + +func (x *RetractContactRequest) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RetractContactRequest.ProtoReflect.Descriptor instead. func (*RetractContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{3} + return file_contact_proto_rawDescGZIP(), []int{3} } -func (m *RetractContactRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RetractContactRequest.Unmarshal(m, b) -} -func (m *RetractContactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RetractContactRequest.Marshal(b, m, deterministic) -} -func (m *RetractContactRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RetractContactRequest.Merge(m, src) -} -func (m *RetractContactRequest) XXX_Size() int { - return xxx_messageInfo_RetractContactRequest.Size(m) -} -func (m *RetractContactRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RetractContactRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RetractContactRequest proto.InternalMessageInfo - -func (m *RetractContactRequest) GetId() string { - if m != nil { - return m.Id +func (x *RetractContactRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RetractContactRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RetractContactRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func init() { - proto.RegisterType((*ContactRequestPropagatedState)(nil), "protobuf.ContactRequestPropagatedState") - proto.RegisterType((*ContactUpdate)(nil), "protobuf.ContactUpdate") - proto.RegisterType((*AcceptContactRequest)(nil), "protobuf.AcceptContactRequest") - proto.RegisterType((*RetractContactRequest)(nil), "protobuf.RetractContactRequest") +var File_contact_proto protoreflect.FileDescriptor + +var file_contact_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xa7, 0x01, 0x0a, 0x1d, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x22, 0xcd, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, + 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, + 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x70, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x22, 0x3c, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x22, 0x3d, 0x0a, 0x15, 0x52, 0x65, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("contact.proto", fileDescriptor_a5036fff2565fb15) +var ( + file_contact_proto_rawDescOnce sync.Once + file_contact_proto_rawDescData = file_contact_proto_rawDesc +) + +func file_contact_proto_rawDescGZIP() []byte { + file_contact_proto_rawDescOnce.Do(func() { + file_contact_proto_rawDescData = protoimpl.X.CompressGZIP(file_contact_proto_rawDescData) + }) + return file_contact_proto_rawDescData } -var fileDescriptor_a5036fff2565fb15 = []byte{ - // 348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x51, 0x3f, 0x4f, 0xfb, 0x30, - 0x14, 0x54, 0xf2, 0xeb, 0xbf, 0xbc, 0x34, 0xbf, 0x21, 0xb4, 0x52, 0x19, 0x2a, 0x4a, 0x18, 0xe8, - 0x14, 0xa4, 0x32, 0x02, 0x03, 0x74, 0x42, 0x48, 0x08, 0x19, 0xb1, 0xb0, 0x44, 0xae, 0xf3, 0x5a, - 0x45, 0x4d, 0x62, 0xe3, 0xb8, 0x43, 0x3f, 0x11, 0x9f, 0x86, 0xef, 0x84, 0x62, 0xbb, 0x34, 0x65, - 0xe8, 0xc0, 0x94, 0xf8, 0x7c, 0xef, 0x7c, 0x77, 0x0f, 0x02, 0xc6, 0x4b, 0x45, 0x99, 0x8a, 0x85, - 0xe4, 0x8a, 0x87, 0x3d, 0xfd, 0x59, 0x6c, 0x96, 0xd1, 0xa7, 0x03, 0xe3, 0xb9, 0xb9, 0x23, 0xf8, - 0xb1, 0xc1, 0x4a, 0xbd, 0x48, 0x2e, 0xe8, 0x8a, 0x2a, 0x4c, 0x5f, 0x15, 0x55, 0x18, 0x9e, 0x81, - 0x9f, 0x73, 0x46, 0xf3, 0x84, 0xe5, 0x9c, 0xad, 0x47, 0xce, 0xc4, 0x99, 0xb6, 0x08, 0x68, 0x68, - 0x5e, 0x23, 0x7b, 0x42, 0x55, 0xf3, 0x47, 0x6e, 0x83, 0x60, 0x14, 0xce, 0xa1, 0x2f, 0xb1, 0xe0, - 0x0a, 0xad, 0xc4, 0x3f, 0xcd, 0xf0, 0x0d, 0x66, 0x34, 0xf6, 0x14, 0x23, 0xd2, 0x6a, 0x52, 0xb4, - 0x4a, 0xf4, 0xe5, 0x42, 0x60, 0x9d, 0xbe, 0x89, 0xb4, 0xd6, 0x1d, 0x40, 0xbb, 0xe9, 0xc9, 0x1c, - 0xc2, 0x53, 0xe8, 0x61, 0x59, 0x25, 0x25, 0x2d, 0x8c, 0x17, 0x8f, 0x74, 0xb1, 0xac, 0x9e, 0x69, - 0x81, 0xe1, 0x05, 0x04, 0x42, 0xf2, 0x65, 0x96, 0x63, 0x92, 0x15, 0x74, 0x85, 0xda, 0x89, 0x47, - 0xfa, 0x16, 0x7c, 0xac, 0xb1, 0xda, 0x4a, 0x9a, 0x55, 0x22, 0xa7, 0x5b, 0xa3, 0xd1, 0xd2, 0x1c, - 0xdf, 0x62, 0x5a, 0x67, 0x06, 0x43, 0xdb, 0x67, 0x22, 0x4d, 0x69, 0x36, 0x59, 0x5b, 0x1b, 0x39, - 0x61, 0x07, 0x85, 0x9a, 0x84, 0x02, 0x26, 0xbf, 0x67, 0xc4, 0x4f, 0xd3, 0x36, 0x75, 0x67, 0xe2, - 0x4c, 0xfd, 0xd9, 0x65, 0xbc, 0xdb, 0x4e, 0x7c, 0x74, 0x33, 0x64, 0xcc, 0x8e, 0x2e, 0x6e, 0x0c, - 0x20, 0x36, 0x8b, 0x3c, 0x63, 0xc9, 0x1a, 0xb7, 0xa3, 0xae, 0x8e, 0xe1, 0x19, 0xe4, 0x09, 0xb7, - 0xd1, 0x2d, 0x0c, 0xee, 0x19, 0x43, 0xa1, 0x0e, 0x1f, 0x09, 0xff, 0x83, 0x9b, 0xa5, 0xba, 0x52, - 0x8f, 0xb8, 0x59, 0xba, 0x6f, 0xd9, 0x6d, 0xb4, 0x1c, 0xdd, 0xc1, 0x90, 0xa0, 0x92, 0x94, 0xfd, - 0x69, 0xfc, 0x21, 0x78, 0xf7, 0xe3, 0xab, 0x9b, 0x5d, 0xce, 0x45, 0x47, 0xff, 0x5d, 0x7f, 0x07, - 0x00, 0x00, 0xff, 0xff, 0xec, 0x6f, 0x01, 0xce, 0xa7, 0x02, 0x00, 0x00, +var file_contact_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_contact_proto_goTypes = []interface{}{ + (*ContactRequestPropagatedState)(nil), // 0: protobuf.ContactRequestPropagatedState + (*ContactUpdate)(nil), // 1: protobuf.ContactUpdate + (*AcceptContactRequest)(nil), // 2: protobuf.AcceptContactRequest + (*RetractContactRequest)(nil), // 3: protobuf.RetractContactRequest +} +var file_contact_proto_depIdxs = []int32{ + 0, // 0: protobuf.ContactUpdate.contact_request_propagated_state:type_name -> protobuf.ContactRequestPropagatedState + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_contact_proto_init() } +func file_contact_proto_init() { + if File_contact_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_contact_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactRequestPropagatedState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptContactRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RetractContactRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_contact_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_contact_proto_goTypes, + DependencyIndexes: file_contact_proto_depIdxs, + MessageInfos: file_contact_proto_msgTypes, + }.Build() + File_contact_proto = out.File + file_contact_proto_rawDesc = nil + file_contact_proto_goTypes = nil + file_contact_proto_depIdxs = nil } diff --git a/protocol/protobuf/contact_verification.pb.go b/protocol/protobuf/contact_verification.pb.go index db8442919..44c129dcd 100644 --- a/protocol/protobuf/contact_verification.pb.go +++ b/protocol/protobuf/contact_verification.pb.go @@ -1,245 +1,380 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: contact_verification.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type RequestContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Challenge string `protobuf:"bytes,3,opt,name=challenge,proto3" json:"challenge,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Challenge string `protobuf:"bytes,3,opt,name=challenge,proto3" json:"challenge,omitempty"` } -func (m *RequestContactVerification) Reset() { *m = RequestContactVerification{} } -func (m *RequestContactVerification) String() string { return proto.CompactTextString(m) } -func (*RequestContactVerification) ProtoMessage() {} +func (x *RequestContactVerification) Reset() { + *x = RequestContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestContactVerification) ProtoMessage() {} + +func (x *RequestContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestContactVerification.ProtoReflect.Descriptor instead. func (*RequestContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{0} + return file_contact_verification_proto_rawDescGZIP(), []int{0} } -func (m *RequestContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestContactVerification.Unmarshal(m, b) -} -func (m *RequestContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestContactVerification.Marshal(b, m, deterministic) -} -func (m *RequestContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestContactVerification.Merge(m, src) -} -func (m *RequestContactVerification) XXX_Size() int { - return xxx_messageInfo_RequestContactVerification.Size(m) -} -func (m *RequestContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_RequestContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestContactVerification proto.InternalMessageInfo - -func (m *RequestContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestContactVerification) GetChallenge() string { - if m != nil { - return m.Challenge +func (x *RequestContactVerification) GetChallenge() string { + if x != nil { + return x.Challenge } return "" } type AcceptContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` } -func (m *AcceptContactVerification) Reset() { *m = AcceptContactVerification{} } -func (m *AcceptContactVerification) String() string { return proto.CompactTextString(m) } -func (*AcceptContactVerification) ProtoMessage() {} +func (x *AcceptContactVerification) Reset() { + *x = AcceptContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptContactVerification) ProtoMessage() {} + +func (x *AcceptContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptContactVerification.ProtoReflect.Descriptor instead. func (*AcceptContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{1} + return file_contact_verification_proto_rawDescGZIP(), []int{1} } -func (m *AcceptContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptContactVerification.Unmarshal(m, b) -} -func (m *AcceptContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptContactVerification.Marshal(b, m, deterministic) -} -func (m *AcceptContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptContactVerification.Merge(m, src) -} -func (m *AcceptContactVerification) XXX_Size() int { - return xxx_messageInfo_AcceptContactVerification.Size(m) -} -func (m *AcceptContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptContactVerification proto.InternalMessageInfo - -func (m *AcceptContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *AcceptContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *AcceptContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptContactVerification) GetResponse() string { - if m != nil { - return m.Response +func (x *AcceptContactVerification) GetResponse() string { + if x != nil { + return x.Response } return "" } type DeclineContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeclineContactVerification) Reset() { *m = DeclineContactVerification{} } -func (m *DeclineContactVerification) String() string { return proto.CompactTextString(m) } -func (*DeclineContactVerification) ProtoMessage() {} +func (x *DeclineContactVerification) Reset() { + *x = DeclineContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineContactVerification) ProtoMessage() {} + +func (x *DeclineContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineContactVerification.ProtoReflect.Descriptor instead. func (*DeclineContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{2} + return file_contact_verification_proto_rawDescGZIP(), []int{2} } -func (m *DeclineContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineContactVerification.Unmarshal(m, b) -} -func (m *DeclineContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineContactVerification.Marshal(b, m, deterministic) -} -func (m *DeclineContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineContactVerification.Merge(m, src) -} -func (m *DeclineContactVerification) XXX_Size() int { - return xxx_messageInfo_DeclineContactVerification.Size(m) -} -func (m *DeclineContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineContactVerification proto.InternalMessageInfo - -func (m *DeclineContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *DeclineContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } type CancelContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *CancelContactVerification) Reset() { *m = CancelContactVerification{} } -func (m *CancelContactVerification) String() string { return proto.CompactTextString(m) } -func (*CancelContactVerification) ProtoMessage() {} +func (x *CancelContactVerification) Reset() { + *x = CancelContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelContactVerification) ProtoMessage() {} + +func (x *CancelContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelContactVerification.ProtoReflect.Descriptor instead. func (*CancelContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{3} + return file_contact_verification_proto_rawDescGZIP(), []int{3} } -func (m *CancelContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelContactVerification.Unmarshal(m, b) -} -func (m *CancelContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelContactVerification.Marshal(b, m, deterministic) -} -func (m *CancelContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelContactVerification.Merge(m, src) -} -func (m *CancelContactVerification) XXX_Size() int { - return xxx_messageInfo_CancelContactVerification.Size(m) -} -func (m *CancelContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_CancelContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelContactVerification proto.InternalMessageInfo - -func (m *CancelContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CancelContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CancelContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *CancelContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } -func init() { - proto.RegisterType((*RequestContactVerification)(nil), "protobuf.RequestContactVerification") - proto.RegisterType((*AcceptContactVerification)(nil), "protobuf.AcceptContactVerification") - proto.RegisterType((*DeclineContactVerification)(nil), "protobuf.DeclineContactVerification") - proto.RegisterType((*CancelContactVerification)(nil), "protobuf.CancelContactVerification") +var File_contact_verification_proto protoreflect.FileDescriptor + +var file_contact_verification_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x50, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x22, 0x5d, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x0a, 0x1a, 0x44, 0x65, 0x63, 0x6c, 0x69, + 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x19, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x42, 0x0d, + 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("contact_verification.proto", fileDescriptor_d6997df64de39454) +var ( + file_contact_verification_proto_rawDescOnce sync.Once + file_contact_verification_proto_rawDescData = file_contact_verification_proto_rawDesc +) + +func file_contact_verification_proto_rawDescGZIP() []byte { + file_contact_verification_proto_rawDescOnce.Do(func() { + file_contact_verification_proto_rawDescData = protoimpl.X.CompressGZIP(file_contact_verification_proto_rawDescData) + }) + return file_contact_verification_proto_rawDescData } -var fileDescriptor_d6997df64de39454 = []byte{ - // 194 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0xce, 0xcf, 0x2b, - 0x49, 0x4c, 0x2e, 0x89, 0x2f, 0x4b, 0x2d, 0xca, 0x4c, 0xcb, 0x4c, 0x4e, 0x2c, 0xc9, 0xcc, 0xcf, - 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0x01, 0x5c, - 0x52, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0xce, 0x10, 0xe5, 0x61, 0x48, 0xaa, 0x85, 0x44, - 0xb8, 0x58, 0x93, 0x73, 0xf2, 0x93, 0xb3, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x20, 0x1c, - 0x21, 0x19, 0x2e, 0xce, 0xe4, 0x8c, 0xc4, 0x9c, 0x9c, 0xd4, 0xbc, 0xf4, 0x54, 0x09, 0x66, 0x05, - 0x46, 0x0d, 0xce, 0x20, 0x84, 0x80, 0x52, 0x2c, 0x97, 0xa4, 0x63, 0x72, 0x72, 0x6a, 0x01, 0x09, - 0x06, 0xf2, 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x81, 0x4d, 0x62, 0xca, 0x4c, 0x11, 0x92, 0xe2, - 0xe2, 0x28, 0x4a, 0x2d, 0x2e, 0xc8, 0xcf, 0x2b, 0x86, 0x99, 0x0f, 0xe7, 0x2b, 0x39, 0x71, 0x49, - 0xb9, 0xa4, 0x26, 0xe7, 0x64, 0xe6, 0xa5, 0x92, 0x6d, 0xbe, 0x92, 0x23, 0x97, 0xa4, 0x73, 0x62, - 0x5e, 0x72, 0x6a, 0x0e, 0xd9, 0x46, 0x38, 0xf1, 0x46, 0x71, 0xeb, 0xe9, 0x5b, 0xc3, 0x82, 0x31, - 0x89, 0x0d, 0xcc, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x2b, 0x89, 0x8f, 0x75, 0x01, - 0x00, 0x00, +var file_contact_verification_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_contact_verification_proto_goTypes = []interface{}{ + (*RequestContactVerification)(nil), // 0: protobuf.RequestContactVerification + (*AcceptContactVerification)(nil), // 1: protobuf.AcceptContactVerification + (*DeclineContactVerification)(nil), // 2: protobuf.DeclineContactVerification + (*CancelContactVerification)(nil), // 3: protobuf.CancelContactVerification +} +var file_contact_verification_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_contact_verification_proto_init() } +func file_contact_verification_proto_init() { + if File_contact_verification_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_contact_verification_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_contact_verification_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_contact_verification_proto_goTypes, + DependencyIndexes: file_contact_verification_proto_depIdxs, + MessageInfos: file_contact_verification_proto_msgTypes, + }.Build() + File_contact_verification_proto = out.File + file_contact_verification_proto_rawDesc = nil + file_contact_verification_proto_goTypes = nil + file_contact_verification_proto_depIdxs = nil } diff --git a/protocol/protobuf/emoji_reaction.pb.go b/protocol/protobuf/emoji_reaction.pb.go index 069147fca..710c9426c 100644 --- a/protocol/protobuf/emoji_reaction.pb.go +++ b/protocol/protobuf/emoji_reaction.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: emoji_reaction.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type EmojiReaction_Type int32 @@ -32,35 +32,60 @@ const ( EmojiReaction_ANGRY EmojiReaction_Type = 6 ) -var EmojiReaction_Type_name = map[int32]string{ - 0: "UNKNOWN_EMOJI_REACTION_TYPE", - 1: "LOVE", - 2: "THUMBS_UP", - 3: "THUMBS_DOWN", - 4: "LAUGH", - 5: "SAD", - 6: "ANGRY", -} +// Enum value maps for EmojiReaction_Type. +var ( + EmojiReaction_Type_name = map[int32]string{ + 0: "UNKNOWN_EMOJI_REACTION_TYPE", + 1: "LOVE", + 2: "THUMBS_UP", + 3: "THUMBS_DOWN", + 4: "LAUGH", + 5: "SAD", + 6: "ANGRY", + } + EmojiReaction_Type_value = map[string]int32{ + "UNKNOWN_EMOJI_REACTION_TYPE": 0, + "LOVE": 1, + "THUMBS_UP": 2, + "THUMBS_DOWN": 3, + "LAUGH": 4, + "SAD": 5, + "ANGRY": 6, + } +) -var EmojiReaction_Type_value = map[string]int32{ - "UNKNOWN_EMOJI_REACTION_TYPE": 0, - "LOVE": 1, - "THUMBS_UP": 2, - "THUMBS_DOWN": 3, - "LAUGH": 4, - "SAD": 5, - "ANGRY": 6, +func (x EmojiReaction_Type) Enum() *EmojiReaction_Type { + p := new(EmojiReaction_Type) + *p = x + return p } func (x EmojiReaction_Type) String() string { - return proto.EnumName(EmojiReaction_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (EmojiReaction_Type) Descriptor() protoreflect.EnumDescriptor { + return file_emoji_reaction_proto_enumTypes[0].Descriptor() +} + +func (EmojiReaction_Type) Type() protoreflect.EnumType { + return &file_emoji_reaction_proto_enumTypes[0] +} + +func (x EmojiReaction_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EmojiReaction_Type.Descriptor instead. func (EmojiReaction_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0a088c907bbc7ed6, []int{0, 0} + return file_emoji_reaction_proto_rawDescGZIP(), []int{0, 0} } type EmojiReaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // clock Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // chat_id the ID of the chat the message belongs to, for query efficiency the chat_id is stored in the db even though the @@ -75,116 +100,189 @@ type EmojiReaction struct { // whether this is a rectraction of a previously sent emoji Retracted bool `protobuf:"varint,6,opt,name=retracted,proto3" json:"retracted,omitempty"` // Grant for organisation chat messages - Grant []byte `protobuf:"bytes,7,opt,name=grant,proto3" json:"grant,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Grant []byte `protobuf:"bytes,7,opt,name=grant,proto3" json:"grant,omitempty"` } -func (m *EmojiReaction) Reset() { *m = EmojiReaction{} } -func (m *EmojiReaction) String() string { return proto.CompactTextString(m) } -func (*EmojiReaction) ProtoMessage() {} +func (x *EmojiReaction) Reset() { + *x = EmojiReaction{} + if protoimpl.UnsafeEnabled { + mi := &file_emoji_reaction_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EmojiReaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmojiReaction) ProtoMessage() {} + +func (x *EmojiReaction) ProtoReflect() protoreflect.Message { + mi := &file_emoji_reaction_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EmojiReaction.ProtoReflect.Descriptor instead. func (*EmojiReaction) Descriptor() ([]byte, []int) { - return fileDescriptor_0a088c907bbc7ed6, []int{0} + return file_emoji_reaction_proto_rawDescGZIP(), []int{0} } -func (m *EmojiReaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EmojiReaction.Unmarshal(m, b) -} -func (m *EmojiReaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EmojiReaction.Marshal(b, m, deterministic) -} -func (m *EmojiReaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_EmojiReaction.Merge(m, src) -} -func (m *EmojiReaction) XXX_Size() int { - return xxx_messageInfo_EmojiReaction.Size(m) -} -func (m *EmojiReaction) XXX_DiscardUnknown() { - xxx_messageInfo_EmojiReaction.DiscardUnknown(m) -} - -var xxx_messageInfo_EmojiReaction proto.InternalMessageInfo - -func (m *EmojiReaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *EmojiReaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *EmojiReaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *EmojiReaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *EmojiReaction) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *EmojiReaction) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *EmojiReaction) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *EmojiReaction) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *EmojiReaction) GetType() EmojiReaction_Type { - if m != nil { - return m.Type +func (x *EmojiReaction) GetType() EmojiReaction_Type { + if x != nil { + return x.Type } return EmojiReaction_UNKNOWN_EMOJI_REACTION_TYPE } -func (m *EmojiReaction) GetRetracted() bool { - if m != nil { - return m.Retracted +func (x *EmojiReaction) GetRetracted() bool { + if x != nil { + return x.Retracted } return false } -func (m *EmojiReaction) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *EmojiReaction) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func init() { - proto.RegisterEnum("protobuf.EmojiReaction_Type", EmojiReaction_Type_name, EmojiReaction_Type_value) - proto.RegisterType((*EmojiReaction)(nil), "protobuf.EmojiReaction") +var File_emoji_reaction_proto protoreflect.FileDescriptor + +var file_emoji_reaction_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xef, 0x02, + 0x0a, 0x0d, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x38, 0x0a, + 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x22, 0x70, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x56, 0x45, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, + 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x41, 0x55, 0x47, 0x48, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x53, + 0x41, 0x44, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4e, 0x47, 0x52, 0x59, 0x10, 0x06, 0x42, + 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("emoji_reaction.proto", fileDescriptor_0a088c907bbc7ed6) +var ( + file_emoji_reaction_proto_rawDescOnce sync.Once + file_emoji_reaction_proto_rawDescData = file_emoji_reaction_proto_rawDesc +) + +func file_emoji_reaction_proto_rawDescGZIP() []byte { + file_emoji_reaction_proto_rawDescOnce.Do(func() { + file_emoji_reaction_proto_rawDescData = protoimpl.X.CompressGZIP(file_emoji_reaction_proto_rawDescData) + }) + return file_emoji_reaction_proto_rawDescData } -var fileDescriptor_0a088c907bbc7ed6 = []byte{ - // 330 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x8f, 0xcd, 0x6e, 0xaa, 0x40, - 0x14, 0xc7, 0x2f, 0x0a, 0x28, 0x07, 0xbd, 0x77, 0x32, 0xf1, 0xa6, 0xa4, 0xb5, 0x29, 0x71, 0xc5, - 0x8a, 0x36, 0xed, 0xa6, 0x49, 0x57, 0x58, 0x89, 0xd2, 0x2a, 0x98, 0x11, 0x6a, 0xec, 0x86, 0x20, - 0x4c, 0xad, 0x6d, 0x11, 0x82, 0xe3, 0xc2, 0xa7, 0xee, 0x2b, 0x34, 0x0c, 0x1a, 0xd3, 0xd5, 0xcc, - 0xef, 0xff, 0x91, 0x73, 0x0e, 0x74, 0x68, 0x9a, 0x7d, 0xac, 0xc3, 0x82, 0x46, 0x31, 0x5b, 0x67, - 0x1b, 0x33, 0x2f, 0x32, 0x96, 0xe1, 0x26, 0x7f, 0x96, 0xbb, 0xb7, 0x73, 0x95, 0x6e, 0x76, 0xe9, - 0xb6, 0x92, 0x7b, 0xdf, 0x35, 0x68, 0xdb, 0x65, 0x9e, 0x1c, 0xe2, 0xb8, 0x03, 0x52, 0xfc, 0x95, - 0xc5, 0x9f, 0x9a, 0xa0, 0x0b, 0x86, 0x48, 0x2a, 0xc0, 0x67, 0xd0, 0x88, 0xdf, 0x23, 0x16, 0xae, - 0x13, 0xad, 0xa6, 0x0b, 0x86, 0x42, 0xe4, 0x12, 0x9d, 0x04, 0x5f, 0x02, 0xa4, 0x74, 0xbb, 0x8d, - 0x56, 0xb4, 0xf4, 0xea, 0xdc, 0x53, 0x0e, 0x8a, 0x93, 0xe0, 0x7b, 0x68, 0x1d, 0x6d, 0xb6, 0xcf, - 0xa9, 0x26, 0xea, 0x82, 0xf1, 0xf7, 0xf6, 0xbf, 0x79, 0xdc, 0xc6, 0x9c, 0x54, 0xae, 0xbf, 0xcf, - 0x29, 0x51, 0xd3, 0x13, 0xe0, 0x1b, 0x10, 0x79, 0x43, 0xe2, 0x8d, 0xee, 0xa9, 0xf1, 0x6b, 0x5d, - 0x93, 0x17, 0x79, 0x12, 0x77, 0x41, 0x29, 0x28, 0x2b, 0xa2, 0x98, 0xd1, 0x44, 0x93, 0x75, 0xc1, - 0x68, 0x92, 0x93, 0x50, 0xde, 0xb5, 0x2a, 0xa2, 0x0d, 0xd3, 0x1a, 0xba, 0x60, 0xb4, 0x48, 0x05, - 0xbd, 0x1c, 0x44, 0x3e, 0xed, 0x0a, 0x2e, 0x02, 0xf7, 0xd9, 0xf5, 0xe6, 0x6e, 0x68, 0x4f, 0xbc, - 0x27, 0x27, 0x24, 0xb6, 0xf5, 0xe8, 0x3b, 0x9e, 0x1b, 0xfa, 0x8b, 0xa9, 0x8d, 0xfe, 0xe0, 0x26, - 0x88, 0x63, 0xef, 0xc5, 0x46, 0x02, 0x6e, 0x83, 0xe2, 0x8f, 0x82, 0x49, 0x7f, 0x16, 0x06, 0x53, - 0x54, 0xc3, 0xff, 0x40, 0x3d, 0xe0, 0xc0, 0x9b, 0xbb, 0xa8, 0x8e, 0x15, 0x90, 0xc6, 0x56, 0x30, - 0x1c, 0x21, 0x11, 0x37, 0xa0, 0x3e, 0xb3, 0x06, 0x48, 0x2a, 0x35, 0xcb, 0x1d, 0x92, 0x05, 0x92, - 0xfb, 0xed, 0x57, 0xd5, 0xbc, 0x7e, 0x38, 0x5e, 0xb3, 0x94, 0xf9, 0xef, 0xee, 0x27, 0x00, 0x00, - 0xff, 0xff, 0x7e, 0x57, 0x12, 0xd9, 0xb6, 0x01, 0x00, 0x00, +var file_emoji_reaction_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_emoji_reaction_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_emoji_reaction_proto_goTypes = []interface{}{ + (EmojiReaction_Type)(0), // 0: protobuf.EmojiReaction.Type + (*EmojiReaction)(nil), // 1: protobuf.EmojiReaction + (MessageType)(0), // 2: protobuf.MessageType +} +var file_emoji_reaction_proto_depIdxs = []int32{ + 2, // 0: protobuf.EmojiReaction.message_type:type_name -> protobuf.MessageType + 0, // 1: protobuf.EmojiReaction.type:type_name -> protobuf.EmojiReaction.Type + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_emoji_reaction_proto_init() } +func file_emoji_reaction_proto_init() { + if File_emoji_reaction_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_emoji_reaction_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EmojiReaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_emoji_reaction_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_emoji_reaction_proto_goTypes, + DependencyIndexes: file_emoji_reaction_proto_depIdxs, + EnumInfos: file_emoji_reaction_proto_enumTypes, + MessageInfos: file_emoji_reaction_proto_msgTypes, + }.Build() + File_emoji_reaction_proto = out.File + file_emoji_reaction_proto_rawDesc = nil + file_emoji_reaction_proto_goTypes = nil + file_emoji_reaction_proto_depIdxs = nil } diff --git a/protocol/protobuf/enums.pb.go b/protocol/protobuf/enums.pb.go index 62121fc53..78cc7607b 100644 --- a/protocol/protobuf/enums.pb.go +++ b/protocol/protobuf/enums.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: enums.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MessageType int32 @@ -34,32 +34,53 @@ const ( MessageType_SYSTEM_MESSAGE_GAP MessageType = 6 ) -var MessageType_name = map[int32]string{ - 0: "UNKNOWN_MESSAGE_TYPE", - 1: "ONE_TO_ONE", - 2: "PUBLIC_GROUP", - 3: "PRIVATE_GROUP", - 4: "SYSTEM_MESSAGE_PRIVATE_GROUP", - 5: "COMMUNITY_CHAT", - 6: "SYSTEM_MESSAGE_GAP", -} +// Enum value maps for MessageType. +var ( + MessageType_name = map[int32]string{ + 0: "UNKNOWN_MESSAGE_TYPE", + 1: "ONE_TO_ONE", + 2: "PUBLIC_GROUP", + 3: "PRIVATE_GROUP", + 4: "SYSTEM_MESSAGE_PRIVATE_GROUP", + 5: "COMMUNITY_CHAT", + 6: "SYSTEM_MESSAGE_GAP", + } + MessageType_value = map[string]int32{ + "UNKNOWN_MESSAGE_TYPE": 0, + "ONE_TO_ONE": 1, + "PUBLIC_GROUP": 2, + "PRIVATE_GROUP": 3, + "SYSTEM_MESSAGE_PRIVATE_GROUP": 4, + "COMMUNITY_CHAT": 5, + "SYSTEM_MESSAGE_GAP": 6, + } +) -var MessageType_value = map[string]int32{ - "UNKNOWN_MESSAGE_TYPE": 0, - "ONE_TO_ONE": 1, - "PUBLIC_GROUP": 2, - "PRIVATE_GROUP": 3, - "SYSTEM_MESSAGE_PRIVATE_GROUP": 4, - "COMMUNITY_CHAT": 5, - "SYSTEM_MESSAGE_GAP": 6, +func (x MessageType) Enum() *MessageType { + p := new(MessageType) + *p = x + return p } func (x MessageType) String() string { - return proto.EnumName(MessageType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (MessageType) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[0].Descriptor() +} + +func (MessageType) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[0] +} + +func (x MessageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MessageType.Descriptor instead. func (MessageType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{0} + return file_enums_proto_rawDescGZIP(), []int{0} } type ImageType int32 @@ -73,28 +94,49 @@ const ( ImageType_GIF ImageType = 4 ) -var ImageType_name = map[int32]string{ - 0: "UNKNOWN_IMAGE_TYPE", - 1: "PNG", - 2: "JPEG", - 3: "WEBP", - 4: "GIF", -} +// Enum value maps for ImageType. +var ( + ImageType_name = map[int32]string{ + 0: "UNKNOWN_IMAGE_TYPE", + 1: "PNG", + 2: "JPEG", + 3: "WEBP", + 4: "GIF", + } + ImageType_value = map[string]int32{ + "UNKNOWN_IMAGE_TYPE": 0, + "PNG": 1, + "JPEG": 2, + "WEBP": 3, + "GIF": 4, + } +) -var ImageType_value = map[string]int32{ - "UNKNOWN_IMAGE_TYPE": 0, - "PNG": 1, - "JPEG": 2, - "WEBP": 3, - "GIF": 4, +func (x ImageType) Enum() *ImageType { + p := new(ImageType) + *p = x + return p } func (x ImageType) String() string { - return proto.EnumName(ImageType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ImageType) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[1].Descriptor() +} + +func (ImageType) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[1] +} + +func (x ImageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ImageType.Descriptor instead. func (ImageType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{1} + return file_enums_proto_rawDescGZIP(), []int{1} } type CommunityTokenType int32 @@ -106,56 +148,125 @@ const ( CommunityTokenType_ENS CommunityTokenType = 3 ) -var CommunityTokenType_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_TYPE", - 1: "ERC20", - 2: "ERC721", - 3: "ENS", -} +// Enum value maps for CommunityTokenType. +var ( + CommunityTokenType_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_TYPE", + 1: "ERC20", + 2: "ERC721", + 3: "ENS", + } + CommunityTokenType_value = map[string]int32{ + "UNKNOWN_TOKEN_TYPE": 0, + "ERC20": 1, + "ERC721": 2, + "ENS": 3, + } +) -var CommunityTokenType_value = map[string]int32{ - "UNKNOWN_TOKEN_TYPE": 0, - "ERC20": 1, - "ERC721": 2, - "ENS": 3, +func (x CommunityTokenType) Enum() *CommunityTokenType { + p := new(CommunityTokenType) + *p = x + return p } func (x CommunityTokenType) String() string { - return proto.EnumName(CommunityTokenType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityTokenType) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[2].Descriptor() +} + +func (CommunityTokenType) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[2] +} + +func (x CommunityTokenType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityTokenType.Descriptor instead. func (CommunityTokenType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{2} + return file_enums_proto_rawDescGZIP(), []int{2} } -func init() { - proto.RegisterEnum("protobuf.MessageType", MessageType_name, MessageType_value) - proto.RegisterEnum("protobuf.ImageType", ImageType_name, ImageType_value) - proto.RegisterEnum("protobuf.CommunityTokenType", CommunityTokenType_name, CommunityTokenType_value) +var File_enums_proto protoreflect.FileDescriptor + +var file_enums_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2a, 0xaa, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x4e, 0x45, 0x10, + 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x47, + 0x41, 0x50, 0x10, 0x06, 0x2a, 0x49, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x4d, 0x41, + 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4e, 0x47, + 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x50, 0x45, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, + 0x57, 0x45, 0x42, 0x50, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x49, 0x46, 0x10, 0x04, 0x2a, + 0x4c, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x52, 0x43, 0x32, 0x30, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x43, 0x37, + 0x32, 0x31, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x53, 0x10, 0x03, 0x42, 0x0d, 0x5a, + 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("enums.proto", fileDescriptor_888b6bd9597961ff) +var ( + file_enums_proto_rawDescOnce sync.Once + file_enums_proto_rawDescData = file_enums_proto_rawDesc +) + +func file_enums_proto_rawDescGZIP() []byte { + file_enums_proto_rawDescOnce.Do(func() { + file_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_enums_proto_rawDescData) + }) + return file_enums_proto_rawDescData } -var fileDescriptor_888b6bd9597961ff = []byte{ - // 286 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x4d, 0x4f, 0xc2, 0x40, - 0x10, 0x86, 0x2d, 0xe5, 0x73, 0x10, 0x32, 0x4e, 0x0c, 0xf1, 0xe0, 0xc1, 0x33, 0x07, 0x54, 0x3c, - 0x78, 0xf0, 0x54, 0x9a, 0xb1, 0xae, 0xb0, 0x1f, 0x69, 0xb7, 0x12, 0xbc, 0x6c, 0x24, 0xa9, 0xc6, - 0x98, 0x52, 0x22, 0x70, 0xe0, 0x2f, 0xf9, 0x2b, 0x0d, 0xc4, 0x1a, 0xe5, 0x34, 0x6f, 0x26, 0x33, - 0x4f, 0x9e, 0xbc, 0xd0, 0xce, 0x16, 0x9b, 0x7c, 0x35, 0x58, 0x7e, 0x16, 0xeb, 0x82, 0x9a, 0xfb, - 0x31, 0xdf, 0xbc, 0xf6, 0xbf, 0x3c, 0x68, 0xcb, 0x6c, 0xb5, 0x7a, 0x79, 0xcb, 0xec, 0x76, 0x99, - 0xd1, 0x19, 0x9c, 0xa6, 0x6a, 0xac, 0xf4, 0x54, 0x39, 0xc9, 0x49, 0x12, 0x44, 0xec, 0xec, 0xcc, - 0x30, 0x1e, 0x51, 0x17, 0x40, 0x2b, 0x76, 0x56, 0x3b, 0xad, 0x18, 0x3d, 0x42, 0x38, 0x36, 0xe9, - 0x68, 0x22, 0x42, 0x17, 0xc5, 0x3a, 0x35, 0x58, 0xa1, 0x13, 0xe8, 0x98, 0x58, 0x3c, 0x05, 0x96, - 0x7f, 0x56, 0x3e, 0x5d, 0xc0, 0x79, 0x32, 0x4b, 0x2c, 0xcb, 0x5f, 0xda, 0xff, 0x8b, 0x2a, 0x11, - 0x74, 0x43, 0x2d, 0x65, 0xaa, 0x84, 0x9d, 0xb9, 0xf0, 0x21, 0xb0, 0x58, 0xa3, 0x1e, 0xd0, 0xc1, - 0x57, 0x14, 0x18, 0xac, 0xf7, 0x05, 0xb4, 0x44, 0x5e, 0x9a, 0xf6, 0x80, 0x4a, 0x53, 0x21, 0xff, - 0x78, 0x36, 0xc0, 0x37, 0x2a, 0x42, 0x8f, 0x9a, 0x50, 0x7d, 0x34, 0x1c, 0x61, 0x65, 0x97, 0xa6, - 0x3c, 0xda, 0xf9, 0x34, 0xc0, 0x8f, 0xc4, 0x3d, 0x56, 0xfb, 0x13, 0xa0, 0xb0, 0xc8, 0xf3, 0xcd, - 0xe2, 0x7d, 0xbd, 0xb5, 0xc5, 0x47, 0xb6, 0x38, 0x64, 0x5a, 0x3d, 0x66, 0x55, 0x32, 0x5b, 0x50, - 0xe3, 0x38, 0x1c, 0x5e, 0xa1, 0x47, 0x00, 0x75, 0x8e, 0xc3, 0xdb, 0xe1, 0x35, 0x56, 0x76, 0x34, - 0x56, 0x09, 0xfa, 0xa3, 0xce, 0x73, 0x7b, 0x70, 0x79, 0x57, 0x96, 0x3a, 0xaf, 0xef, 0xd3, 0xcd, - 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x58, 0xd8, 0x58, 0xde, 0x74, 0x01, 0x00, 0x00, +var file_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_enums_proto_goTypes = []interface{}{ + (MessageType)(0), // 0: protobuf.MessageType + (ImageType)(0), // 1: protobuf.ImageType + (CommunityTokenType)(0), // 2: protobuf.CommunityTokenType +} +var file_enums_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_enums_proto_init() } +func file_enums_proto_init() { + if File_enums_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_enums_proto_rawDesc, + NumEnums: 3, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_enums_proto_goTypes, + DependencyIndexes: file_enums_proto_depIdxs, + EnumInfos: file_enums_proto_enumTypes, + }.Build() + File_enums_proto = out.File + file_enums_proto_rawDesc = nil + file_enums_proto_goTypes = nil + file_enums_proto_depIdxs = nil } diff --git a/protocol/protobuf/group_chat_invitation.pb.go b/protocol/protobuf/group_chat_invitation.pb.go index fffce089d..ed1a98a2d 100644 --- a/protocol/protobuf/group_chat_invitation.pb.go +++ b/protocol/protobuf/group_chat_invitation.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: group_chat_invitation.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type GroupChatInvitation_State int32 @@ -29,29 +29,54 @@ const ( GroupChatInvitation_APPROVED GroupChatInvitation_State = 3 ) -var GroupChatInvitation_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "REQUEST", - 2: "REJECTED", - 3: "APPROVED", -} +// Enum value maps for GroupChatInvitation_State. +var ( + GroupChatInvitation_State_name = map[int32]string{ + 0: "UNKNOWN", + 1: "REQUEST", + 2: "REJECTED", + 3: "APPROVED", + } + GroupChatInvitation_State_value = map[string]int32{ + "UNKNOWN": 0, + "REQUEST": 1, + "REJECTED": 2, + "APPROVED": 3, + } +) -var GroupChatInvitation_State_value = map[string]int32{ - "UNKNOWN": 0, - "REQUEST": 1, - "REJECTED": 2, - "APPROVED": 3, +func (x GroupChatInvitation_State) Enum() *GroupChatInvitation_State { + p := new(GroupChatInvitation_State) + *p = x + return p } func (x GroupChatInvitation_State) String() string { - return proto.EnumName(GroupChatInvitation_State_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (GroupChatInvitation_State) Descriptor() protoreflect.EnumDescriptor { + return file_group_chat_invitation_proto_enumTypes[0].Descriptor() +} + +func (GroupChatInvitation_State) Type() protoreflect.EnumType { + return &file_group_chat_invitation_proto_enumTypes[0] +} + +func (x GroupChatInvitation_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GroupChatInvitation_State.Descriptor instead. func (GroupChatInvitation_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a6a73333de6a8ebe, []int{0, 0} + return file_group_chat_invitation_proto_rawDescGZIP(), []int{0, 0} } type GroupChatInvitation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // clock Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // chat_id the ID of the private group chat the message belongs to, for query efficiency the chat_id is stored in the db even though the @@ -59,90 +84,157 @@ type GroupChatInvitation struct { ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` IntroductionMessage string `protobuf:"bytes,3,opt,name=introduction_message,json=introductionMessage,proto3" json:"introduction_message,omitempty"` // state of invitation - State GroupChatInvitation_State `protobuf:"varint,4,opt,name=state,proto3,enum=protobuf.GroupChatInvitation_State" json:"state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + State GroupChatInvitation_State `protobuf:"varint,4,opt,name=state,proto3,enum=protobuf.GroupChatInvitation_State" json:"state,omitempty"` } -func (m *GroupChatInvitation) Reset() { *m = GroupChatInvitation{} } -func (m *GroupChatInvitation) String() string { return proto.CompactTextString(m) } -func (*GroupChatInvitation) ProtoMessage() {} +func (x *GroupChatInvitation) Reset() { + *x = GroupChatInvitation{} + if protoimpl.UnsafeEnabled { + mi := &file_group_chat_invitation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GroupChatInvitation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupChatInvitation) ProtoMessage() {} + +func (x *GroupChatInvitation) ProtoReflect() protoreflect.Message { + mi := &file_group_chat_invitation_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupChatInvitation.ProtoReflect.Descriptor instead. func (*GroupChatInvitation) Descriptor() ([]byte, []int) { - return fileDescriptor_a6a73333de6a8ebe, []int{0} + return file_group_chat_invitation_proto_rawDescGZIP(), []int{0} } -func (m *GroupChatInvitation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GroupChatInvitation.Unmarshal(m, b) -} -func (m *GroupChatInvitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GroupChatInvitation.Marshal(b, m, deterministic) -} -func (m *GroupChatInvitation) XXX_Merge(src proto.Message) { - xxx_messageInfo_GroupChatInvitation.Merge(m, src) -} -func (m *GroupChatInvitation) XXX_Size() int { - return xxx_messageInfo_GroupChatInvitation.Size(m) -} -func (m *GroupChatInvitation) XXX_DiscardUnknown() { - xxx_messageInfo_GroupChatInvitation.DiscardUnknown(m) -} - -var xxx_messageInfo_GroupChatInvitation proto.InternalMessageInfo - -func (m *GroupChatInvitation) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *GroupChatInvitation) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *GroupChatInvitation) GetChatId() string { - if m != nil { - return m.ChatId +func (x *GroupChatInvitation) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *GroupChatInvitation) GetIntroductionMessage() string { - if m != nil { - return m.IntroductionMessage +func (x *GroupChatInvitation) GetIntroductionMessage() string { + if x != nil { + return x.IntroductionMessage } return "" } -func (m *GroupChatInvitation) GetState() GroupChatInvitation_State { - if m != nil { - return m.State +func (x *GroupChatInvitation) GetState() GroupChatInvitation_State { + if x != nil { + return x.State } return GroupChatInvitation_UNKNOWN } -func init() { - proto.RegisterEnum("protobuf.GroupChatInvitation_State", GroupChatInvitation_State_name, GroupChatInvitation_State_value) - proto.RegisterType((*GroupChatInvitation)(nil), "protobuf.GroupChatInvitation") +var File_group_chat_invitation_proto protoreflect.FileDescriptor + +var file_group_chat_invitation_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xf1, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x68, 0x61, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x31, + 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x68, 0x61, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3d, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, + 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -func init() { - proto.RegisterFile("group_chat_invitation.proto", fileDescriptor_a6a73333de6a8ebe) +var ( + file_group_chat_invitation_proto_rawDescOnce sync.Once + file_group_chat_invitation_proto_rawDescData = file_group_chat_invitation_proto_rawDesc +) + +func file_group_chat_invitation_proto_rawDescGZIP() []byte { + file_group_chat_invitation_proto_rawDescOnce.Do(func() { + file_group_chat_invitation_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_chat_invitation_proto_rawDescData) + }) + return file_group_chat_invitation_proto_rawDescData } -var fileDescriptor_a6a73333de6a8ebe = []byte{ - // 243 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0xca, 0x2f, - 0x2d, 0x88, 0x4f, 0xce, 0x48, 0x2c, 0x89, 0xcf, 0xcc, 0x2b, 0xcb, 0x2c, 0x49, 0x2c, 0xc9, 0xcc, - 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0x1f, - 0x19, 0xb9, 0x84, 0xdd, 0x41, 0x2a, 0x9d, 0x33, 0x12, 0x4b, 0x3c, 0xe1, 0xea, 0x84, 0x44, 0xb8, - 0x58, 0x93, 0x73, 0xf2, 0x93, 0xb3, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x20, 0x1c, 0x21, - 0x71, 0x2e, 0x76, 0x88, 0x81, 0x29, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x6c, 0x20, 0xae, - 0x67, 0x8a, 0x90, 0x21, 0x97, 0x48, 0x66, 0x5e, 0x49, 0x51, 0x7e, 0x4a, 0x69, 0x32, 0x48, 0x7b, - 0x7c, 0x6e, 0x6a, 0x71, 0x71, 0x62, 0x7a, 0xaa, 0x04, 0x33, 0x58, 0x95, 0x30, 0xb2, 0x9c, 0x2f, - 0x44, 0x4a, 0xc8, 0x92, 0x8b, 0xb5, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0x82, 0x45, 0x81, 0x51, 0x83, - 0xcf, 0x48, 0x59, 0x0f, 0xe6, 0x26, 0x3d, 0x2c, 0xee, 0xd1, 0x0b, 0x06, 0x29, 0x0d, 0x82, 0xe8, - 0x50, 0xb2, 0xe5, 0x62, 0x05, 0xf3, 0x85, 0xb8, 0xb9, 0xd8, 0x43, 0xfd, 0xbc, 0xfd, 0xfc, 0xc3, - 0xfd, 0x04, 0x18, 0x40, 0x9c, 0x20, 0xd7, 0xc0, 0x50, 0xd7, 0xe0, 0x10, 0x01, 0x46, 0x21, 0x1e, - 0x2e, 0x8e, 0x20, 0x57, 0x2f, 0x57, 0xe7, 0x10, 0x57, 0x17, 0x01, 0x26, 0x10, 0xcf, 0x31, 0x20, - 0x20, 0xc8, 0x3f, 0xcc, 0xd5, 0x45, 0x80, 0xd9, 0x89, 0x37, 0x8a, 0x5b, 0x4f, 0xdf, 0x1a, 0x66, - 0x5d, 0x12, 0x1b, 0x98, 0x65, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x4c, 0x19, 0xcd, 0x32, - 0x01, 0x00, 0x00, +var file_group_chat_invitation_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_group_chat_invitation_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_group_chat_invitation_proto_goTypes = []interface{}{ + (GroupChatInvitation_State)(0), // 0: protobuf.GroupChatInvitation.State + (*GroupChatInvitation)(nil), // 1: protobuf.GroupChatInvitation +} +var file_group_chat_invitation_proto_depIdxs = []int32{ + 0, // 0: protobuf.GroupChatInvitation.state:type_name -> protobuf.GroupChatInvitation.State + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_group_chat_invitation_proto_init() } +func file_group_chat_invitation_proto_init() { + if File_group_chat_invitation_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_group_chat_invitation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupChatInvitation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_group_chat_invitation_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_group_chat_invitation_proto_goTypes, + DependencyIndexes: file_group_chat_invitation_proto_depIdxs, + EnumInfos: file_group_chat_invitation_proto_enumTypes, + MessageInfos: file_group_chat_invitation_proto_msgTypes, + }.Build() + File_group_chat_invitation_proto = out.File + file_group_chat_invitation_proto_rawDesc = nil + file_group_chat_invitation_proto_goTypes = nil + file_group_chat_invitation_proto_depIdxs = nil } diff --git a/protocol/protobuf/membership_update_message.pb.go b/protocol/protobuf/membership_update_message.pb.go index f49cfcd0e..27cd0a0ba 100644 --- a/protocol/protobuf/membership_update_message.pb.go +++ b/protocol/protobuf/membership_update_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: membership_update_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MembershipUpdateEvent_EventType int32 @@ -35,41 +35,66 @@ const ( MembershipUpdateEvent_IMAGE_CHANGED MembershipUpdateEvent_EventType = 9 ) -var MembershipUpdateEvent_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CHAT_CREATED", - 2: "NAME_CHANGED", - 3: "MEMBERS_ADDED", - 4: "MEMBER_JOINED", - 5: "MEMBER_REMOVED", - 6: "ADMINS_ADDED", - 7: "ADMIN_REMOVED", - 8: "COLOR_CHANGED", - 9: "IMAGE_CHANGED", -} +// Enum value maps for MembershipUpdateEvent_EventType. +var ( + MembershipUpdateEvent_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CHAT_CREATED", + 2: "NAME_CHANGED", + 3: "MEMBERS_ADDED", + 4: "MEMBER_JOINED", + 5: "MEMBER_REMOVED", + 6: "ADMINS_ADDED", + 7: "ADMIN_REMOVED", + 8: "COLOR_CHANGED", + 9: "IMAGE_CHANGED", + } + MembershipUpdateEvent_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "CHAT_CREATED": 1, + "NAME_CHANGED": 2, + "MEMBERS_ADDED": 3, + "MEMBER_JOINED": 4, + "MEMBER_REMOVED": 5, + "ADMINS_ADDED": 6, + "ADMIN_REMOVED": 7, + "COLOR_CHANGED": 8, + "IMAGE_CHANGED": 9, + } +) -var MembershipUpdateEvent_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "CHAT_CREATED": 1, - "NAME_CHANGED": 2, - "MEMBERS_ADDED": 3, - "MEMBER_JOINED": 4, - "MEMBER_REMOVED": 5, - "ADMINS_ADDED": 6, - "ADMIN_REMOVED": 7, - "COLOR_CHANGED": 8, - "IMAGE_CHANGED": 9, +func (x MembershipUpdateEvent_EventType) Enum() *MembershipUpdateEvent_EventType { + p := new(MembershipUpdateEvent_EventType) + *p = x + return p } func (x MembershipUpdateEvent_EventType) String() string { - return proto.EnumName(MembershipUpdateEvent_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (MembershipUpdateEvent_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_membership_update_message_proto_enumTypes[0].Descriptor() +} + +func (MembershipUpdateEvent_EventType) Type() protoreflect.EnumType { + return &file_membership_update_message_proto_enumTypes[0] +} + +func (x MembershipUpdateEvent_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MembershipUpdateEvent_EventType.Descriptor instead. func (MembershipUpdateEvent_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{0, 0} + return file_membership_update_message_proto_rawDescGZIP(), []int{0, 0} } type MembershipUpdateEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the event Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // List of public keys of objects of the action @@ -81,75 +106,79 @@ type MembershipUpdateEvent struct { // Color of the chat for the CHAT_CREATED/COLOR_CHANGED event types Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` // Chat image - Image []byte `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Image []byte `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` } -func (m *MembershipUpdateEvent) Reset() { *m = MembershipUpdateEvent{} } -func (m *MembershipUpdateEvent) String() string { return proto.CompactTextString(m) } -func (*MembershipUpdateEvent) ProtoMessage() {} +func (x *MembershipUpdateEvent) Reset() { + *x = MembershipUpdateEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_membership_update_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipUpdateEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipUpdateEvent) ProtoMessage() {} + +func (x *MembershipUpdateEvent) ProtoReflect() protoreflect.Message { + mi := &file_membership_update_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipUpdateEvent.ProtoReflect.Descriptor instead. func (*MembershipUpdateEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{0} + return file_membership_update_message_proto_rawDescGZIP(), []int{0} } -func (m *MembershipUpdateEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MembershipUpdateEvent.Unmarshal(m, b) -} -func (m *MembershipUpdateEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MembershipUpdateEvent.Marshal(b, m, deterministic) -} -func (m *MembershipUpdateEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_MembershipUpdateEvent.Merge(m, src) -} -func (m *MembershipUpdateEvent) XXX_Size() int { - return xxx_messageInfo_MembershipUpdateEvent.Size(m) -} -func (m *MembershipUpdateEvent) XXX_DiscardUnknown() { - xxx_messageInfo_MembershipUpdateEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_MembershipUpdateEvent proto.InternalMessageInfo - -func (m *MembershipUpdateEvent) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *MembershipUpdateEvent) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *MembershipUpdateEvent) GetMembers() []string { - if m != nil { - return m.Members +func (x *MembershipUpdateEvent) GetMembers() []string { + if x != nil { + return x.Members } return nil } -func (m *MembershipUpdateEvent) GetName() string { - if m != nil { - return m.Name +func (x *MembershipUpdateEvent) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MembershipUpdateEvent) GetType() MembershipUpdateEvent_EventType { - if m != nil { - return m.Type +func (x *MembershipUpdateEvent) GetType() MembershipUpdateEvent_EventType { + if x != nil { + return x.Type } return MembershipUpdateEvent_UNKNOWN } -func (m *MembershipUpdateEvent) GetColor() string { - if m != nil { - return m.Color +func (x *MembershipUpdateEvent) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *MembershipUpdateEvent) GetImage() []byte { - if m != nil { - return m.Image +func (x *MembershipUpdateEvent) GetImage() []byte { + if x != nil { + return x.Image } return nil } @@ -158,6 +187,10 @@ func (m *MembershipUpdateEvent) GetImage() []byte { // about group membership changes. // For more information, see https://github.com/status-im/specs/blob/master/status-group-chats-spec.md. type MembershipUpdateMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The chat id of the private group chat ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // A list of events for this group chat, first x bytes are the signature, then is a @@ -165,51 +198,76 @@ type MembershipUpdateMessage struct { Events [][]byte `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` // An optional chat message // - // Types that are valid to be assigned to ChatEntity: + // Types that are assignable to ChatEntity: // // *MembershipUpdateMessage_Message // *MembershipUpdateMessage_EmojiReaction - ChatEntity isMembershipUpdateMessage_ChatEntity `protobuf_oneof:"chat_entity"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ChatEntity isMembershipUpdateMessage_ChatEntity `protobuf_oneof:"chat_entity"` } -func (m *MembershipUpdateMessage) Reset() { *m = MembershipUpdateMessage{} } -func (m *MembershipUpdateMessage) String() string { return proto.CompactTextString(m) } -func (*MembershipUpdateMessage) ProtoMessage() {} +func (x *MembershipUpdateMessage) Reset() { + *x = MembershipUpdateMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_membership_update_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipUpdateMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipUpdateMessage) ProtoMessage() {} + +func (x *MembershipUpdateMessage) ProtoReflect() protoreflect.Message { + mi := &file_membership_update_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipUpdateMessage.ProtoReflect.Descriptor instead. func (*MembershipUpdateMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{1} + return file_membership_update_message_proto_rawDescGZIP(), []int{1} } -func (m *MembershipUpdateMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MembershipUpdateMessage.Unmarshal(m, b) -} -func (m *MembershipUpdateMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MembershipUpdateMessage.Marshal(b, m, deterministic) -} -func (m *MembershipUpdateMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MembershipUpdateMessage.Merge(m, src) -} -func (m *MembershipUpdateMessage) XXX_Size() int { - return xxx_messageInfo_MembershipUpdateMessage.Size(m) -} -func (m *MembershipUpdateMessage) XXX_DiscardUnknown() { - xxx_messageInfo_MembershipUpdateMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_MembershipUpdateMessage proto.InternalMessageInfo - -func (m *MembershipUpdateMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *MembershipUpdateMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *MembershipUpdateMessage) GetEvents() [][]byte { +func (x *MembershipUpdateMessage) GetEvents() [][]byte { + if x != nil { + return x.Events + } + return nil +} + +func (m *MembershipUpdateMessage) GetChatEntity() isMembershipUpdateMessage_ChatEntity { if m != nil { - return m.Events + return m.ChatEntity + } + return nil +} + +func (x *MembershipUpdateMessage) GetMessage() *ChatMessage { + if x, ok := x.GetChatEntity().(*MembershipUpdateMessage_Message); ok { + return x.Message + } + return nil +} + +func (x *MembershipUpdateMessage) GetEmojiReaction() *EmojiReaction { + if x, ok := x.GetChatEntity().(*MembershipUpdateMessage_EmojiReaction); ok { + return x.EmojiReaction } return nil } @@ -230,73 +288,142 @@ func (*MembershipUpdateMessage_Message) isMembershipUpdateMessage_ChatEntity() { func (*MembershipUpdateMessage_EmojiReaction) isMembershipUpdateMessage_ChatEntity() {} -func (m *MembershipUpdateMessage) GetChatEntity() isMembershipUpdateMessage_ChatEntity { - if m != nil { - return m.ChatEntity - } - return nil +var File_membership_update_message_proto protoreflect.FileDescriptor + +var file_membership_update_message_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x12, 0x63, 0x68, 0x61, + 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x14, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xc1, + 0x01, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x41, + 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4e, + 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x44, 0x4d, 0x49, 0x4e, + 0x53, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x4d, + 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x08, 0x12, + 0x11, 0x0a, 0x0d, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0x09, 0x22, 0xce, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x31, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *MembershipUpdateMessage) GetMessage() *ChatMessage { - if x, ok := m.GetChatEntity().(*MembershipUpdateMessage_Message); ok { - return x.Message - } - return nil +var ( + file_membership_update_message_proto_rawDescOnce sync.Once + file_membership_update_message_proto_rawDescData = file_membership_update_message_proto_rawDesc +) + +func file_membership_update_message_proto_rawDescGZIP() []byte { + file_membership_update_message_proto_rawDescOnce.Do(func() { + file_membership_update_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_membership_update_message_proto_rawDescData) + }) + return file_membership_update_message_proto_rawDescData } -func (m *MembershipUpdateMessage) GetEmojiReaction() *EmojiReaction { - if x, ok := m.GetChatEntity().(*MembershipUpdateMessage_EmojiReaction); ok { - return x.EmojiReaction - } - return nil +var file_membership_update_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_membership_update_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_membership_update_message_proto_goTypes = []interface{}{ + (MembershipUpdateEvent_EventType)(0), // 0: protobuf.MembershipUpdateEvent.EventType + (*MembershipUpdateEvent)(nil), // 1: protobuf.MembershipUpdateEvent + (*MembershipUpdateMessage)(nil), // 2: protobuf.MembershipUpdateMessage + (*ChatMessage)(nil), // 3: protobuf.ChatMessage + (*EmojiReaction)(nil), // 4: protobuf.EmojiReaction +} +var file_membership_update_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.MembershipUpdateEvent.type:type_name -> protobuf.MembershipUpdateEvent.EventType + 3, // 1: protobuf.MembershipUpdateMessage.message:type_name -> protobuf.ChatMessage + 4, // 2: protobuf.MembershipUpdateMessage.emoji_reaction:type_name -> protobuf.EmojiReaction + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*MembershipUpdateMessage) XXX_OneofWrappers() []interface{} { - return []interface{}{ +func init() { file_membership_update_message_proto_init() } +func file_membership_update_message_proto_init() { + if File_membership_update_message_proto != nil { + return + } + file_chat_message_proto_init() + file_emoji_reaction_proto_init() + if !protoimpl.UnsafeEnabled { + file_membership_update_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipUpdateEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_membership_update_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipUpdateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_membership_update_message_proto_msgTypes[1].OneofWrappers = []interface{}{ (*MembershipUpdateMessage_Message)(nil), (*MembershipUpdateMessage_EmojiReaction)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.MembershipUpdateEvent_EventType", MembershipUpdateEvent_EventType_name, MembershipUpdateEvent_EventType_value) - proto.RegisterType((*MembershipUpdateEvent)(nil), "protobuf.MembershipUpdateEvent") - proto.RegisterType((*MembershipUpdateMessage)(nil), "protobuf.MembershipUpdateMessage") -} - -func init() { - proto.RegisterFile("membership_update_message.proto", fileDescriptor_8d37dd0dc857a6be) -} - -var fileDescriptor_8d37dd0dc857a6be = []byte{ - // 443 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xd1, 0x8e, 0x93, 0x40, - 0x14, 0x2d, 0x5b, 0x4a, 0x97, 0x4b, 0xdb, 0xe0, 0xcd, 0xae, 0x25, 0xfb, 0x22, 0xe9, 0x13, 0xbe, - 0x60, 0xac, 0x8f, 0xc6, 0x44, 0x0a, 0x93, 0x6d, 0x55, 0x20, 0x19, 0xbb, 0x9a, 0xf8, 0x42, 0x68, - 0x3b, 0x6e, 0xd1, 0xa5, 0x90, 0x76, 0xd6, 0xa4, 0xbf, 0xe0, 0x5f, 0xf9, 0x03, 0x7e, 0x93, 0x99, - 0x01, 0x8a, 0x35, 0xbe, 0xc0, 0x9c, 0x73, 0xe7, 0x9c, 0x39, 0xcc, 0x01, 0x9e, 0xe5, 0x2c, 0x5f, - 0xb1, 0xfd, 0x61, 0x9b, 0x95, 0xc9, 0x63, 0xb9, 0x49, 0x39, 0x4b, 0x72, 0x76, 0x38, 0xa4, 0xf7, - 0xcc, 0x2d, 0xf7, 0x05, 0x2f, 0xf0, 0x52, 0xbe, 0x56, 0x8f, 0x5f, 0x6f, 0x70, 0xbd, 0x4d, 0xf9, - 0xf9, 0xf4, 0xe6, 0x8a, 0xe5, 0xc5, 0xb7, 0x2c, 0xd9, 0xb3, 0x74, 0xcd, 0xb3, 0x62, 0x57, 0xb1, - 0x93, 0x9f, 0x5d, 0xb8, 0x0e, 0x4f, 0xbe, 0x77, 0xd2, 0x96, 0xfc, 0x60, 0x3b, 0x8e, 0x57, 0xd0, - 0x5b, 0x3f, 0x14, 0xeb, 0xef, 0x96, 0x62, 0x2b, 0x8e, 0x4a, 0x2b, 0x80, 0x16, 0xf4, 0xeb, 0x18, - 0xd6, 0x85, 0xdd, 0x75, 0x74, 0xda, 0x40, 0x44, 0x50, 0x77, 0x69, 0xce, 0xac, 0xae, 0xad, 0x38, - 0x3a, 0x95, 0x6b, 0x7c, 0x03, 0x2a, 0x3f, 0x96, 0xcc, 0x52, 0x6d, 0xc5, 0x19, 0x4d, 0x9f, 0xbb, - 0x4d, 0x40, 0xf7, 0xbf, 0x47, 0xba, 0xf2, 0xb9, 0x3c, 0x96, 0x8c, 0x4a, 0x99, 0x8c, 0x50, 0x3c, - 0x14, 0x7b, 0xab, 0x27, 0x3d, 0x2b, 0x20, 0xd8, 0x2c, 0x4f, 0xef, 0x99, 0xa5, 0xd9, 0x8a, 0x33, - 0xa0, 0x15, 0x98, 0xfc, 0x52, 0x40, 0x3f, 0xe9, 0xd1, 0x80, 0xfe, 0x5d, 0xf4, 0x3e, 0x8a, 0x3f, - 0x47, 0x66, 0x07, 0x4d, 0x18, 0xf8, 0x73, 0x6f, 0x99, 0xf8, 0x94, 0x78, 0x4b, 0x12, 0x98, 0x8a, - 0x60, 0x22, 0x2f, 0x24, 0x89, 0x3f, 0xf7, 0xa2, 0x5b, 0x12, 0x98, 0x17, 0xf8, 0x04, 0x86, 0x21, - 0x09, 0x67, 0x84, 0x7e, 0x4c, 0xbc, 0x20, 0x20, 0x81, 0xd9, 0x6d, 0xa9, 0xe4, 0x5d, 0xbc, 0x88, - 0x48, 0x60, 0xaa, 0x88, 0x30, 0xaa, 0x29, 0x4a, 0xc2, 0xf8, 0x13, 0x09, 0xcc, 0x9e, 0xf0, 0xf2, - 0x82, 0x70, 0x11, 0x35, 0x42, 0x4d, 0x08, 0x25, 0x73, 0xda, 0xd4, 0x17, 0x94, 0x1f, 0x7f, 0x88, - 0xe9, 0xe9, 0xc4, 0x4b, 0x41, 0x2d, 0x42, 0xef, 0xb6, 0x0d, 0xa1, 0x4f, 0x7e, 0x2b, 0x30, 0xfe, - 0xf7, 0x66, 0xc2, 0xaa, 0x44, 0x1c, 0x43, 0x5f, 0x96, 0x9a, 0x6d, 0x64, 0x21, 0x3a, 0xd5, 0x04, - 0x5c, 0x6c, 0xf0, 0x29, 0x68, 0x4c, 0x7c, 0x77, 0x55, 0xc8, 0x80, 0xd6, 0x08, 0x5f, 0x8a, 0xa6, - 0xa4, 0x56, 0x56, 0x62, 0x4c, 0xaf, 0xdb, 0xeb, 0xf7, 0xb7, 0x29, 0xaf, 0x8d, 0xe7, 0x1d, 0xda, - 0xec, 0xc3, 0xb7, 0x30, 0x3a, 0xff, 0x49, 0x64, 0x71, 0xc6, 0x74, 0xdc, 0x2a, 0x89, 0x98, 0xd3, - 0x7a, 0x3c, 0xef, 0xd0, 0x21, 0xfb, 0x9b, 0x98, 0x0d, 0xc1, 0x90, 0x29, 0xd9, 0x8e, 0x67, 0xfc, - 0x38, 0x1b, 0x7e, 0x31, 0xdc, 0x17, 0xaf, 0x1b, 0xf1, 0x4a, 0x93, 0xab, 0x57, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0x1e, 0xc9, 0x99, 0x52, 0xca, 0x02, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_membership_update_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_membership_update_message_proto_goTypes, + DependencyIndexes: file_membership_update_message_proto_depIdxs, + EnumInfos: file_membership_update_message_proto_enumTypes, + MessageInfos: file_membership_update_message_proto_msgTypes, + }.Build() + File_membership_update_message_proto = out.File + file_membership_update_message_proto_rawDesc = nil + file_membership_update_message_proto_goTypes = nil + file_membership_update_message_proto_depIdxs = nil } diff --git a/protocol/protobuf/pairing.pb.go b/protocol/protobuf/pairing.pb.go index 4643c9dd5..936a526a9 100644 --- a/protocol/protobuf/pairing.pb.go +++ b/protocol/protobuf/pairing.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: pairing.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SyncActivityCenterNotification_NotificationType int32 @@ -36,40 +36,61 @@ const ( SyncActivityCenterNotification_ContactVerification SyncActivityCenterNotification_NotificationType = 10 ) -var SyncActivityCenterNotification_NotificationType_name = map[int32]string{ - 0: "NoType", - 1: "NewOneToOne", - 2: "NewPrivateGroupChat", - 3: "Mention", - 4: "Reply", - 5: "ContactRequest", - 6: "CommunityInvitation", - 7: "CommunityRequest", - 8: "CommunityMembershipRequest", - 9: "CommunityKicked", - 10: "ContactVerification", -} +// Enum value maps for SyncActivityCenterNotification_NotificationType. +var ( + SyncActivityCenterNotification_NotificationType_name = map[int32]string{ + 0: "NoType", + 1: "NewOneToOne", + 2: "NewPrivateGroupChat", + 3: "Mention", + 4: "Reply", + 5: "ContactRequest", + 6: "CommunityInvitation", + 7: "CommunityRequest", + 8: "CommunityMembershipRequest", + 9: "CommunityKicked", + 10: "ContactVerification", + } + SyncActivityCenterNotification_NotificationType_value = map[string]int32{ + "NoType": 0, + "NewOneToOne": 1, + "NewPrivateGroupChat": 2, + "Mention": 3, + "Reply": 4, + "ContactRequest": 5, + "CommunityInvitation": 6, + "CommunityRequest": 7, + "CommunityMembershipRequest": 8, + "CommunityKicked": 9, + "ContactVerification": 10, + } +) -var SyncActivityCenterNotification_NotificationType_value = map[string]int32{ - "NoType": 0, - "NewOneToOne": 1, - "NewPrivateGroupChat": 2, - "Mention": 3, - "Reply": 4, - "ContactRequest": 5, - "CommunityInvitation": 6, - "CommunityRequest": 7, - "CommunityMembershipRequest": 8, - "CommunityKicked": 9, - "ContactVerification": 10, +func (x SyncActivityCenterNotification_NotificationType) Enum() *SyncActivityCenterNotification_NotificationType { + p := new(SyncActivityCenterNotification_NotificationType) + *p = x + return p } func (x SyncActivityCenterNotification_NotificationType) String() string { - return proto.EnumName(SyncActivityCenterNotification_NotificationType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncActivityCenterNotification_NotificationType) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[0].Descriptor() +} + +func (SyncActivityCenterNotification_NotificationType) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[0] +} + +func (x SyncActivityCenterNotification_NotificationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncActivityCenterNotification_NotificationType.Descriptor instead. func (SyncActivityCenterNotification_NotificationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20, 0} + return file_pairing_proto_rawDescGZIP(), []int{18, 0} } type SyncActivityCenterNotification_MembershipStatus int32 @@ -81,26 +102,47 @@ const ( SyncActivityCenterNotification_MembershipStatusDeclined SyncActivityCenterNotification_MembershipStatus = 3 ) -var SyncActivityCenterNotification_MembershipStatus_name = map[int32]string{ - 0: "MembershipStatusIdle", - 1: "MembershipStatusPending", - 2: "MembershipStatusAccepted", - 3: "MembershipStatusDeclined", -} +// Enum value maps for SyncActivityCenterNotification_MembershipStatus. +var ( + SyncActivityCenterNotification_MembershipStatus_name = map[int32]string{ + 0: "MembershipStatusIdle", + 1: "MembershipStatusPending", + 2: "MembershipStatusAccepted", + 3: "MembershipStatusDeclined", + } + SyncActivityCenterNotification_MembershipStatus_value = map[string]int32{ + "MembershipStatusIdle": 0, + "MembershipStatusPending": 1, + "MembershipStatusAccepted": 2, + "MembershipStatusDeclined": 3, + } +) -var SyncActivityCenterNotification_MembershipStatus_value = map[string]int32{ - "MembershipStatusIdle": 0, - "MembershipStatusPending": 1, - "MembershipStatusAccepted": 2, - "MembershipStatusDeclined": 3, +func (x SyncActivityCenterNotification_MembershipStatus) Enum() *SyncActivityCenterNotification_MembershipStatus { + p := new(SyncActivityCenterNotification_MembershipStatus) + *p = x + return p } func (x SyncActivityCenterNotification_MembershipStatus) String() string { - return proto.EnumName(SyncActivityCenterNotification_MembershipStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncActivityCenterNotification_MembershipStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[1].Descriptor() +} + +func (SyncActivityCenterNotification_MembershipStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[1] +} + +func (x SyncActivityCenterNotification_MembershipStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncActivityCenterNotification_MembershipStatus.Descriptor instead. func (SyncActivityCenterNotification_MembershipStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20, 1} + return file_pairing_proto_rawDescGZIP(), []int{18, 1} } type SyncActivityCenterNotification_ContactVerificationStatus int32 @@ -115,32 +157,53 @@ const ( SyncActivityCenterNotification_UnTrustWorthy SyncActivityCenterNotification_ContactVerificationStatus = 6 ) -var SyncActivityCenterNotification_ContactVerificationStatus_name = map[int32]string{ - 0: "Unknown", - 1: "Pending", - 2: "Accepted", - 3: "Declined", - 4: "Cancelled", - 5: "Trusted", - 6: "UnTrustWorthy", -} +// Enum value maps for SyncActivityCenterNotification_ContactVerificationStatus. +var ( + SyncActivityCenterNotification_ContactVerificationStatus_name = map[int32]string{ + 0: "Unknown", + 1: "Pending", + 2: "Accepted", + 3: "Declined", + 4: "Cancelled", + 5: "Trusted", + 6: "UnTrustWorthy", + } + SyncActivityCenterNotification_ContactVerificationStatus_value = map[string]int32{ + "Unknown": 0, + "Pending": 1, + "Accepted": 2, + "Declined": 3, + "Cancelled": 4, + "Trusted": 5, + "UnTrustWorthy": 6, + } +) -var SyncActivityCenterNotification_ContactVerificationStatus_value = map[string]int32{ - "Unknown": 0, - "Pending": 1, - "Accepted": 2, - "Declined": 3, - "Cancelled": 4, - "Trusted": 5, - "UnTrustWorthy": 6, +func (x SyncActivityCenterNotification_ContactVerificationStatus) Enum() *SyncActivityCenterNotification_ContactVerificationStatus { + p := new(SyncActivityCenterNotification_ContactVerificationStatus) + *p = x + return p } func (x SyncActivityCenterNotification_ContactVerificationStatus) String() string { - return proto.EnumName(SyncActivityCenterNotification_ContactVerificationStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncActivityCenterNotification_ContactVerificationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[2].Descriptor() +} + +func (SyncActivityCenterNotification_ContactVerificationStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[2] +} + +func (x SyncActivityCenterNotification_ContactVerificationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncActivityCenterNotification_ContactVerificationStatus.Descriptor instead. func (SyncActivityCenterNotification_ContactVerificationStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20, 2} + return file_pairing_proto_rawDescGZIP(), []int{18, 2} } type SyncTrustedUser_TrustStatus int32 @@ -151,24 +214,45 @@ const ( SyncTrustedUser_UNTRUSTWORTHY SyncTrustedUser_TrustStatus = 2 ) -var SyncTrustedUser_TrustStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "TRUSTED", - 2: "UNTRUSTWORTHY", -} +// Enum value maps for SyncTrustedUser_TrustStatus. +var ( + SyncTrustedUser_TrustStatus_name = map[int32]string{ + 0: "UNKNOWN", + 1: "TRUSTED", + 2: "UNTRUSTWORTHY", + } + SyncTrustedUser_TrustStatus_value = map[string]int32{ + "UNKNOWN": 0, + "TRUSTED": 1, + "UNTRUSTWORTHY": 2, + } +) -var SyncTrustedUser_TrustStatus_value = map[string]int32{ - "UNKNOWN": 0, - "TRUSTED": 1, - "UNTRUSTWORTHY": 2, +func (x SyncTrustedUser_TrustStatus) Enum() *SyncTrustedUser_TrustStatus { + p := new(SyncTrustedUser_TrustStatus) + *p = x + return p } func (x SyncTrustedUser_TrustStatus) String() string { - return proto.EnumName(SyncTrustedUser_TrustStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncTrustedUser_TrustStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[3].Descriptor() +} + +func (SyncTrustedUser_TrustStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[3] +} + +func (x SyncTrustedUser_TrustStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncTrustedUser_TrustStatus.Descriptor instead. func (SyncTrustedUser_TrustStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{31, 0} + return file_pairing_proto_rawDescGZIP(), []int{29, 0} } type SyncVerificationRequest_VerificationStatus int32 @@ -181,28 +265,49 @@ const ( SyncVerificationRequest_CANCELED SyncVerificationRequest_VerificationStatus = 4 ) -var SyncVerificationRequest_VerificationStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING", - 2: "ACCEPTED", - 3: "DECLINED", - 4: "CANCELED", -} +// Enum value maps for SyncVerificationRequest_VerificationStatus. +var ( + SyncVerificationRequest_VerificationStatus_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PENDING", + 2: "ACCEPTED", + 3: "DECLINED", + 4: "CANCELED", + } + SyncVerificationRequest_VerificationStatus_value = map[string]int32{ + "UNKNOWN": 0, + "PENDING": 1, + "ACCEPTED": 2, + "DECLINED": 3, + "CANCELED": 4, + } +) -var SyncVerificationRequest_VerificationStatus_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING": 1, - "ACCEPTED": 2, - "DECLINED": 3, - "CANCELED": 4, +func (x SyncVerificationRequest_VerificationStatus) Enum() *SyncVerificationRequest_VerificationStatus { + p := new(SyncVerificationRequest_VerificationStatus) + *p = x + return p } func (x SyncVerificationRequest_VerificationStatus) String() string { - return proto.EnumName(SyncVerificationRequest_VerificationStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncVerificationRequest_VerificationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[4].Descriptor() +} + +func (SyncVerificationRequest_VerificationStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[4] +} + +func (x SyncVerificationRequest_VerificationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncVerificationRequest_VerificationStatus.Descriptor instead. func (SyncVerificationRequest_VerificationStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{32, 0} + return file_pairing_proto_rawDescGZIP(), []int{30, 0} } type SyncContactRequestDecision_DecisionStatus int32 @@ -212,78 +317,111 @@ const ( SyncContactRequestDecision_DECLINED SyncContactRequestDecision_DecisionStatus = 1 ) -var SyncContactRequestDecision_DecisionStatus_name = map[int32]string{ - 0: "ACCEPTED", - 1: "DECLINED", -} +// Enum value maps for SyncContactRequestDecision_DecisionStatus. +var ( + SyncContactRequestDecision_DecisionStatus_name = map[int32]string{ + 0: "ACCEPTED", + 1: "DECLINED", + } + SyncContactRequestDecision_DecisionStatus_value = map[string]int32{ + "ACCEPTED": 0, + "DECLINED": 1, + } +) -var SyncContactRequestDecision_DecisionStatus_value = map[string]int32{ - "ACCEPTED": 0, - "DECLINED": 1, +func (x SyncContactRequestDecision_DecisionStatus) Enum() *SyncContactRequestDecision_DecisionStatus { + p := new(SyncContactRequestDecision_DecisionStatus) + *p = x + return p } func (x SyncContactRequestDecision_DecisionStatus) String() string { - return proto.EnumName(SyncContactRequestDecision_DecisionStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncContactRequestDecision_DecisionStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[5].Descriptor() +} + +func (SyncContactRequestDecision_DecisionStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[5] +} + +func (x SyncContactRequestDecision_DecisionStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncContactRequestDecision_DecisionStatus.Descriptor instead. func (SyncContactRequestDecision_DecisionStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{33, 0} + return file_pairing_proto_rawDescGZIP(), []int{31, 0} } // `FetchingBackedUpDataDetails` is used to describe how many messages a single backup data structure consists of type FetchingBackedUpDataDetails struct { - DataNumber uint32 `protobuf:"varint,1,opt,name=data_number,json=dataNumber,proto3" json:"data_number,omitempty"` - TotalNumber uint32 `protobuf:"varint,2,opt,name=total_number,json=totalNumber,proto3" json:"total_number,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataNumber uint32 `protobuf:"varint,1,opt,name=data_number,json=dataNumber,proto3" json:"data_number,omitempty"` + TotalNumber uint32 `protobuf:"varint,2,opt,name=total_number,json=totalNumber,proto3" json:"total_number,omitempty"` } -func (m *FetchingBackedUpDataDetails) Reset() { *m = FetchingBackedUpDataDetails{} } -func (m *FetchingBackedUpDataDetails) String() string { return proto.CompactTextString(m) } -func (*FetchingBackedUpDataDetails) ProtoMessage() {} +func (x *FetchingBackedUpDataDetails) Reset() { + *x = FetchingBackedUpDataDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FetchingBackedUpDataDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchingBackedUpDataDetails) ProtoMessage() {} + +func (x *FetchingBackedUpDataDetails) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FetchingBackedUpDataDetails.ProtoReflect.Descriptor instead. func (*FetchingBackedUpDataDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{0} + return file_pairing_proto_rawDescGZIP(), []int{0} } -func (m *FetchingBackedUpDataDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FetchingBackedUpDataDetails.Unmarshal(m, b) -} -func (m *FetchingBackedUpDataDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FetchingBackedUpDataDetails.Marshal(b, m, deterministic) -} -func (m *FetchingBackedUpDataDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_FetchingBackedUpDataDetails.Merge(m, src) -} -func (m *FetchingBackedUpDataDetails) XXX_Size() int { - return xxx_messageInfo_FetchingBackedUpDataDetails.Size(m) -} -func (m *FetchingBackedUpDataDetails) XXX_DiscardUnknown() { - xxx_messageInfo_FetchingBackedUpDataDetails.DiscardUnknown(m) -} - -var xxx_messageInfo_FetchingBackedUpDataDetails proto.InternalMessageInfo - -func (m *FetchingBackedUpDataDetails) GetDataNumber() uint32 { - if m != nil { - return m.DataNumber +func (x *FetchingBackedUpDataDetails) GetDataNumber() uint32 { + if x != nil { + return x.DataNumber } return 0 } -func (m *FetchingBackedUpDataDetails) GetTotalNumber() uint32 { - if m != nil { - return m.TotalNumber +func (x *FetchingBackedUpDataDetails) GetTotalNumber() uint32 { + if x != nil { + return x.TotalNumber } return 0 } type Backup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // this is what we already had Contacts []*SyncInstallationContactV2 `protobuf:"bytes,3,rep,name=contacts,proto3" json:"contacts,omitempty"` - Communities []*SyncCommunity `protobuf:"bytes,4,rep,name=communities,proto3" json:"communities,omitempty"` + Communities []*SyncInstallationCommunity `protobuf:"bytes,4,rep,name=communities,proto3" json:"communities,omitempty"` // newly added details to be backed up to and fetched from waku ContactsDetails *FetchingBackedUpDataDetails `protobuf:"bytes,5,opt,name=contactsDetails,proto3" json:"contactsDetails,omitempty"` CommunitiesDetails *FetchingBackedUpDataDetails `protobuf:"bytes,6,opt,name=communitiesDetails,proto3" json:"communitiesDetails,omitempty"` @@ -295,135 +433,143 @@ type Backup struct { KeypairDetails *FetchingBackedUpDataDetails `protobuf:"bytes,12,opt,name=keypairDetails,proto3" json:"keypairDetails,omitempty"` WatchOnlyAccount *SyncAccount `protobuf:"bytes,13,opt,name=watchOnlyAccount,proto3" json:"watchOnlyAccount,omitempty"` WatchOnlyAccountDetails *FetchingBackedUpDataDetails `protobuf:"bytes,14,opt,name=watchOnlyAccountDetails,proto3" json:"watchOnlyAccountDetails,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Backup) Reset() { *m = Backup{} } -func (m *Backup) String() string { return proto.CompactTextString(m) } -func (*Backup) ProtoMessage() {} +func (x *Backup) Reset() { + *x = Backup{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Backup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Backup) ProtoMessage() {} + +func (x *Backup) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Backup.ProtoReflect.Descriptor instead. func (*Backup) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{1} + return file_pairing_proto_rawDescGZIP(), []int{1} } -func (m *Backup) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Backup.Unmarshal(m, b) -} -func (m *Backup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Backup.Marshal(b, m, deterministic) -} -func (m *Backup) XXX_Merge(src proto.Message) { - xxx_messageInfo_Backup.Merge(m, src) -} -func (m *Backup) XXX_Size() int { - return xxx_messageInfo_Backup.Size(m) -} -func (m *Backup) XXX_DiscardUnknown() { - xxx_messageInfo_Backup.DiscardUnknown(m) -} - -var xxx_messageInfo_Backup proto.InternalMessageInfo - -func (m *Backup) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *Backup) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *Backup) GetId() string { - if m != nil { - return m.Id +func (x *Backup) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Backup) GetContacts() []*SyncInstallationContactV2 { - if m != nil { - return m.Contacts +func (x *Backup) GetContacts() []*SyncInstallationContactV2 { + if x != nil { + return x.Contacts } return nil } -func (m *Backup) GetCommunities() []*SyncCommunity { - if m != nil { - return m.Communities +func (x *Backup) GetCommunities() []*SyncInstallationCommunity { + if x != nil { + return x.Communities } return nil } -func (m *Backup) GetContactsDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.ContactsDetails +func (x *Backup) GetContactsDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.ContactsDetails } return nil } -func (m *Backup) GetCommunitiesDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.CommunitiesDetails +func (x *Backup) GetCommunitiesDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.CommunitiesDetails } return nil } -func (m *Backup) GetProfile() *BackedUpProfile { - if m != nil { - return m.Profile +func (x *Backup) GetProfile() *BackedUpProfile { + if x != nil { + return x.Profile } return nil } -func (m *Backup) GetProfileDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.ProfileDetails +func (x *Backup) GetProfileDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.ProfileDetails } return nil } -func (m *Backup) GetSetting() *SyncSetting { - if m != nil { - return m.Setting +func (x *Backup) GetSetting() *SyncSetting { + if x != nil { + return x.Setting } return nil } -func (m *Backup) GetSettingsDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.SettingsDetails +func (x *Backup) GetSettingsDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.SettingsDetails } return nil } -func (m *Backup) GetKeypair() *SyncKeypair { - if m != nil { - return m.Keypair +func (x *Backup) GetKeypair() *SyncKeypair { + if x != nil { + return x.Keypair } return nil } -func (m *Backup) GetKeypairDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.KeypairDetails +func (x *Backup) GetKeypairDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.KeypairDetails } return nil } -func (m *Backup) GetWatchOnlyAccount() *SyncAccount { - if m != nil { - return m.WatchOnlyAccount +func (x *Backup) GetWatchOnlyAccount() *SyncAccount { + if x != nil { + return x.WatchOnlyAccount } return nil } -func (m *Backup) GetWatchOnlyAccountDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.WatchOnlyAccountDetails +func (x *Backup) GetWatchOnlyAccountDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.WatchOnlyAccountDetails } return nil } type MultiAccount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Identicon string `protobuf:"bytes,3,opt,name=identicon,proto3" json:"identicon,omitempty"` @@ -434,589 +580,353 @@ type MultiAccount struct { Images []*MultiAccount_IdentityImage `protobuf:"bytes,8,rep,name=images,proto3" json:"images,omitempty"` CustomizationColor string `protobuf:"bytes,9,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` CustomizationColorClock uint64 `protobuf:"varint,10,opt,name=customization_color_clock,json=customizationColorClock,proto3" json:"customization_color_clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *MultiAccount) Reset() { *m = MultiAccount{} } -func (m *MultiAccount) String() string { return proto.CompactTextString(m) } -func (*MultiAccount) ProtoMessage() {} +func (x *MultiAccount) Reset() { + *x = MultiAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount) ProtoMessage() {} + +func (x *MultiAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount.ProtoReflect.Descriptor instead. func (*MultiAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2} + return file_pairing_proto_rawDescGZIP(), []int{2} } -func (m *MultiAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount.Unmarshal(m, b) -} -func (m *MultiAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount.Marshal(b, m, deterministic) -} -func (m *MultiAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount.Merge(m, src) -} -func (m *MultiAccount) XXX_Size() int { - return xxx_messageInfo_MultiAccount.Size(m) -} -func (m *MultiAccount) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount proto.InternalMessageInfo - -func (m *MultiAccount) GetName() string { - if m != nil { - return m.Name +func (x *MultiAccount) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MultiAccount) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *MultiAccount) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *MultiAccount) GetIdenticon() string { - if m != nil { - return m.Identicon +func (x *MultiAccount) GetIdenticon() string { + if x != nil { + return x.Identicon } return "" } -func (m *MultiAccount) GetColorHash() []*MultiAccount_ColorHash { - if m != nil { - return m.ColorHash +func (x *MultiAccount) GetColorHash() []*MultiAccount_ColorHash { + if x != nil { + return x.ColorHash } return nil } -func (m *MultiAccount) GetColorId() int64 { - if m != nil { - return m.ColorId +func (x *MultiAccount) GetColorId() int64 { + if x != nil { + return x.ColorId } return 0 } -func (m *MultiAccount) GetKeycardPairing() string { - if m != nil { - return m.KeycardPairing +func (x *MultiAccount) GetKeycardPairing() string { + if x != nil { + return x.KeycardPairing } return "" } -func (m *MultiAccount) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *MultiAccount) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *MultiAccount) GetImages() []*MultiAccount_IdentityImage { - if m != nil { - return m.Images +func (x *MultiAccount) GetImages() []*MultiAccount_IdentityImage { + if x != nil { + return x.Images } return nil } -func (m *MultiAccount) GetCustomizationColor() string { - if m != nil { - return m.CustomizationColor +func (x *MultiAccount) GetCustomizationColor() string { + if x != nil { + return x.CustomizationColor } return "" } -func (m *MultiAccount) GetCustomizationColorClock() uint64 { - if m != nil { - return m.CustomizationColorClock - } - return 0 -} - -type MultiAccount_ColorHash struct { - Index []int64 `protobuf:"varint,1,rep,packed,name=index,proto3" json:"index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MultiAccount_ColorHash) Reset() { *m = MultiAccount_ColorHash{} } -func (m *MultiAccount_ColorHash) String() string { return proto.CompactTextString(m) } -func (*MultiAccount_ColorHash) ProtoMessage() {} -func (*MultiAccount_ColorHash) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2, 0} -} - -func (m *MultiAccount_ColorHash) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount_ColorHash.Unmarshal(m, b) -} -func (m *MultiAccount_ColorHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount_ColorHash.Marshal(b, m, deterministic) -} -func (m *MultiAccount_ColorHash) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount_ColorHash.Merge(m, src) -} -func (m *MultiAccount_ColorHash) XXX_Size() int { - return xxx_messageInfo_MultiAccount_ColorHash.Size(m) -} -func (m *MultiAccount_ColorHash) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount_ColorHash.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount_ColorHash proto.InternalMessageInfo - -func (m *MultiAccount_ColorHash) GetIndex() []int64 { - if m != nil { - return m.Index - } - return nil -} - -type MultiAccount_IdentityImage struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` - Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` - Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` - Filesize int64 `protobuf:"varint,6,opt,name=filesize,proto3" json:"filesize,omitempty"` - ResizeTarget int64 `protobuf:"varint,7,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` - Clock uint64 `protobuf:"varint,8,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MultiAccount_IdentityImage) Reset() { *m = MultiAccount_IdentityImage{} } -func (m *MultiAccount_IdentityImage) String() string { return proto.CompactTextString(m) } -func (*MultiAccount_IdentityImage) ProtoMessage() {} -func (*MultiAccount_IdentityImage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2, 1} -} - -func (m *MultiAccount_IdentityImage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount_IdentityImage.Unmarshal(m, b) -} -func (m *MultiAccount_IdentityImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount_IdentityImage.Marshal(b, m, deterministic) -} -func (m *MultiAccount_IdentityImage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount_IdentityImage.Merge(m, src) -} -func (m *MultiAccount_IdentityImage) XXX_Size() int { - return xxx_messageInfo_MultiAccount_IdentityImage.Size(m) -} -func (m *MultiAccount_IdentityImage) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount_IdentityImage.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount_IdentityImage proto.InternalMessageInfo - -func (m *MultiAccount_IdentityImage) GetKeyUid() string { - if m != nil { - return m.KeyUid - } - return "" -} - -func (m *MultiAccount_IdentityImage) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MultiAccount_IdentityImage) GetPayload() []byte { - if m != nil { - return m.Payload - } - return nil -} - -func (m *MultiAccount_IdentityImage) GetWidth() int64 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetHeight() int64 { - if m != nil { - return m.Height - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetFilesize() int64 { - if m != nil { - return m.Filesize - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetResizeTarget() int64 { - if m != nil { - return m.ResizeTarget - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *MultiAccount) GetCustomizationColorClock() uint64 { + if x != nil { + return x.CustomizationColorClock } return 0 } type LocalPairingPayload struct { - Keys []*LocalPairingPayload_Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - Multiaccount *MultiAccount `protobuf:"bytes,2,opt,name=multiaccount,proto3" json:"multiaccount,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - ChatKey string `protobuf:"bytes,4,opt,name=chatKey,proto3" json:"chatKey,omitempty"` - KeycardPairings string `protobuf:"bytes,5,opt,name=keycardPairings,proto3" json:"keycardPairings,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []*LocalPairingPayload_Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + Multiaccount *MultiAccount `protobuf:"bytes,2,opt,name=multiaccount,proto3" json:"multiaccount,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + ChatKey string `protobuf:"bytes,4,opt,name=chatKey,proto3" json:"chatKey,omitempty"` + KeycardPairings string `protobuf:"bytes,5,opt,name=keycardPairings,proto3" json:"keycardPairings,omitempty"` } -func (m *LocalPairingPayload) Reset() { *m = LocalPairingPayload{} } -func (m *LocalPairingPayload) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPayload) ProtoMessage() {} +func (x *LocalPairingPayload) Reset() { + *x = LocalPairingPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPayload) ProtoMessage() {} + +func (x *LocalPairingPayload) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPayload.ProtoReflect.Descriptor instead. func (*LocalPairingPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{3} + return file_pairing_proto_rawDescGZIP(), []int{3} } -func (m *LocalPairingPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPayload.Unmarshal(m, b) -} -func (m *LocalPairingPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPayload.Marshal(b, m, deterministic) -} -func (m *LocalPairingPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPayload.Merge(m, src) -} -func (m *LocalPairingPayload) XXX_Size() int { - return xxx_messageInfo_LocalPairingPayload.Size(m) -} -func (m *LocalPairingPayload) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPayload.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPayload proto.InternalMessageInfo - -func (m *LocalPairingPayload) GetKeys() []*LocalPairingPayload_Key { - if m != nil { - return m.Keys +func (x *LocalPairingPayload) GetKeys() []*LocalPairingPayload_Key { + if x != nil { + return x.Keys } return nil } -func (m *LocalPairingPayload) GetMultiaccount() *MultiAccount { - if m != nil { - return m.Multiaccount +func (x *LocalPairingPayload) GetMultiaccount() *MultiAccount { + if x != nil { + return x.Multiaccount } return nil } -func (m *LocalPairingPayload) GetPassword() string { - if m != nil { - return m.Password +func (x *LocalPairingPayload) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *LocalPairingPayload) GetChatKey() string { - if m != nil { - return m.ChatKey +func (x *LocalPairingPayload) GetChatKey() string { + if x != nil { + return x.ChatKey } return "" } -func (m *LocalPairingPayload) GetKeycardPairings() string { - if m != nil { - return m.KeycardPairings +func (x *LocalPairingPayload) GetKeycardPairings() string { + if x != nil { + return x.KeycardPairings } return "" } -type LocalPairingPayload_Key struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LocalPairingPayload_Key) Reset() { *m = LocalPairingPayload_Key{} } -func (m *LocalPairingPayload_Key) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPayload_Key) ProtoMessage() {} -func (*LocalPairingPayload_Key) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{3, 0} -} - -func (m *LocalPairingPayload_Key) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPayload_Key.Unmarshal(m, b) -} -func (m *LocalPairingPayload_Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPayload_Key.Marshal(b, m, deterministic) -} -func (m *LocalPairingPayload_Key) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPayload_Key.Merge(m, src) -} -func (m *LocalPairingPayload_Key) XXX_Size() int { - return xxx_messageInfo_LocalPairingPayload_Key.Size(m) -} -func (m *LocalPairingPayload_Key) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPayload_Key.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPayload_Key proto.InternalMessageInfo - -func (m *LocalPairingPayload_Key) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LocalPairingPayload_Key) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - type LocalPairingPeerHello struct { - PairingVersion int32 `protobuf:"varint,1,opt,name=pairing_version,json=pairingVersion,proto3" json:"pairing_version,omitempty"` - PeerId []byte `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` - DeviceName string `protobuf:"bytes,3,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"` - DeviceType string `protobuf:"bytes,4,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` - Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PairingVersion int32 `protobuf:"varint,1,opt,name=pairing_version,json=pairingVersion,proto3" json:"pairing_version,omitempty"` + PeerId []byte `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + DeviceName string `protobuf:"bytes,3,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"` + DeviceType string `protobuf:"bytes,4,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` + Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` } -func (m *LocalPairingPeerHello) Reset() { *m = LocalPairingPeerHello{} } -func (m *LocalPairingPeerHello) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPeerHello) ProtoMessage() {} +func (x *LocalPairingPeerHello) Reset() { + *x = LocalPairingPeerHello{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPeerHello) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPeerHello) ProtoMessage() {} + +func (x *LocalPairingPeerHello) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPeerHello.ProtoReflect.Descriptor instead. func (*LocalPairingPeerHello) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{4} + return file_pairing_proto_rawDescGZIP(), []int{4} } -func (m *LocalPairingPeerHello) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPeerHello.Unmarshal(m, b) -} -func (m *LocalPairingPeerHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPeerHello.Marshal(b, m, deterministic) -} -func (m *LocalPairingPeerHello) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPeerHello.Merge(m, src) -} -func (m *LocalPairingPeerHello) XXX_Size() int { - return xxx_messageInfo_LocalPairingPeerHello.Size(m) -} -func (m *LocalPairingPeerHello) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPeerHello.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPeerHello proto.InternalMessageInfo - -func (m *LocalPairingPeerHello) GetPairingVersion() int32 { - if m != nil { - return m.PairingVersion +func (x *LocalPairingPeerHello) GetPairingVersion() int32 { + if x != nil { + return x.PairingVersion } return 0 } -func (m *LocalPairingPeerHello) GetPeerId() []byte { - if m != nil { - return m.PeerId +func (x *LocalPairingPeerHello) GetPeerId() []byte { + if x != nil { + return x.PeerId } return nil } -func (m *LocalPairingPeerHello) GetDeviceName() string { - if m != nil { - return m.DeviceName +func (x *LocalPairingPeerHello) GetDeviceName() string { + if x != nil { + return x.DeviceName } return "" } -func (m *LocalPairingPeerHello) GetDeviceType() string { - if m != nil { - return m.DeviceType +func (x *LocalPairingPeerHello) GetDeviceType() string { + if x != nil { + return x.DeviceType } return "" } -func (m *LocalPairingPeerHello) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *LocalPairingPeerHello) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -type PairInstallation struct { +type SyncPairInstallation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` DeviceType string `protobuf:"bytes,3,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // following fields used for local pairing - Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` } -func (m *PairInstallation) Reset() { *m = PairInstallation{} } -func (m *PairInstallation) String() string { return proto.CompactTextString(m) } -func (*PairInstallation) ProtoMessage() {} -func (*PairInstallation) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{5} +func (x *SyncPairInstallation) Reset() { + *x = SyncPairInstallation{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PairInstallation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PairInstallation.Unmarshal(m, b) -} -func (m *PairInstallation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PairInstallation.Marshal(b, m, deterministic) -} -func (m *PairInstallation) XXX_Merge(src proto.Message) { - xxx_messageInfo_PairInstallation.Merge(m, src) -} -func (m *PairInstallation) XXX_Size() int { - return xxx_messageInfo_PairInstallation.Size(m) -} -func (m *PairInstallation) XXX_DiscardUnknown() { - xxx_messageInfo_PairInstallation.DiscardUnknown(m) +func (x *SyncPairInstallation) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_PairInstallation proto.InternalMessageInfo +func (*SyncPairInstallation) ProtoMessage() {} -func (m *PairInstallation) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncPairInstallation) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncPairInstallation.ProtoReflect.Descriptor instead. +func (*SyncPairInstallation) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{5} +} + +func (x *SyncPairInstallation) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *PairInstallation) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *SyncPairInstallation) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PairInstallation) GetDeviceType() string { - if m != nil { - return m.DeviceType +func (x *SyncPairInstallation) GetDeviceType() string { + if x != nil { + return x.DeviceType } return "" } -func (m *PairInstallation) GetName() string { - if m != nil { - return m.Name +func (x *SyncPairInstallation) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *PairInstallation) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *SyncPairInstallation) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -type SyncInstallationContact struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - ProfileImage string `protobuf:"bytes,3,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` - EnsName string `protobuf:"bytes,4,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - LastUpdated uint64 `protobuf:"varint,5,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` - SystemTags []string `protobuf:"bytes,6,rep,name=system_tags,json=systemTags,proto3" json:"system_tags,omitempty"` - LocalNickname string `protobuf:"bytes,7,opt,name=local_nickname,json=localNickname,proto3" json:"local_nickname,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SyncInstallationContact) Reset() { *m = SyncInstallationContact{} } -func (m *SyncInstallationContact) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationContact) ProtoMessage() {} -func (*SyncInstallationContact) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{6} -} - -func (m *SyncInstallationContact) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationContact.Unmarshal(m, b) -} -func (m *SyncInstallationContact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationContact.Marshal(b, m, deterministic) -} -func (m *SyncInstallationContact) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationContact.Merge(m, src) -} -func (m *SyncInstallationContact) XXX_Size() int { - return xxx_messageInfo_SyncInstallationContact.Size(m) -} -func (m *SyncInstallationContact) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationContact.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationContact proto.InternalMessageInfo - -func (m *SyncInstallationContact) GetClock() uint64 { - if m != nil { - return m.Clock - } - return 0 -} - -func (m *SyncInstallationContact) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *SyncInstallationContact) GetProfileImage() string { - if m != nil { - return m.ProfileImage - } - return "" -} - -func (m *SyncInstallationContact) GetEnsName() string { - if m != nil { - return m.EnsName - } - return "" -} - -func (m *SyncInstallationContact) GetLastUpdated() uint64 { - if m != nil { - return m.LastUpdated - } - return 0 -} - -func (m *SyncInstallationContact) GetSystemTags() []string { - if m != nil { - return m.SystemTags - } - return nil -} - -func (m *SyncInstallationContact) GetLocalNickname() string { - if m != nil { - return m.LocalNickname - } - return "" -} - type SyncInstallationContactV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + LastUpdatedLocally uint64 `protobuf:"varint,1,opt,name=last_updated_locally,json=lastUpdatedLocally,proto3" json:"last_updated_locally,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` ProfileImage string `protobuf:"bytes,3,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` @@ -1036,880 +946,915 @@ type SyncInstallationContactV2 struct { ContactRequestRemoteState int64 `protobuf:"varint,18,opt,name=contact_request_remote_state,json=contactRequestRemoteState,proto3" json:"contact_request_remote_state,omitempty"` ContactRequestRemoteClock int64 `protobuf:"varint,19,opt,name=contact_request_remote_clock,json=contactRequestRemoteClock,proto3" json:"contact_request_remote_clock,omitempty"` DisplayName string `protobuf:"bytes,20,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncInstallationContactV2) Reset() { *m = SyncInstallationContactV2{} } -func (m *SyncInstallationContactV2) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationContactV2) ProtoMessage() {} +func (x *SyncInstallationContactV2) Reset() { + *x = SyncInstallationContactV2{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationContactV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationContactV2) ProtoMessage() {} + +func (x *SyncInstallationContactV2) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationContactV2.ProtoReflect.Descriptor instead. func (*SyncInstallationContactV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{7} + return file_pairing_proto_rawDescGZIP(), []int{6} } -func (m *SyncInstallationContactV2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationContactV2.Unmarshal(m, b) -} -func (m *SyncInstallationContactV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationContactV2.Marshal(b, m, deterministic) -} -func (m *SyncInstallationContactV2) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationContactV2.Merge(m, src) -} -func (m *SyncInstallationContactV2) XXX_Size() int { - return xxx_messageInfo_SyncInstallationContactV2.Size(m) -} -func (m *SyncInstallationContactV2) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationContactV2.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationContactV2 proto.InternalMessageInfo - -func (m *SyncInstallationContactV2) GetLastUpdatedLocally() uint64 { - if m != nil { - return m.LastUpdatedLocally +func (x *SyncInstallationContactV2) GetLastUpdatedLocally() uint64 { + if x != nil { + return x.LastUpdatedLocally } return 0 } -func (m *SyncInstallationContactV2) GetId() string { - if m != nil { - return m.Id +func (x *SyncInstallationContactV2) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SyncInstallationContactV2) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *SyncInstallationContactV2) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *SyncInstallationContactV2) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *SyncInstallationContactV2) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *SyncInstallationContactV2) GetLastUpdated() uint64 { - if m != nil { - return m.LastUpdated +func (x *SyncInstallationContactV2) GetLastUpdated() uint64 { + if x != nil { + return x.LastUpdated } return 0 } -func (m *SyncInstallationContactV2) GetSystemTags() []string { - if m != nil { - return m.SystemTags +func (x *SyncInstallationContactV2) GetSystemTags() []string { + if x != nil { + return x.SystemTags } return nil } -func (m *SyncInstallationContactV2) GetLocalNickname() string { - if m != nil { - return m.LocalNickname +func (x *SyncInstallationContactV2) GetLocalNickname() string { + if x != nil { + return x.LocalNickname } return "" } -func (m *SyncInstallationContactV2) GetAdded() bool { - if m != nil { - return m.Added +func (x *SyncInstallationContactV2) GetAdded() bool { + if x != nil { + return x.Added } return false } -func (m *SyncInstallationContactV2) GetBlocked() bool { - if m != nil { - return m.Blocked +func (x *SyncInstallationContactV2) GetBlocked() bool { + if x != nil { + return x.Blocked } return false } -func (m *SyncInstallationContactV2) GetMuted() bool { - if m != nil { - return m.Muted +func (x *SyncInstallationContactV2) GetMuted() bool { + if x != nil { + return x.Muted } return false } -func (m *SyncInstallationContactV2) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncInstallationContactV2) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncInstallationContactV2) GetHasAddedUs() bool { - if m != nil { - return m.HasAddedUs +func (x *SyncInstallationContactV2) GetHasAddedUs() bool { + if x != nil { + return x.HasAddedUs } return false } -func (m *SyncInstallationContactV2) GetVerificationStatus() int64 { - if m != nil { - return m.VerificationStatus +func (x *SyncInstallationContactV2) GetVerificationStatus() int64 { + if x != nil { + return x.VerificationStatus } return 0 } -func (m *SyncInstallationContactV2) GetTrustStatus() int64 { - if m != nil { - return m.TrustStatus +func (x *SyncInstallationContactV2) GetTrustStatus() int64 { + if x != nil { + return x.TrustStatus } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestLocalState() int64 { - if m != nil { - return m.ContactRequestLocalState +func (x *SyncInstallationContactV2) GetContactRequestLocalState() int64 { + if x != nil { + return x.ContactRequestLocalState } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestLocalClock() int64 { - if m != nil { - return m.ContactRequestLocalClock +func (x *SyncInstallationContactV2) GetContactRequestLocalClock() int64 { + if x != nil { + return x.ContactRequestLocalClock } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestRemoteState() int64 { - if m != nil { - return m.ContactRequestRemoteState +func (x *SyncInstallationContactV2) GetContactRequestRemoteState() int64 { + if x != nil { + return x.ContactRequestRemoteState } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestRemoteClock() int64 { - if m != nil { - return m.ContactRequestRemoteClock +func (x *SyncInstallationContactV2) GetContactRequestRemoteClock() int64 { + if x != nil { + return x.ContactRequestRemoteClock } return 0 } -func (m *SyncInstallationContactV2) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *SyncInstallationContactV2) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } type SyncInstallationAccount struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - ProfileImage string `protobuf:"bytes,2,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` - LastUpdated uint64 `protobuf:"varint,3,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + ProfileImage string `protobuf:"bytes,2,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` + LastUpdated uint64 `protobuf:"varint,3,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` } -func (m *SyncInstallationAccount) Reset() { *m = SyncInstallationAccount{} } -func (m *SyncInstallationAccount) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationAccount) ProtoMessage() {} +func (x *SyncInstallationAccount) Reset() { + *x = SyncInstallationAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationAccount) ProtoMessage() {} + +func (x *SyncInstallationAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationAccount.ProtoReflect.Descriptor instead. func (*SyncInstallationAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{8} + return file_pairing_proto_rawDescGZIP(), []int{7} } -func (m *SyncInstallationAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationAccount.Unmarshal(m, b) -} -func (m *SyncInstallationAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationAccount.Marshal(b, m, deterministic) -} -func (m *SyncInstallationAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationAccount.Merge(m, src) -} -func (m *SyncInstallationAccount) XXX_Size() int { - return xxx_messageInfo_SyncInstallationAccount.Size(m) -} -func (m *SyncInstallationAccount) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationAccount proto.InternalMessageInfo - -func (m *SyncInstallationAccount) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncInstallationAccount) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncInstallationAccount) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *SyncInstallationAccount) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *SyncInstallationAccount) GetLastUpdated() uint64 { - if m != nil { - return m.LastUpdated +func (x *SyncInstallationAccount) GetLastUpdated() uint64 { + if x != nil { + return x.LastUpdated } return 0 } type SyncInstallationPublicChat struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncInstallationPublicChat) Reset() { *m = SyncInstallationPublicChat{} } -func (m *SyncInstallationPublicChat) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationPublicChat) ProtoMessage() {} +func (x *SyncInstallationPublicChat) Reset() { + *x = SyncInstallationPublicChat{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationPublicChat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationPublicChat) ProtoMessage() {} + +func (x *SyncInstallationPublicChat) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationPublicChat.ProtoReflect.Descriptor instead. func (*SyncInstallationPublicChat) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{9} + return file_pairing_proto_rawDescGZIP(), []int{8} } -func (m *SyncInstallationPublicChat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationPublicChat.Unmarshal(m, b) -} -func (m *SyncInstallationPublicChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationPublicChat.Marshal(b, m, deterministic) -} -func (m *SyncInstallationPublicChat) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationPublicChat.Merge(m, src) -} -func (m *SyncInstallationPublicChat) XXX_Size() int { - return xxx_messageInfo_SyncInstallationPublicChat.Size(m) -} -func (m *SyncInstallationPublicChat) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationPublicChat.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationPublicChat proto.InternalMessageInfo - -func (m *SyncInstallationPublicChat) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncInstallationPublicChat) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncInstallationPublicChat) GetId() string { - if m != nil { - return m.Id +func (x *SyncInstallationPublicChat) GetId() string { + if x != nil { + return x.Id } return "" } -type SyncCommunity struct { +type SyncInstallationCommunity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Id []byte `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // Don't sync private_key because we want to have only one control node - PrivateKey []byte `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` // Deprecated: Do not use. - Description []byte `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Joined bool `protobuf:"varint,5,opt,name=joined,proto3" json:"joined,omitempty"` - Verified bool `protobuf:"varint,6,opt,name=verified,proto3" json:"verified,omitempty"` - Muted bool `protobuf:"varint,7,opt,name=muted,proto3" json:"muted,omitempty"` - RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"` - Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"` - Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"` - Spectated bool `protobuf:"varint,11,opt,name=spectated,proto3" json:"spectated,omitempty"` - EncryptionKeys []byte `protobuf:"bytes,12,opt,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // + // Deprecated: Marked as deprecated in pairing.proto. + PrivateKey []byte `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + Description []byte `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Joined bool `protobuf:"varint,5,opt,name=joined,proto3" json:"joined,omitempty"` + Verified bool `protobuf:"varint,6,opt,name=verified,proto3" json:"verified,omitempty"` + Muted bool `protobuf:"varint,7,opt,name=muted,proto3" json:"muted,omitempty"` + RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"` + Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"` + Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"` + Spectated bool `protobuf:"varint,11,opt,name=spectated,proto3" json:"spectated,omitempty"` + EncryptionKeys []byte `protobuf:"bytes,12,opt,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` } -func (m *SyncCommunity) Reset() { *m = SyncCommunity{} } -func (m *SyncCommunity) String() string { return proto.CompactTextString(m) } -func (*SyncCommunity) ProtoMessage() {} -func (*SyncCommunity) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{10} +func (x *SyncInstallationCommunity) Reset() { + *x = SyncInstallationCommunity{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SyncCommunity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunity.Unmarshal(m, b) -} -func (m *SyncCommunity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunity.Marshal(b, m, deterministic) -} -func (m *SyncCommunity) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunity.Merge(m, src) -} -func (m *SyncCommunity) XXX_Size() int { - return xxx_messageInfo_SyncCommunity.Size(m) -} -func (m *SyncCommunity) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunity.DiscardUnknown(m) +func (x *SyncInstallationCommunity) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_SyncCommunity proto.InternalMessageInfo +func (*SyncInstallationCommunity) ProtoMessage() {} -func (m *SyncCommunity) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncInstallationCommunity) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationCommunity.ProtoReflect.Descriptor instead. +func (*SyncInstallationCommunity) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{9} +} + +func (x *SyncInstallationCommunity) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunity) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncInstallationCommunity) GetId() []byte { + if x != nil { + return x.Id } return nil } -// Deprecated: Do not use. -func (m *SyncCommunity) GetPrivateKey() []byte { - if m != nil { - return m.PrivateKey +// Deprecated: Marked as deprecated in pairing.proto. +func (x *SyncInstallationCommunity) GetPrivateKey() []byte { + if x != nil { + return x.PrivateKey } return nil } -func (m *SyncCommunity) GetDescription() []byte { - if m != nil { - return m.Description +func (x *SyncInstallationCommunity) GetDescription() []byte { + if x != nil { + return x.Description } return nil } -func (m *SyncCommunity) GetJoined() bool { - if m != nil { - return m.Joined +func (x *SyncInstallationCommunity) GetJoined() bool { + if x != nil { + return x.Joined } return false } -func (m *SyncCommunity) GetVerified() bool { - if m != nil { - return m.Verified +func (x *SyncInstallationCommunity) GetVerified() bool { + if x != nil { + return x.Verified } return false } -func (m *SyncCommunity) GetMuted() bool { - if m != nil { - return m.Muted +func (x *SyncInstallationCommunity) GetMuted() bool { + if x != nil { + return x.Muted } return false } -func (m *SyncCommunity) GetRequestsToJoin() []*SyncCommunityRequestsToJoin { - if m != nil { - return m.RequestsToJoin +func (x *SyncInstallationCommunity) GetRequestsToJoin() []*SyncCommunityRequestsToJoin { + if x != nil { + return x.RequestsToJoin } return nil } -func (m *SyncCommunity) GetSettings() *SyncCommunitySettings { - if m != nil { - return m.Settings +func (x *SyncInstallationCommunity) GetSettings() *SyncCommunitySettings { + if x != nil { + return x.Settings } return nil } -func (m *SyncCommunity) GetEncrypted() bool { - if m != nil { - return m.Encrypted +func (x *SyncInstallationCommunity) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } -func (m *SyncCommunity) GetSpectated() bool { - if m != nil { - return m.Spectated +func (x *SyncInstallationCommunity) GetSpectated() bool { + if x != nil { + return x.Spectated } return false } -func (m *SyncCommunity) GetEncryptionKeys() []byte { - if m != nil { - return m.EncryptionKeys +func (x *SyncInstallationCommunity) GetEncryptionKeys() []byte { + if x != nil { + return x.EncryptionKeys } return nil } type SyncCommunityRequestsToJoin struct { - Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,4,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,6,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - State uint64 `protobuf:"varint,7,opt,name=state,proto3" json:"state,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,8,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,4,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,6,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + State uint64 `protobuf:"varint,7,opt,name=state,proto3" json:"state,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,8,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *SyncCommunityRequestsToJoin) Reset() { *m = SyncCommunityRequestsToJoin{} } -func (m *SyncCommunityRequestsToJoin) String() string { return proto.CompactTextString(m) } -func (*SyncCommunityRequestsToJoin) ProtoMessage() {} +func (x *SyncCommunityRequestsToJoin) Reset() { + *x = SyncCommunityRequestsToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCommunityRequestsToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCommunityRequestsToJoin) ProtoMessage() {} + +func (x *SyncCommunityRequestsToJoin) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCommunityRequestsToJoin.ProtoReflect.Descriptor instead. func (*SyncCommunityRequestsToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{11} + return file_pairing_proto_rawDescGZIP(), []int{10} } -func (m *SyncCommunityRequestsToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Unmarshal(m, b) -} -func (m *SyncCommunityRequestsToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Marshal(b, m, deterministic) -} -func (m *SyncCommunityRequestsToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunityRequestsToJoin.Merge(m, src) -} -func (m *SyncCommunityRequestsToJoin) XXX_Size() int { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Size(m) -} -func (m *SyncCommunityRequestsToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunityRequestsToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCommunityRequestsToJoin proto.InternalMessageInfo - -func (m *SyncCommunityRequestsToJoin) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncCommunityRequestsToJoin) GetId() []byte { + if x != nil { + return x.Id } return nil } -func (m *SyncCommunityRequestsToJoin) GetPublicKey() string { - if m != nil { - return m.PublicKey +func (x *SyncCommunityRequestsToJoin) GetPublicKey() string { + if x != nil { + return x.PublicKey } return "" } -func (m *SyncCommunityRequestsToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCommunityRequestsToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunityRequestsToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *SyncCommunityRequestsToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *SyncCommunityRequestsToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SyncCommunityRequestsToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SyncCommunityRequestsToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *SyncCommunityRequestsToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *SyncCommunityRequestsToJoin) GetState() uint64 { - if m != nil { - return m.State +func (x *SyncCommunityRequestsToJoin) GetState() uint64 { + if x != nil { + return x.State } return 0 } -func (m *SyncCommunityRequestsToJoin) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts - } - return nil -} - -type SyncInstallation struct { - Contacts []*SyncInstallationContact `protobuf:"bytes,1,rep,name=contacts,proto3" json:"contacts,omitempty"` - PublicChats []*SyncInstallationPublicChat `protobuf:"bytes,2,rep,name=public_chats,json=publicChats,proto3" json:"public_chats,omitempty"` - Account *SyncInstallationAccount `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` - Communities []*SyncCommunity `protobuf:"bytes,4,rep,name=communities,proto3" json:"communities,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SyncInstallation) Reset() { *m = SyncInstallation{} } -func (m *SyncInstallation) String() string { return proto.CompactTextString(m) } -func (*SyncInstallation) ProtoMessage() {} -func (*SyncInstallation) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{12} -} - -func (m *SyncInstallation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallation.Unmarshal(m, b) -} -func (m *SyncInstallation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallation.Marshal(b, m, deterministic) -} -func (m *SyncInstallation) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallation.Merge(m, src) -} -func (m *SyncInstallation) XXX_Size() int { - return xxx_messageInfo_SyncInstallation.Size(m) -} -func (m *SyncInstallation) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallation.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallation proto.InternalMessageInfo - -func (m *SyncInstallation) GetContacts() []*SyncInstallationContact { - if m != nil { - return m.Contacts - } - return nil -} - -func (m *SyncInstallation) GetPublicChats() []*SyncInstallationPublicChat { - if m != nil { - return m.PublicChats - } - return nil -} - -func (m *SyncInstallation) GetAccount() *SyncInstallationAccount { - if m != nil { - return m.Account - } - return nil -} - -func (m *SyncInstallation) GetCommunities() []*SyncCommunity { - if m != nil { - return m.Communities +func (x *SyncCommunityRequestsToJoin) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } type SyncChatRemoved struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncChatRemoved) Reset() { *m = SyncChatRemoved{} } -func (m *SyncChatRemoved) String() string { return proto.CompactTextString(m) } -func (*SyncChatRemoved) ProtoMessage() {} +func (x *SyncChatRemoved) Reset() { + *x = SyncChatRemoved{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncChatRemoved) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncChatRemoved) ProtoMessage() {} + +func (x *SyncChatRemoved) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncChatRemoved.ProtoReflect.Descriptor instead. func (*SyncChatRemoved) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{13} + return file_pairing_proto_rawDescGZIP(), []int{11} } -func (m *SyncChatRemoved) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncChatRemoved.Unmarshal(m, b) -} -func (m *SyncChatRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncChatRemoved.Marshal(b, m, deterministic) -} -func (m *SyncChatRemoved) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncChatRemoved.Merge(m, src) -} -func (m *SyncChatRemoved) XXX_Size() int { - return xxx_messageInfo_SyncChatRemoved.Size(m) -} -func (m *SyncChatRemoved) XXX_DiscardUnknown() { - xxx_messageInfo_SyncChatRemoved.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncChatRemoved proto.InternalMessageInfo - -func (m *SyncChatRemoved) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncChatRemoved) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncChatRemoved) GetId() string { - if m != nil { - return m.Id +func (x *SyncChatRemoved) GetId() string { + if x != nil { + return x.Id } return "" } type SyncChatMessagesRead struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncChatMessagesRead) Reset() { *m = SyncChatMessagesRead{} } -func (m *SyncChatMessagesRead) String() string { return proto.CompactTextString(m) } -func (*SyncChatMessagesRead) ProtoMessage() {} +func (x *SyncChatMessagesRead) Reset() { + *x = SyncChatMessagesRead{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncChatMessagesRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncChatMessagesRead) ProtoMessage() {} + +func (x *SyncChatMessagesRead) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncChatMessagesRead.ProtoReflect.Descriptor instead. func (*SyncChatMessagesRead) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{14} + return file_pairing_proto_rawDescGZIP(), []int{12} } -func (m *SyncChatMessagesRead) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncChatMessagesRead.Unmarshal(m, b) -} -func (m *SyncChatMessagesRead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncChatMessagesRead.Marshal(b, m, deterministic) -} -func (m *SyncChatMessagesRead) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncChatMessagesRead.Merge(m, src) -} -func (m *SyncChatMessagesRead) XXX_Size() int { - return xxx_messageInfo_SyncChatMessagesRead.Size(m) -} -func (m *SyncChatMessagesRead) XXX_DiscardUnknown() { - xxx_messageInfo_SyncChatMessagesRead.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncChatMessagesRead proto.InternalMessageInfo - -func (m *SyncChatMessagesRead) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncChatMessagesRead) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncChatMessagesRead) GetId() string { - if m != nil { - return m.Id +func (x *SyncChatMessagesRead) GetId() string { + if x != nil { + return x.Id } return "" } type SyncActivityCenterRead struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterRead) Reset() { *m = SyncActivityCenterRead{} } -func (m *SyncActivityCenterRead) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterRead) ProtoMessage() {} +func (x *SyncActivityCenterRead) Reset() { + *x = SyncActivityCenterRead{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterRead) ProtoMessage() {} + +func (x *SyncActivityCenterRead) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterRead.ProtoReflect.Descriptor instead. func (*SyncActivityCenterRead) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{15} + return file_pairing_proto_rawDescGZIP(), []int{13} } -func (m *SyncActivityCenterRead) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterRead.Unmarshal(m, b) -} -func (m *SyncActivityCenterRead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterRead.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterRead) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterRead.Merge(m, src) -} -func (m *SyncActivityCenterRead) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterRead.Size(m) -} -func (m *SyncActivityCenterRead) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterRead.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterRead proto.InternalMessageInfo - -func (m *SyncActivityCenterRead) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterRead) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterRead) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterRead) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterAccepted struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterAccepted) Reset() { *m = SyncActivityCenterAccepted{} } -func (m *SyncActivityCenterAccepted) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterAccepted) ProtoMessage() {} +func (x *SyncActivityCenterAccepted) Reset() { + *x = SyncActivityCenterAccepted{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterAccepted) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterAccepted) ProtoMessage() {} + +func (x *SyncActivityCenterAccepted) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterAccepted.ProtoReflect.Descriptor instead. func (*SyncActivityCenterAccepted) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{16} + return file_pairing_proto_rawDescGZIP(), []int{14} } -func (m *SyncActivityCenterAccepted) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterAccepted.Unmarshal(m, b) -} -func (m *SyncActivityCenterAccepted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterAccepted.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterAccepted) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterAccepted.Merge(m, src) -} -func (m *SyncActivityCenterAccepted) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterAccepted.Size(m) -} -func (m *SyncActivityCenterAccepted) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterAccepted.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterAccepted proto.InternalMessageInfo - -func (m *SyncActivityCenterAccepted) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterAccepted) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterAccepted) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterAccepted) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterDismissed struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterDismissed) Reset() { *m = SyncActivityCenterDismissed{} } -func (m *SyncActivityCenterDismissed) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterDismissed) ProtoMessage() {} +func (x *SyncActivityCenterDismissed) Reset() { + *x = SyncActivityCenterDismissed{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterDismissed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterDismissed) ProtoMessage() {} + +func (x *SyncActivityCenterDismissed) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterDismissed.ProtoReflect.Descriptor instead. func (*SyncActivityCenterDismissed) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{17} + return file_pairing_proto_rawDescGZIP(), []int{15} } -func (m *SyncActivityCenterDismissed) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterDismissed.Unmarshal(m, b) -} -func (m *SyncActivityCenterDismissed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterDismissed.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterDismissed) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterDismissed.Merge(m, src) -} -func (m *SyncActivityCenterDismissed) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterDismissed.Size(m) -} -func (m *SyncActivityCenterDismissed) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterDismissed.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterDismissed proto.InternalMessageInfo - -func (m *SyncActivityCenterDismissed) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterDismissed) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterDismissed) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterDismissed) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterNotificationState struct { - UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - HasSeen bool `protobuf:"varint,2,opt,name=has_seen,json=hasSeen,proto3" json:"has_seen,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + HasSeen bool `protobuf:"varint,2,opt,name=has_seen,json=hasSeen,proto3" json:"has_seen,omitempty"` } -func (m *SyncActivityCenterNotificationState) Reset() { *m = SyncActivityCenterNotificationState{} } -func (m *SyncActivityCenterNotificationState) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterNotificationState) ProtoMessage() {} +func (x *SyncActivityCenterNotificationState) Reset() { + *x = SyncActivityCenterNotificationState{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterNotificationState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterNotificationState) ProtoMessage() {} + +func (x *SyncActivityCenterNotificationState) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterNotificationState.ProtoReflect.Descriptor instead. func (*SyncActivityCenterNotificationState) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{18} + return file_pairing_proto_rawDescGZIP(), []int{16} } -func (m *SyncActivityCenterNotificationState) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterNotificationState.Unmarshal(m, b) -} -func (m *SyncActivityCenterNotificationState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterNotificationState.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterNotificationState) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterNotificationState.Merge(m, src) -} -func (m *SyncActivityCenterNotificationState) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterNotificationState.Size(m) -} -func (m *SyncActivityCenterNotificationState) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterNotificationState.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterNotificationState proto.InternalMessageInfo - -func (m *SyncActivityCenterNotificationState) GetUpdatedAt() uint64 { - if m != nil { - return m.UpdatedAt +func (x *SyncActivityCenterNotificationState) GetUpdatedAt() uint64 { + if x != nil { + return x.UpdatedAt } return 0 } -func (m *SyncActivityCenterNotificationState) GetHasSeen() bool { - if m != nil { - return m.HasSeen +func (x *SyncActivityCenterNotificationState) GetHasSeen() bool { + if x != nil { + return x.HasSeen } return false } type SyncActivityCenterNotifications struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ActivityCenterNotifications []*SyncActivityCenterNotification `protobuf:"bytes,1,rep,name=activity_center_notifications,json=activityCenterNotifications,proto3" json:"activity_center_notifications,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncActivityCenterNotifications) Reset() { *m = SyncActivityCenterNotifications{} } -func (m *SyncActivityCenterNotifications) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterNotifications) ProtoMessage() {} +func (x *SyncActivityCenterNotifications) Reset() { + *x = SyncActivityCenterNotifications{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterNotifications) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterNotifications) ProtoMessage() {} + +func (x *SyncActivityCenterNotifications) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterNotifications.ProtoReflect.Descriptor instead. func (*SyncActivityCenterNotifications) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{19} + return file_pairing_proto_rawDescGZIP(), []int{17} } -func (m *SyncActivityCenterNotifications) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterNotifications.Unmarshal(m, b) -} -func (m *SyncActivityCenterNotifications) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterNotifications.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterNotifications) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterNotifications.Merge(m, src) -} -func (m *SyncActivityCenterNotifications) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterNotifications.Size(m) -} -func (m *SyncActivityCenterNotifications) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterNotifications.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterNotifications proto.InternalMessageInfo - -func (m *SyncActivityCenterNotifications) GetActivityCenterNotifications() []*SyncActivityCenterNotification { - if m != nil { - return m.ActivityCenterNotifications +func (x *SyncActivityCenterNotifications) GetActivityCenterNotifications() []*SyncActivityCenterNotification { + if x != nil { + return x.ActivityCenterNotifications } return nil } type SyncActivityCenterNotification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` NotificationType SyncActivityCenterNotification_NotificationType `protobuf:"varint,3,opt,name=notification_type,json=notificationType,proto3,enum=protobuf.SyncActivityCenterNotification_NotificationType" json:"notification_type,omitempty"` @@ -1925,624 +1870,680 @@ type SyncActivityCenterNotification struct { ContactVerificationStatus SyncActivityCenterNotification_ContactVerificationStatus `protobuf:"varint,13,opt,name=contact_verification_status,json=contactVerificationStatus,proto3,enum=protobuf.SyncActivityCenterNotification_ContactVerificationStatus" json:"contact_verification_status,omitempty"` Deleted bool `protobuf:"varint,14,opt,name=deleted,proto3" json:"deleted,omitempty"` UpdatedAt uint64 `protobuf:"varint,15,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncActivityCenterNotification) Reset() { *m = SyncActivityCenterNotification{} } -func (m *SyncActivityCenterNotification) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterNotification) ProtoMessage() {} +func (x *SyncActivityCenterNotification) Reset() { + *x = SyncActivityCenterNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterNotification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterNotification) ProtoMessage() {} + +func (x *SyncActivityCenterNotification) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterNotification.ProtoReflect.Descriptor instead. func (*SyncActivityCenterNotification) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20} + return file_pairing_proto_rawDescGZIP(), []int{18} } -func (m *SyncActivityCenterNotification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterNotification.Unmarshal(m, b) -} -func (m *SyncActivityCenterNotification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterNotification.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterNotification) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterNotification.Merge(m, src) -} -func (m *SyncActivityCenterNotification) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterNotification.Size(m) -} -func (m *SyncActivityCenterNotification) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterNotification.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterNotification proto.InternalMessageInfo - -func (m *SyncActivityCenterNotification) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncActivityCenterNotification) GetId() []byte { + if x != nil { + return x.Id } return nil } -func (m *SyncActivityCenterNotification) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *SyncActivityCenterNotification) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *SyncActivityCenterNotification) GetNotificationType() SyncActivityCenterNotification_NotificationType { - if m != nil { - return m.NotificationType +func (x *SyncActivityCenterNotification) GetNotificationType() SyncActivityCenterNotification_NotificationType { + if x != nil { + return x.NotificationType } return SyncActivityCenterNotification_NoType } -func (m *SyncActivityCenterNotification) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SyncActivityCenterNotification) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SyncActivityCenterNotification) GetRead() bool { - if m != nil { - return m.Read +func (x *SyncActivityCenterNotification) GetRead() bool { + if x != nil { + return x.Read } return false } -func (m *SyncActivityCenterNotification) GetDismissed() bool { - if m != nil { - return m.Dismissed +func (x *SyncActivityCenterNotification) GetDismissed() bool { + if x != nil { + return x.Dismissed } return false } -func (m *SyncActivityCenterNotification) GetAccepted() bool { - if m != nil { - return m.Accepted +func (x *SyncActivityCenterNotification) GetAccepted() bool { + if x != nil { + return x.Accepted } return false } -func (m *SyncActivityCenterNotification) GetMessage() []byte { - if m != nil { - return m.Message +func (x *SyncActivityCenterNotification) GetMessage() []byte { + if x != nil { + return x.Message } return nil } -func (m *SyncActivityCenterNotification) GetAuthor() string { - if m != nil { - return m.Author +func (x *SyncActivityCenterNotification) GetAuthor() string { + if x != nil { + return x.Author } return "" } -func (m *SyncActivityCenterNotification) GetReplyMessage() []byte { - if m != nil { - return m.ReplyMessage +func (x *SyncActivityCenterNotification) GetReplyMessage() []byte { + if x != nil { + return x.ReplyMessage } return nil } -func (m *SyncActivityCenterNotification) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *SyncActivityCenterNotification) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *SyncActivityCenterNotification) GetMembershipStatus() SyncActivityCenterNotification_MembershipStatus { - if m != nil { - return m.MembershipStatus +func (x *SyncActivityCenterNotification) GetMembershipStatus() SyncActivityCenterNotification_MembershipStatus { + if x != nil { + return x.MembershipStatus } return SyncActivityCenterNotification_MembershipStatusIdle } -func (m *SyncActivityCenterNotification) GetContactVerificationStatus() SyncActivityCenterNotification_ContactVerificationStatus { - if m != nil { - return m.ContactVerificationStatus +func (x *SyncActivityCenterNotification) GetContactVerificationStatus() SyncActivityCenterNotification_ContactVerificationStatus { + if x != nil { + return x.ContactVerificationStatus } return SyncActivityCenterNotification_Unknown } -func (m *SyncActivityCenterNotification) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SyncActivityCenterNotification) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } -func (m *SyncActivityCenterNotification) GetUpdatedAt() uint64 { - if m != nil { - return m.UpdatedAt +func (x *SyncActivityCenterNotification) GetUpdatedAt() uint64 { + if x != nil { + return x.UpdatedAt } return 0 } type SyncBookmark struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` - Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` - DeletedAt uint64 `protobuf:"varint,6,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` + DeletedAt uint64 `protobuf:"varint,6,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` } -func (m *SyncBookmark) Reset() { *m = SyncBookmark{} } -func (m *SyncBookmark) String() string { return proto.CompactTextString(m) } -func (*SyncBookmark) ProtoMessage() {} +func (x *SyncBookmark) Reset() { + *x = SyncBookmark{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncBookmark) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncBookmark) ProtoMessage() {} + +func (x *SyncBookmark) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncBookmark.ProtoReflect.Descriptor instead. func (*SyncBookmark) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{21} + return file_pairing_proto_rawDescGZIP(), []int{19} } -func (m *SyncBookmark) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncBookmark.Unmarshal(m, b) -} -func (m *SyncBookmark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncBookmark.Marshal(b, m, deterministic) -} -func (m *SyncBookmark) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncBookmark.Merge(m, src) -} -func (m *SyncBookmark) XXX_Size() int { - return xxx_messageInfo_SyncBookmark.Size(m) -} -func (m *SyncBookmark) XXX_DiscardUnknown() { - xxx_messageInfo_SyncBookmark.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncBookmark proto.InternalMessageInfo - -func (m *SyncBookmark) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncBookmark) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncBookmark) GetUrl() string { - if m != nil { - return m.Url +func (x *SyncBookmark) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *SyncBookmark) GetName() string { - if m != nil { - return m.Name +func (x *SyncBookmark) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncBookmark) GetImageUrl() string { - if m != nil { - return m.ImageUrl +func (x *SyncBookmark) GetImageUrl() string { + if x != nil { + return x.ImageUrl } return "" } -func (m *SyncBookmark) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncBookmark) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncBookmark) GetDeletedAt() uint64 { - if m != nil { - return m.DeletedAt +func (x *SyncBookmark) GetDeletedAt() uint64 { + if x != nil { + return x.DeletedAt } return 0 } type SyncEnsUsernameDetail struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - Removed bool `protobuf:"varint,4,opt,name=removed,proto3" json:"removed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Removed bool `protobuf:"varint,4,opt,name=removed,proto3" json:"removed,omitempty"` } -func (m *SyncEnsUsernameDetail) Reset() { *m = SyncEnsUsernameDetail{} } -func (m *SyncEnsUsernameDetail) String() string { return proto.CompactTextString(m) } -func (*SyncEnsUsernameDetail) ProtoMessage() {} +func (x *SyncEnsUsernameDetail) Reset() { + *x = SyncEnsUsernameDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncEnsUsernameDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncEnsUsernameDetail) ProtoMessage() {} + +func (x *SyncEnsUsernameDetail) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncEnsUsernameDetail.ProtoReflect.Descriptor instead. func (*SyncEnsUsernameDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{22} + return file_pairing_proto_rawDescGZIP(), []int{20} } -func (m *SyncEnsUsernameDetail) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncEnsUsernameDetail.Unmarshal(m, b) -} -func (m *SyncEnsUsernameDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncEnsUsernameDetail.Marshal(b, m, deterministic) -} -func (m *SyncEnsUsernameDetail) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncEnsUsernameDetail.Merge(m, src) -} -func (m *SyncEnsUsernameDetail) XXX_Size() int { - return xxx_messageInfo_SyncEnsUsernameDetail.Size(m) -} -func (m *SyncEnsUsernameDetail) XXX_DiscardUnknown() { - xxx_messageInfo_SyncEnsUsernameDetail.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncEnsUsernameDetail proto.InternalMessageInfo - -func (m *SyncEnsUsernameDetail) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncEnsUsernameDetail) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncEnsUsernameDetail) GetUsername() string { - if m != nil { - return m.Username +func (x *SyncEnsUsernameDetail) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *SyncEnsUsernameDetail) GetChainId() uint64 { - if m != nil { - return m.ChainId +func (x *SyncEnsUsernameDetail) GetChainId() uint64 { + if x != nil { + return x.ChainId } return 0 } -func (m *SyncEnsUsernameDetail) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncEnsUsernameDetail) GetRemoved() bool { + if x != nil { + return x.Removed } return false } type SyncClearHistory struct { - ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - ClearedAt uint64 `protobuf:"varint,2,opt,name=cleared_at,json=clearedAt,proto3" json:"cleared_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + ClearedAt uint64 `protobuf:"varint,2,opt,name=cleared_at,json=clearedAt,proto3" json:"cleared_at,omitempty"` } -func (m *SyncClearHistory) Reset() { *m = SyncClearHistory{} } -func (m *SyncClearHistory) String() string { return proto.CompactTextString(m) } -func (*SyncClearHistory) ProtoMessage() {} +func (x *SyncClearHistory) Reset() { + *x = SyncClearHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncClearHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncClearHistory) ProtoMessage() {} + +func (x *SyncClearHistory) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncClearHistory.ProtoReflect.Descriptor instead. func (*SyncClearHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{23} + return file_pairing_proto_rawDescGZIP(), []int{21} } -func (m *SyncClearHistory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncClearHistory.Unmarshal(m, b) -} -func (m *SyncClearHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncClearHistory.Marshal(b, m, deterministic) -} -func (m *SyncClearHistory) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncClearHistory.Merge(m, src) -} -func (m *SyncClearHistory) XXX_Size() int { - return xxx_messageInfo_SyncClearHistory.Size(m) -} -func (m *SyncClearHistory) XXX_DiscardUnknown() { - xxx_messageInfo_SyncClearHistory.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncClearHistory proto.InternalMessageInfo - -func (m *SyncClearHistory) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SyncClearHistory) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SyncClearHistory) GetClearedAt() uint64 { - if m != nil { - return m.ClearedAt +func (x *SyncClearHistory) GetClearedAt() uint64 { + if x != nil { + return x.ClearedAt } return 0 } type SyncProfilePicture struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - Width uint32 `protobuf:"varint,3,opt,name=width,proto3" json:"width,omitempty"` - Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` - FileSize uint32 `protobuf:"varint,5,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` - ResizeTarget uint32 `protobuf:"varint,6,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` - Clock uint64 `protobuf:"varint,7,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Width uint32 `protobuf:"varint,3,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + FileSize uint32 `protobuf:"varint,5,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` + ResizeTarget uint32 `protobuf:"varint,6,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` + Clock uint64 `protobuf:"varint,7,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *SyncProfilePicture) Reset() { *m = SyncProfilePicture{} } -func (m *SyncProfilePicture) String() string { return proto.CompactTextString(m) } -func (*SyncProfilePicture) ProtoMessage() {} +func (x *SyncProfilePicture) Reset() { + *x = SyncProfilePicture{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncProfilePicture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProfilePicture) ProtoMessage() {} + +func (x *SyncProfilePicture) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProfilePicture.ProtoReflect.Descriptor instead. func (*SyncProfilePicture) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{24} + return file_pairing_proto_rawDescGZIP(), []int{22} } -func (m *SyncProfilePicture) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncProfilePicture.Unmarshal(m, b) -} -func (m *SyncProfilePicture) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncProfilePicture.Marshal(b, m, deterministic) -} -func (m *SyncProfilePicture) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncProfilePicture.Merge(m, src) -} -func (m *SyncProfilePicture) XXX_Size() int { - return xxx_messageInfo_SyncProfilePicture.Size(m) -} -func (m *SyncProfilePicture) XXX_DiscardUnknown() { - xxx_messageInfo_SyncProfilePicture.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncProfilePicture proto.InternalMessageInfo - -func (m *SyncProfilePicture) GetName() string { - if m != nil { - return m.Name +func (x *SyncProfilePicture) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncProfilePicture) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *SyncProfilePicture) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *SyncProfilePicture) GetWidth() uint32 { - if m != nil { - return m.Width +func (x *SyncProfilePicture) GetWidth() uint32 { + if x != nil { + return x.Width } return 0 } -func (m *SyncProfilePicture) GetHeight() uint32 { - if m != nil { - return m.Height +func (x *SyncProfilePicture) GetHeight() uint32 { + if x != nil { + return x.Height } return 0 } -func (m *SyncProfilePicture) GetFileSize() uint32 { - if m != nil { - return m.FileSize +func (x *SyncProfilePicture) GetFileSize() uint32 { + if x != nil { + return x.FileSize } return 0 } -func (m *SyncProfilePicture) GetResizeTarget() uint32 { - if m != nil { - return m.ResizeTarget +func (x *SyncProfilePicture) GetResizeTarget() uint32 { + if x != nil { + return x.ResizeTarget } return 0 } -func (m *SyncProfilePicture) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncProfilePicture) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type SyncProfilePictures struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Pictures []*SyncProfilePicture `protobuf:"bytes,2,rep,name=pictures,proto3" json:"pictures,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Pictures []*SyncProfilePicture `protobuf:"bytes,2,rep,name=pictures,proto3" json:"pictures,omitempty"` } -func (m *SyncProfilePictures) Reset() { *m = SyncProfilePictures{} } -func (m *SyncProfilePictures) String() string { return proto.CompactTextString(m) } -func (*SyncProfilePictures) ProtoMessage() {} +func (x *SyncProfilePictures) Reset() { + *x = SyncProfilePictures{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncProfilePictures) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProfilePictures) ProtoMessage() {} + +func (x *SyncProfilePictures) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProfilePictures.ProtoReflect.Descriptor instead. func (*SyncProfilePictures) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{25} + return file_pairing_proto_rawDescGZIP(), []int{23} } -func (m *SyncProfilePictures) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncProfilePictures.Unmarshal(m, b) -} -func (m *SyncProfilePictures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncProfilePictures.Marshal(b, m, deterministic) -} -func (m *SyncProfilePictures) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncProfilePictures.Merge(m, src) -} -func (m *SyncProfilePictures) XXX_Size() int { - return xxx_messageInfo_SyncProfilePictures.Size(m) -} -func (m *SyncProfilePictures) XXX_DiscardUnknown() { - xxx_messageInfo_SyncProfilePictures.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncProfilePictures proto.InternalMessageInfo - -func (m *SyncProfilePictures) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncProfilePictures) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncProfilePictures) GetPictures() []*SyncProfilePicture { - if m != nil { - return m.Pictures +func (x *SyncProfilePictures) GetPictures() []*SyncProfilePicture { + if x != nil { + return x.Pictures } return nil } type SyncAccount struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - ColorId string `protobuf:"bytes,7,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` - Emoji string `protobuf:"bytes,8,opt,name=emoji,proto3" json:"emoji,omitempty"` - Wallet bool `protobuf:"varint,9,opt,name=wallet,proto3" json:"wallet,omitempty"` - Chat bool `protobuf:"varint,10,opt,name=chat,proto3" json:"chat,omitempty"` - Hidden bool `protobuf:"varint,11,opt,name=hidden,proto3" json:"hidden,omitempty"` - Removed bool `protobuf:"varint,12,opt,name=removed,proto3" json:"removed,omitempty"` - Position int64 `protobuf:"varint,13,opt,name=position,proto3" json:"position,omitempty"` - ProdPreferredChainIDs string `protobuf:"bytes,14,opt,name=prodPreferredChainIDs,proto3" json:"prodPreferredChainIDs,omitempty"` - TestPreferredChainIDs string `protobuf:"bytes,15,opt,name=testPreferredChainIDs,proto3" json:"testPreferredChainIDs,omitempty"` - Operable string `protobuf:"bytes,16,opt,name=operable,proto3" json:"operable,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + ColorId string `protobuf:"bytes,7,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` + Emoji string `protobuf:"bytes,8,opt,name=emoji,proto3" json:"emoji,omitempty"` + Wallet bool `protobuf:"varint,9,opt,name=wallet,proto3" json:"wallet,omitempty"` + Chat bool `protobuf:"varint,10,opt,name=chat,proto3" json:"chat,omitempty"` + Hidden bool `protobuf:"varint,11,opt,name=hidden,proto3" json:"hidden,omitempty"` + Removed bool `protobuf:"varint,12,opt,name=removed,proto3" json:"removed,omitempty"` + Position int64 `protobuf:"varint,13,opt,name=position,proto3" json:"position,omitempty"` + ProdPreferredChainIDs string `protobuf:"bytes,14,opt,name=prodPreferredChainIDs,proto3" json:"prodPreferredChainIDs,omitempty"` + TestPreferredChainIDs string `protobuf:"bytes,15,opt,name=testPreferredChainIDs,proto3" json:"testPreferredChainIDs,omitempty"` + Operable string `protobuf:"bytes,16,opt,name=operable,proto3" json:"operable,omitempty"` } -func (m *SyncAccount) Reset() { *m = SyncAccount{} } -func (m *SyncAccount) String() string { return proto.CompactTextString(m) } -func (*SyncAccount) ProtoMessage() {} +func (x *SyncAccount) Reset() { + *x = SyncAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccount) ProtoMessage() {} + +func (x *SyncAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccount.ProtoReflect.Descriptor instead. func (*SyncAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{26} + return file_pairing_proto_rawDescGZIP(), []int{24} } -func (m *SyncAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccount.Unmarshal(m, b) -} -func (m *SyncAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccount.Marshal(b, m, deterministic) -} -func (m *SyncAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccount.Merge(m, src) -} -func (m *SyncAccount) XXX_Size() int { - return xxx_messageInfo_SyncAccount.Size(m) -} -func (m *SyncAccount) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccount proto.InternalMessageInfo - -func (m *SyncAccount) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncAccount) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncAccount) GetAddress() []byte { - if m != nil { - return m.Address +func (x *SyncAccount) GetAddress() []byte { + if x != nil { + return x.Address } return nil } -func (m *SyncAccount) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncAccount) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncAccount) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *SyncAccount) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *SyncAccount) GetPath() string { - if m != nil { - return m.Path +func (x *SyncAccount) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *SyncAccount) GetName() string { - if m != nil { - return m.Name +func (x *SyncAccount) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncAccount) GetColorId() string { - if m != nil { - return m.ColorId +func (x *SyncAccount) GetColorId() string { + if x != nil { + return x.ColorId } return "" } -func (m *SyncAccount) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *SyncAccount) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *SyncAccount) GetWallet() bool { - if m != nil { - return m.Wallet +func (x *SyncAccount) GetWallet() bool { + if x != nil { + return x.Wallet } return false } -func (m *SyncAccount) GetChat() bool { - if m != nil { - return m.Chat +func (x *SyncAccount) GetChat() bool { + if x != nil { + return x.Chat } return false } -func (m *SyncAccount) GetHidden() bool { - if m != nil { - return m.Hidden +func (x *SyncAccount) GetHidden() bool { + if x != nil { + return x.Hidden } return false } -func (m *SyncAccount) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncAccount) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncAccount) GetPosition() int64 { - if m != nil { - return m.Position +func (x *SyncAccount) GetPosition() int64 { + if x != nil { + return x.Position } return 0 } -func (m *SyncAccount) GetProdPreferredChainIDs() string { - if m != nil { - return m.ProdPreferredChainIDs +func (x *SyncAccount) GetProdPreferredChainIDs() string { + if x != nil { + return x.ProdPreferredChainIDs } return "" } -func (m *SyncAccount) GetTestPreferredChainIDs() string { - if m != nil { - return m.TestPreferredChainIDs +func (x *SyncAccount) GetTestPreferredChainIDs() string { + if x != nil { + return x.TestPreferredChainIDs } return "" } -func (m *SyncAccount) GetOperable() string { - if m != nil { - return m.Operable +func (x *SyncAccount) GetOperable() string { + if x != nil { + return x.Operable } return "" } type SyncKeypair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` KeyUid string `protobuf:"bytes,2,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` @@ -2553,102 +2554,106 @@ type SyncKeypair struct { Accounts []*SyncAccount `protobuf:"bytes,8,rep,name=accounts,proto3" json:"accounts,omitempty"` Keycards []*SyncKeycard `protobuf:"bytes,9,rep,name=keycards,proto3" json:"keycards,omitempty"` Removed bool `protobuf:"varint,10,opt,name=removed,proto3" json:"removed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncKeypair) Reset() { *m = SyncKeypair{} } -func (m *SyncKeypair) String() string { return proto.CompactTextString(m) } -func (*SyncKeypair) ProtoMessage() {} +func (x *SyncKeypair) Reset() { + *x = SyncKeypair{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncKeypair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncKeypair) ProtoMessage() {} + +func (x *SyncKeypair) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncKeypair.ProtoReflect.Descriptor instead. func (*SyncKeypair) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{27} + return file_pairing_proto_rawDescGZIP(), []int{25} } -func (m *SyncKeypair) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncKeypair.Unmarshal(m, b) -} -func (m *SyncKeypair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncKeypair.Marshal(b, m, deterministic) -} -func (m *SyncKeypair) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncKeypair.Merge(m, src) -} -func (m *SyncKeypair) XXX_Size() int { - return xxx_messageInfo_SyncKeypair.Size(m) -} -func (m *SyncKeypair) XXX_DiscardUnknown() { - xxx_messageInfo_SyncKeypair.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncKeypair proto.InternalMessageInfo - -func (m *SyncKeypair) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncKeypair) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncKeypair) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncKeypair) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncKeypair) GetName() string { - if m != nil { - return m.Name +func (x *SyncKeypair) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncKeypair) GetType() string { - if m != nil { - return m.Type +func (x *SyncKeypair) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *SyncKeypair) GetDerivedFrom() string { - if m != nil { - return m.DerivedFrom +func (x *SyncKeypair) GetDerivedFrom() string { + if x != nil { + return x.DerivedFrom } return "" } -func (m *SyncKeypair) GetLastUsedDerivationIndex() uint64 { - if m != nil { - return m.LastUsedDerivationIndex +func (x *SyncKeypair) GetLastUsedDerivationIndex() uint64 { + if x != nil { + return x.LastUsedDerivationIndex } return 0 } -func (m *SyncKeypair) GetSyncedFrom() string { - if m != nil { - return m.SyncedFrom +func (x *SyncKeypair) GetSyncedFrom() string { + if x != nil { + return x.SyncedFrom } return "" } -func (m *SyncKeypair) GetAccounts() []*SyncAccount { - if m != nil { - return m.Accounts +func (x *SyncKeypair) GetAccounts() []*SyncAccount { + if x != nil { + return x.Accounts } return nil } -func (m *SyncKeypair) GetKeycards() []*SyncKeycard { - if m != nil { - return m.Keycards +func (x *SyncKeypair) GetKeycards() []*SyncKeycard { + if x != nil { + return x.Keycards } return nil } -func (m *SyncKeypair) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncKeypair) GetRemoved() bool { + if x != nil { + return x.Removed } return false } @@ -2656,1053 +2661,2329 @@ func (m *SyncKeypair) GetRemoved() bool { // this message is used for syncing accounts positions only, for syncing any other info consider // `SyncAccount` or `SyncKeypair` message type SyncAccountsPositions struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Accounts []*SyncAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Accounts []*SyncAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` } -func (m *SyncAccountsPositions) Reset() { *m = SyncAccountsPositions{} } -func (m *SyncAccountsPositions) String() string { return proto.CompactTextString(m) } -func (*SyncAccountsPositions) ProtoMessage() {} +func (x *SyncAccountsPositions) Reset() { + *x = SyncAccountsPositions{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccountsPositions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccountsPositions) ProtoMessage() {} + +func (x *SyncAccountsPositions) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccountsPositions.ProtoReflect.Descriptor instead. func (*SyncAccountsPositions) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{28} + return file_pairing_proto_rawDescGZIP(), []int{26} } -func (m *SyncAccountsPositions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccountsPositions.Unmarshal(m, b) -} -func (m *SyncAccountsPositions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccountsPositions.Marshal(b, m, deterministic) -} -func (m *SyncAccountsPositions) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccountsPositions.Merge(m, src) -} -func (m *SyncAccountsPositions) XXX_Size() int { - return xxx_messageInfo_SyncAccountsPositions.Size(m) -} -func (m *SyncAccountsPositions) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccountsPositions.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccountsPositions proto.InternalMessageInfo - -func (m *SyncAccountsPositions) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncAccountsPositions) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncAccountsPositions) GetAccounts() []*SyncAccount { - if m != nil { - return m.Accounts +func (x *SyncAccountsPositions) GetAccounts() []*SyncAccount { + if x != nil { + return x.Accounts } return nil } type SyncSavedAddress struct { - Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Favourite bool `protobuf:"varint,3,opt,name=favourite,proto3" json:"favourite,omitempty"` - Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` - UpdateClock uint64 `protobuf:"varint,7,opt,name=update_clock,json=updateClock,proto3" json:"update_clock,omitempty"` - ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` - Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` - IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Favourite bool `protobuf:"varint,3,opt,name=favourite,proto3" json:"favourite,omitempty"` + Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` + UpdateClock uint64 `protobuf:"varint,7,opt,name=update_clock,json=updateClock,proto3" json:"update_clock,omitempty"` + ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` + Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` + IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` } -func (m *SyncSavedAddress) Reset() { *m = SyncSavedAddress{} } -func (m *SyncSavedAddress) String() string { return proto.CompactTextString(m) } -func (*SyncSavedAddress) ProtoMessage() {} +func (x *SyncSavedAddress) Reset() { + *x = SyncSavedAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSavedAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSavedAddress) ProtoMessage() {} + +func (x *SyncSavedAddress) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSavedAddress.ProtoReflect.Descriptor instead. func (*SyncSavedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{29} + return file_pairing_proto_rawDescGZIP(), []int{27} } -func (m *SyncSavedAddress) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSavedAddress.Unmarshal(m, b) -} -func (m *SyncSavedAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSavedAddress.Marshal(b, m, deterministic) -} -func (m *SyncSavedAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSavedAddress.Merge(m, src) -} -func (m *SyncSavedAddress) XXX_Size() int { - return xxx_messageInfo_SyncSavedAddress.Size(m) -} -func (m *SyncSavedAddress) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSavedAddress.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSavedAddress proto.InternalMessageInfo - -func (m *SyncSavedAddress) GetAddress() []byte { - if m != nil { - return m.Address +func (x *SyncSavedAddress) GetAddress() []byte { + if x != nil { + return x.Address } return nil } -func (m *SyncSavedAddress) GetName() string { - if m != nil { - return m.Name +func (x *SyncSavedAddress) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncSavedAddress) GetFavourite() bool { - if m != nil { - return m.Favourite +func (x *SyncSavedAddress) GetFavourite() bool { + if x != nil { + return x.Favourite } return false } -func (m *SyncSavedAddress) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncSavedAddress) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncSavedAddress) GetUpdateClock() uint64 { - if m != nil { - return m.UpdateClock +func (x *SyncSavedAddress) GetUpdateClock() uint64 { + if x != nil { + return x.UpdateClock } return 0 } -func (m *SyncSavedAddress) GetChainShortNames() string { - if m != nil { - return m.ChainShortNames +func (x *SyncSavedAddress) GetChainShortNames() string { + if x != nil { + return x.ChainShortNames } return "" } -func (m *SyncSavedAddress) GetEns() string { - if m != nil { - return m.Ens +func (x *SyncSavedAddress) GetEns() string { + if x != nil { + return x.Ens } return "" } -func (m *SyncSavedAddress) GetIsTest() bool { - if m != nil { - return m.IsTest +func (x *SyncSavedAddress) GetIsTest() bool { + if x != nil { + return x.IsTest } return false } type SyncCommunitySettings struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - HistoryArchiveSupportEnabled bool `protobuf:"varint,3,opt,name=history_archive_support_enabled,json=historyArchiveSupportEnabled,proto3" json:"history_archive_support_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + HistoryArchiveSupportEnabled bool `protobuf:"varint,3,opt,name=history_archive_support_enabled,json=historyArchiveSupportEnabled,proto3" json:"history_archive_support_enabled,omitempty"` } -func (m *SyncCommunitySettings) Reset() { *m = SyncCommunitySettings{} } -func (m *SyncCommunitySettings) String() string { return proto.CompactTextString(m) } -func (*SyncCommunitySettings) ProtoMessage() {} +func (x *SyncCommunitySettings) Reset() { + *x = SyncCommunitySettings{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCommunitySettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCommunitySettings) ProtoMessage() {} + +func (x *SyncCommunitySettings) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCommunitySettings.ProtoReflect.Descriptor instead. func (*SyncCommunitySettings) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{30} + return file_pairing_proto_rawDescGZIP(), []int{28} } -func (m *SyncCommunitySettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunitySettings.Unmarshal(m, b) -} -func (m *SyncCommunitySettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunitySettings.Marshal(b, m, deterministic) -} -func (m *SyncCommunitySettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunitySettings.Merge(m, src) -} -func (m *SyncCommunitySettings) XXX_Size() int { - return xxx_messageInfo_SyncCommunitySettings.Size(m) -} -func (m *SyncCommunitySettings) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunitySettings.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCommunitySettings proto.InternalMessageInfo - -func (m *SyncCommunitySettings) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCommunitySettings) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunitySettings) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *SyncCommunitySettings) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *SyncCommunitySettings) GetHistoryArchiveSupportEnabled() bool { - if m != nil { - return m.HistoryArchiveSupportEnabled +func (x *SyncCommunitySettings) GetHistoryArchiveSupportEnabled() bool { + if x != nil { + return x.HistoryArchiveSupportEnabled } return false } type SyncTrustedUser struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Status SyncTrustedUser_TrustStatus `protobuf:"varint,3,opt,name=status,proto3,enum=protobuf.SyncTrustedUser_TrustStatus" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Status SyncTrustedUser_TrustStatus `protobuf:"varint,3,opt,name=status,proto3,enum=protobuf.SyncTrustedUser_TrustStatus" json:"status,omitempty"` } -func (m *SyncTrustedUser) Reset() { *m = SyncTrustedUser{} } -func (m *SyncTrustedUser) String() string { return proto.CompactTextString(m) } -func (*SyncTrustedUser) ProtoMessage() {} +func (x *SyncTrustedUser) Reset() { + *x = SyncTrustedUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncTrustedUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncTrustedUser) ProtoMessage() {} + +func (x *SyncTrustedUser) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncTrustedUser.ProtoReflect.Descriptor instead. func (*SyncTrustedUser) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{31} + return file_pairing_proto_rawDescGZIP(), []int{29} } -func (m *SyncTrustedUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncTrustedUser.Unmarshal(m, b) -} -func (m *SyncTrustedUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncTrustedUser.Marshal(b, m, deterministic) -} -func (m *SyncTrustedUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncTrustedUser.Merge(m, src) -} -func (m *SyncTrustedUser) XXX_Size() int { - return xxx_messageInfo_SyncTrustedUser.Size(m) -} -func (m *SyncTrustedUser) XXX_DiscardUnknown() { - xxx_messageInfo_SyncTrustedUser.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncTrustedUser proto.InternalMessageInfo - -func (m *SyncTrustedUser) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncTrustedUser) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncTrustedUser) GetId() string { - if m != nil { - return m.Id +func (x *SyncTrustedUser) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SyncTrustedUser) GetStatus() SyncTrustedUser_TrustStatus { - if m != nil { - return m.Status +func (x *SyncTrustedUser) GetStatus() SyncTrustedUser_TrustStatus { + if x != nil { + return x.Status } return SyncTrustedUser_UNKNOWN } type SyncVerificationRequest struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` - To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` - Challenge string `protobuf:"bytes,4,opt,name=challenge,proto3" json:"challenge,omitempty"` - RequestedAt uint64 `protobuf:"varint,5,opt,name=requested_at,json=requestedAt,proto3" json:"requested_at,omitempty"` - Response string `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` - RepliedAt uint64 `protobuf:"varint,7,opt,name=replied_at,json=repliedAt,proto3" json:"replied_at,omitempty"` - VerificationStatus SyncVerificationRequest_VerificationStatus `protobuf:"varint,8,opt,name=verification_status,json=verificationStatus,proto3,enum=protobuf.SyncVerificationRequest_VerificationStatus" json:"verification_status,omitempty"` - Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` + To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` + Challenge string `protobuf:"bytes,4,opt,name=challenge,proto3" json:"challenge,omitempty"` + RequestedAt uint64 `protobuf:"varint,5,opt,name=requested_at,json=requestedAt,proto3" json:"requested_at,omitempty"` + Response string `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` + RepliedAt uint64 `protobuf:"varint,7,opt,name=replied_at,json=repliedAt,proto3" json:"replied_at,omitempty"` + VerificationStatus SyncVerificationRequest_VerificationStatus `protobuf:"varint,8,opt,name=verification_status,json=verificationStatus,proto3,enum=protobuf.SyncVerificationRequest_VerificationStatus" json:"verification_status,omitempty"` + Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncVerificationRequest) Reset() { *m = SyncVerificationRequest{} } -func (m *SyncVerificationRequest) String() string { return proto.CompactTextString(m) } -func (*SyncVerificationRequest) ProtoMessage() {} +func (x *SyncVerificationRequest) Reset() { + *x = SyncVerificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncVerificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncVerificationRequest) ProtoMessage() {} + +func (x *SyncVerificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncVerificationRequest.ProtoReflect.Descriptor instead. func (*SyncVerificationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{32} + return file_pairing_proto_rawDescGZIP(), []int{30} } -func (m *SyncVerificationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncVerificationRequest.Unmarshal(m, b) -} -func (m *SyncVerificationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncVerificationRequest.Marshal(b, m, deterministic) -} -func (m *SyncVerificationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncVerificationRequest.Merge(m, src) -} -func (m *SyncVerificationRequest) XXX_Size() int { - return xxx_messageInfo_SyncVerificationRequest.Size(m) -} -func (m *SyncVerificationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SyncVerificationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncVerificationRequest proto.InternalMessageInfo - -func (m *SyncVerificationRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncVerificationRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncVerificationRequest) GetFrom() string { - if m != nil { - return m.From +func (x *SyncVerificationRequest) GetFrom() string { + if x != nil { + return x.From } return "" } -func (m *SyncVerificationRequest) GetTo() string { - if m != nil { - return m.To +func (x *SyncVerificationRequest) GetTo() string { + if x != nil { + return x.To } return "" } -func (m *SyncVerificationRequest) GetChallenge() string { - if m != nil { - return m.Challenge +func (x *SyncVerificationRequest) GetChallenge() string { + if x != nil { + return x.Challenge } return "" } -func (m *SyncVerificationRequest) GetRequestedAt() uint64 { - if m != nil { - return m.RequestedAt +func (x *SyncVerificationRequest) GetRequestedAt() uint64 { + if x != nil { + return x.RequestedAt } return 0 } -func (m *SyncVerificationRequest) GetResponse() string { - if m != nil { - return m.Response +func (x *SyncVerificationRequest) GetResponse() string { + if x != nil { + return x.Response } return "" } -func (m *SyncVerificationRequest) GetRepliedAt() uint64 { - if m != nil { - return m.RepliedAt +func (x *SyncVerificationRequest) GetRepliedAt() uint64 { + if x != nil { + return x.RepliedAt } return 0 } -func (m *SyncVerificationRequest) GetVerificationStatus() SyncVerificationRequest_VerificationStatus { - if m != nil { - return m.VerificationStatus +func (x *SyncVerificationRequest) GetVerificationStatus() SyncVerificationRequest_VerificationStatus { + if x != nil { + return x.VerificationStatus } return SyncVerificationRequest_UNKNOWN } -func (m *SyncVerificationRequest) GetId() string { - if m != nil { - return m.Id +func (x *SyncVerificationRequest) GetId() string { + if x != nil { + return x.Id } return "" } type SyncContactRequestDecision struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` - DecisionStatus SyncContactRequestDecision_DecisionStatus `protobuf:"varint,3,opt,name=decision_status,json=decisionStatus,proto3,enum=protobuf.SyncContactRequestDecision_DecisionStatus" json:"decision_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` + DecisionStatus SyncContactRequestDecision_DecisionStatus `protobuf:"varint,3,opt,name=decision_status,json=decisionStatus,proto3,enum=protobuf.SyncContactRequestDecision_DecisionStatus" json:"decision_status,omitempty"` } -func (m *SyncContactRequestDecision) Reset() { *m = SyncContactRequestDecision{} } -func (m *SyncContactRequestDecision) String() string { return proto.CompactTextString(m) } -func (*SyncContactRequestDecision) ProtoMessage() {} +func (x *SyncContactRequestDecision) Reset() { + *x = SyncContactRequestDecision{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncContactRequestDecision) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncContactRequestDecision) ProtoMessage() {} + +func (x *SyncContactRequestDecision) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncContactRequestDecision.ProtoReflect.Descriptor instead. func (*SyncContactRequestDecision) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{33} + return file_pairing_proto_rawDescGZIP(), []int{31} } -func (m *SyncContactRequestDecision) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncContactRequestDecision.Unmarshal(m, b) -} -func (m *SyncContactRequestDecision) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncContactRequestDecision.Marshal(b, m, deterministic) -} -func (m *SyncContactRequestDecision) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncContactRequestDecision.Merge(m, src) -} -func (m *SyncContactRequestDecision) XXX_Size() int { - return xxx_messageInfo_SyncContactRequestDecision.Size(m) -} -func (m *SyncContactRequestDecision) XXX_DiscardUnknown() { - xxx_messageInfo_SyncContactRequestDecision.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncContactRequestDecision proto.InternalMessageInfo - -func (m *SyncContactRequestDecision) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncContactRequestDecision) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncContactRequestDecision) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *SyncContactRequestDecision) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *SyncContactRequestDecision) GetDecisionStatus() SyncContactRequestDecision_DecisionStatus { - if m != nil { - return m.DecisionStatus +func (x *SyncContactRequestDecision) GetDecisionStatus() SyncContactRequestDecision_DecisionStatus { + if x != nil { + return x.DecisionStatus } return SyncContactRequestDecision_ACCEPTED } // `BackedUpProfile` is used to describe profile of logged in user type BackedUpProfile struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - DisplayNameClock uint64 `protobuf:"varint,3,opt,name=display_name_clock,json=displayNameClock,proto3" json:"display_name_clock,omitempty"` - Pictures []*SyncProfilePicture `protobuf:"bytes,4,rep,name=pictures,proto3" json:"pictures,omitempty"` - SocialLinks *SyncSocialLinks `protobuf:"bytes,5,opt,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` - EnsUsernameDetails []*SyncEnsUsernameDetail `protobuf:"bytes,6,rep,name=ens_username_details,json=ensUsernameDetails,proto3" json:"ens_username_details,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + DisplayNameClock uint64 `protobuf:"varint,3,opt,name=display_name_clock,json=displayNameClock,proto3" json:"display_name_clock,omitempty"` + Pictures []*SyncProfilePicture `protobuf:"bytes,4,rep,name=pictures,proto3" json:"pictures,omitempty"` + SocialLinks *SyncSocialLinks `protobuf:"bytes,5,opt,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` + EnsUsernameDetails []*SyncEnsUsernameDetail `protobuf:"bytes,6,rep,name=ens_username_details,json=ensUsernameDetails,proto3" json:"ens_username_details,omitempty"` } -func (m *BackedUpProfile) Reset() { *m = BackedUpProfile{} } -func (m *BackedUpProfile) String() string { return proto.CompactTextString(m) } -func (*BackedUpProfile) ProtoMessage() {} +func (x *BackedUpProfile) Reset() { + *x = BackedUpProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BackedUpProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackedUpProfile) ProtoMessage() {} + +func (x *BackedUpProfile) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackedUpProfile.ProtoReflect.Descriptor instead. func (*BackedUpProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{34} + return file_pairing_proto_rawDescGZIP(), []int{32} } -func (m *BackedUpProfile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BackedUpProfile.Unmarshal(m, b) -} -func (m *BackedUpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BackedUpProfile.Marshal(b, m, deterministic) -} -func (m *BackedUpProfile) XXX_Merge(src proto.Message) { - xxx_messageInfo_BackedUpProfile.Merge(m, src) -} -func (m *BackedUpProfile) XXX_Size() int { - return xxx_messageInfo_BackedUpProfile.Size(m) -} -func (m *BackedUpProfile) XXX_DiscardUnknown() { - xxx_messageInfo_BackedUpProfile.DiscardUnknown(m) -} - -var xxx_messageInfo_BackedUpProfile proto.InternalMessageInfo - -func (m *BackedUpProfile) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *BackedUpProfile) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *BackedUpProfile) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *BackedUpProfile) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *BackedUpProfile) GetDisplayNameClock() uint64 { - if m != nil { - return m.DisplayNameClock +func (x *BackedUpProfile) GetDisplayNameClock() uint64 { + if x != nil { + return x.DisplayNameClock } return 0 } -func (m *BackedUpProfile) GetPictures() []*SyncProfilePicture { - if m != nil { - return m.Pictures +func (x *BackedUpProfile) GetPictures() []*SyncProfilePicture { + if x != nil { + return x.Pictures } return nil } -func (m *BackedUpProfile) GetSocialLinks() *SyncSocialLinks { - if m != nil { - return m.SocialLinks +func (x *BackedUpProfile) GetSocialLinks() *SyncSocialLinks { + if x != nil { + return x.SocialLinks } return nil } -func (m *BackedUpProfile) GetEnsUsernameDetails() []*SyncEnsUsernameDetail { - if m != nil { - return m.EnsUsernameDetails +func (x *BackedUpProfile) GetEnsUsernameDetails() []*SyncEnsUsernameDetail { + if x != nil { + return x.EnsUsernameDetails } return nil } type RawMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - MessageType ApplicationMetadataMessage_Type `protobuf:"varint,2,opt,name=messageType,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"messageType,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + MessageType ApplicationMetadataMessage_Type `protobuf:"varint,2,opt,name=messageType,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"messageType,omitempty"` } -func (m *RawMessage) Reset() { *m = RawMessage{} } -func (m *RawMessage) String() string { return proto.CompactTextString(m) } -func (*RawMessage) ProtoMessage() {} +func (x *RawMessage) Reset() { + *x = RawMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawMessage) ProtoMessage() {} + +func (x *RawMessage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawMessage.ProtoReflect.Descriptor instead. func (*RawMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{35} + return file_pairing_proto_rawDescGZIP(), []int{33} } -func (m *RawMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RawMessage.Unmarshal(m, b) -} -func (m *RawMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RawMessage.Marshal(b, m, deterministic) -} -func (m *RawMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_RawMessage.Merge(m, src) -} -func (m *RawMessage) XXX_Size() int { - return xxx_messageInfo_RawMessage.Size(m) -} -func (m *RawMessage) XXX_DiscardUnknown() { - xxx_messageInfo_RawMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_RawMessage proto.InternalMessageInfo - -func (m *RawMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *RawMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *RawMessage) GetMessageType() ApplicationMetadataMessage_Type { - if m != nil { - return m.MessageType +func (x *RawMessage) GetMessageType() ApplicationMetadataMessage_Type { + if x != nil { + return x.MessageType } return ApplicationMetadataMessage_UNKNOWN } type SyncRawMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + RawMessages []*RawMessage `protobuf:"bytes,1,rep,name=rawMessages,proto3" json:"rawMessages,omitempty"` // we need these to be able to login - SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"` - SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"` + SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"` } -func (m *SyncRawMessage) Reset() { *m = SyncRawMessage{} } -func (m *SyncRawMessage) String() string { return proto.CompactTextString(m) } -func (*SyncRawMessage) ProtoMessage() {} +func (x *SyncRawMessage) Reset() { + *x = SyncRawMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncRawMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncRawMessage) ProtoMessage() {} + +func (x *SyncRawMessage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncRawMessage.ProtoReflect.Descriptor instead. func (*SyncRawMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{36} + return file_pairing_proto_rawDescGZIP(), []int{34} } -func (m *SyncRawMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncRawMessage.Unmarshal(m, b) -} -func (m *SyncRawMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncRawMessage.Marshal(b, m, deterministic) -} -func (m *SyncRawMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncRawMessage.Merge(m, src) -} -func (m *SyncRawMessage) XXX_Size() int { - return xxx_messageInfo_SyncRawMessage.Size(m) -} -func (m *SyncRawMessage) XXX_DiscardUnknown() { - xxx_messageInfo_SyncRawMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncRawMessage proto.InternalMessageInfo - -func (m *SyncRawMessage) GetRawMessages() []*RawMessage { - if m != nil { - return m.RawMessages +func (x *SyncRawMessage) GetRawMessages() []*RawMessage { + if x != nil { + return x.RawMessages } return nil } -func (m *SyncRawMessage) GetSubAccountsJsonBytes() []byte { - if m != nil { - return m.SubAccountsJsonBytes +func (x *SyncRawMessage) GetSubAccountsJsonBytes() []byte { + if x != nil { + return x.SubAccountsJsonBytes } return nil } -func (m *SyncRawMessage) GetSettingsJsonBytes() []byte { - if m != nil { - return m.SettingsJsonBytes +func (x *SyncRawMessage) GetSettingsJsonBytes() []byte { + if x != nil { + return x.SettingsJsonBytes } return nil } type SyncKeycard struct { - Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Locked bool `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"` - KeyUid string `protobuf:"bytes,4,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Addresses [][]byte `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` - Position uint64 `protobuf:"varint,6,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Locked bool `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"` + KeyUid string `protobuf:"bytes,4,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Addresses [][]byte `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` + Position uint64 `protobuf:"varint,6,opt,name=position,proto3" json:"position,omitempty"` } -func (m *SyncKeycard) Reset() { *m = SyncKeycard{} } -func (m *SyncKeycard) String() string { return proto.CompactTextString(m) } -func (*SyncKeycard) ProtoMessage() {} +func (x *SyncKeycard) Reset() { + *x = SyncKeycard{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncKeycard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncKeycard) ProtoMessage() {} + +func (x *SyncKeycard) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncKeycard.ProtoReflect.Descriptor instead. func (*SyncKeycard) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{37} + return file_pairing_proto_rawDescGZIP(), []int{35} } -func (m *SyncKeycard) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncKeycard.Unmarshal(m, b) -} -func (m *SyncKeycard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncKeycard.Marshal(b, m, deterministic) -} -func (m *SyncKeycard) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncKeycard.Merge(m, src) -} -func (m *SyncKeycard) XXX_Size() int { - return xxx_messageInfo_SyncKeycard.Size(m) -} -func (m *SyncKeycard) XXX_DiscardUnknown() { - xxx_messageInfo_SyncKeycard.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncKeycard proto.InternalMessageInfo - -func (m *SyncKeycard) GetUid() string { - if m != nil { - return m.Uid +func (x *SyncKeycard) GetUid() string { + if x != nil { + return x.Uid } return "" } -func (m *SyncKeycard) GetName() string { - if m != nil { - return m.Name +func (x *SyncKeycard) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncKeycard) GetLocked() bool { - if m != nil { - return m.Locked +func (x *SyncKeycard) GetLocked() bool { + if x != nil { + return x.Locked } return false } -func (m *SyncKeycard) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncKeycard) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncKeycard) GetAddresses() [][]byte { - if m != nil { - return m.Addresses +func (x *SyncKeycard) GetAddresses() [][]byte { + if x != nil { + return x.Addresses } return nil } -func (m *SyncKeycard) GetPosition() uint64 { - if m != nil { - return m.Position +func (x *SyncKeycard) GetPosition() uint64 { + if x != nil { + return x.Position } return 0 } type SyncSocialLinks struct { - SocialLinks []*SocialLink `protobuf:"bytes,1,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SocialLinks []*SocialLink `protobuf:"bytes,1,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *SyncSocialLinks) Reset() { *m = SyncSocialLinks{} } -func (m *SyncSocialLinks) String() string { return proto.CompactTextString(m) } -func (*SyncSocialLinks) ProtoMessage() {} +func (x *SyncSocialLinks) Reset() { + *x = SyncSocialLinks{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSocialLinks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSocialLinks) ProtoMessage() {} + +func (x *SyncSocialLinks) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSocialLinks.ProtoReflect.Descriptor instead. func (*SyncSocialLinks) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{38} + return file_pairing_proto_rawDescGZIP(), []int{36} } -func (m *SyncSocialLinks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSocialLinks.Unmarshal(m, b) -} -func (m *SyncSocialLinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSocialLinks.Marshal(b, m, deterministic) -} -func (m *SyncSocialLinks) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSocialLinks.Merge(m, src) -} -func (m *SyncSocialLinks) XXX_Size() int { - return xxx_messageInfo_SyncSocialLinks.Size(m) -} -func (m *SyncSocialLinks) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSocialLinks.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSocialLinks proto.InternalMessageInfo - -func (m *SyncSocialLinks) GetSocialLinks() []*SocialLink { - if m != nil { - return m.SocialLinks +func (x *SyncSocialLinks) GetSocialLinks() []*SocialLink { + if x != nil { + return x.SocialLinks } return nil } -func (m *SyncSocialLinks) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncSocialLinks) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type SyncAccountCustomizationColor struct { - UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - CustomizationColor string `protobuf:"bytes,2,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` - KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CustomizationColor string `protobuf:"bytes,2,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` + KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` } -func (m *SyncAccountCustomizationColor) Reset() { *m = SyncAccountCustomizationColor{} } -func (m *SyncAccountCustomizationColor) String() string { return proto.CompactTextString(m) } -func (*SyncAccountCustomizationColor) ProtoMessage() {} +func (x *SyncAccountCustomizationColor) Reset() { + *x = SyncAccountCustomizationColor{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccountCustomizationColor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccountCustomizationColor) ProtoMessage() {} + +func (x *SyncAccountCustomizationColor) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccountCustomizationColor.ProtoReflect.Descriptor instead. func (*SyncAccountCustomizationColor) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{39} + return file_pairing_proto_rawDescGZIP(), []int{37} } -func (m *SyncAccountCustomizationColor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccountCustomizationColor.Unmarshal(m, b) -} -func (m *SyncAccountCustomizationColor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccountCustomizationColor.Marshal(b, m, deterministic) -} -func (m *SyncAccountCustomizationColor) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccountCustomizationColor.Merge(m, src) -} -func (m *SyncAccountCustomizationColor) XXX_Size() int { - return xxx_messageInfo_SyncAccountCustomizationColor.Size(m) -} -func (m *SyncAccountCustomizationColor) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccountCustomizationColor.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccountCustomizationColor proto.InternalMessageInfo - -func (m *SyncAccountCustomizationColor) GetUpdatedAt() uint64 { - if m != nil { - return m.UpdatedAt +func (x *SyncAccountCustomizationColor) GetUpdatedAt() uint64 { + if x != nil { + return x.UpdatedAt } return 0 } -func (m *SyncAccountCustomizationColor) GetCustomizationColor() string { - if m != nil { - return m.CustomizationColor +func (x *SyncAccountCustomizationColor) GetCustomizationColor() string { + if x != nil { + return x.CustomizationColor } return "" } -func (m *SyncAccountCustomizationColor) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncAccountCustomizationColor) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func init() { - proto.RegisterEnum("protobuf.SyncActivityCenterNotification_NotificationType", SyncActivityCenterNotification_NotificationType_name, SyncActivityCenterNotification_NotificationType_value) - proto.RegisterEnum("protobuf.SyncActivityCenterNotification_MembershipStatus", SyncActivityCenterNotification_MembershipStatus_name, SyncActivityCenterNotification_MembershipStatus_value) - proto.RegisterEnum("protobuf.SyncActivityCenterNotification_ContactVerificationStatus", SyncActivityCenterNotification_ContactVerificationStatus_name, SyncActivityCenterNotification_ContactVerificationStatus_value) - proto.RegisterEnum("protobuf.SyncTrustedUser_TrustStatus", SyncTrustedUser_TrustStatus_name, SyncTrustedUser_TrustStatus_value) - proto.RegisterEnum("protobuf.SyncVerificationRequest_VerificationStatus", SyncVerificationRequest_VerificationStatus_name, SyncVerificationRequest_VerificationStatus_value) - proto.RegisterEnum("protobuf.SyncContactRequestDecision_DecisionStatus", SyncContactRequestDecision_DecisionStatus_name, SyncContactRequestDecision_DecisionStatus_value) - proto.RegisterType((*FetchingBackedUpDataDetails)(nil), "protobuf.FetchingBackedUpDataDetails") - proto.RegisterType((*Backup)(nil), "protobuf.Backup") - proto.RegisterType((*MultiAccount)(nil), "protobuf.MultiAccount") - proto.RegisterType((*MultiAccount_ColorHash)(nil), "protobuf.MultiAccount.ColorHash") - proto.RegisterType((*MultiAccount_IdentityImage)(nil), "protobuf.MultiAccount.IdentityImage") - proto.RegisterType((*LocalPairingPayload)(nil), "protobuf.LocalPairingPayload") - proto.RegisterType((*LocalPairingPayload_Key)(nil), "protobuf.LocalPairingPayload.Key") - proto.RegisterType((*LocalPairingPeerHello)(nil), "protobuf.LocalPairingPeerHello") - proto.RegisterType((*PairInstallation)(nil), "protobuf.PairInstallation") - proto.RegisterType((*SyncInstallationContact)(nil), "protobuf.SyncInstallationContact") - proto.RegisterType((*SyncInstallationContactV2)(nil), "protobuf.SyncInstallationContactV2") - proto.RegisterType((*SyncInstallationAccount)(nil), "protobuf.SyncInstallationAccount") - proto.RegisterType((*SyncInstallationPublicChat)(nil), "protobuf.SyncInstallationPublicChat") - proto.RegisterType((*SyncCommunity)(nil), "protobuf.SyncCommunity") - proto.RegisterType((*SyncCommunityRequestsToJoin)(nil), "protobuf.SyncCommunityRequestsToJoin") - proto.RegisterType((*SyncInstallation)(nil), "protobuf.SyncInstallation") - proto.RegisterType((*SyncChatRemoved)(nil), "protobuf.SyncChatRemoved") - proto.RegisterType((*SyncChatMessagesRead)(nil), "protobuf.SyncChatMessagesRead") - proto.RegisterType((*SyncActivityCenterRead)(nil), "protobuf.SyncActivityCenterRead") - proto.RegisterType((*SyncActivityCenterAccepted)(nil), "protobuf.SyncActivityCenterAccepted") - proto.RegisterType((*SyncActivityCenterDismissed)(nil), "protobuf.SyncActivityCenterDismissed") - proto.RegisterType((*SyncActivityCenterNotificationState)(nil), "protobuf.SyncActivityCenterNotificationState") - proto.RegisterType((*SyncActivityCenterNotifications)(nil), "protobuf.SyncActivityCenterNotifications") - proto.RegisterType((*SyncActivityCenterNotification)(nil), "protobuf.SyncActivityCenterNotification") - proto.RegisterType((*SyncBookmark)(nil), "protobuf.SyncBookmark") - proto.RegisterType((*SyncEnsUsernameDetail)(nil), "protobuf.SyncEnsUsernameDetail") - proto.RegisterType((*SyncClearHistory)(nil), "protobuf.SyncClearHistory") - proto.RegisterType((*SyncProfilePicture)(nil), "protobuf.SyncProfilePicture") - proto.RegisterType((*SyncProfilePictures)(nil), "protobuf.SyncProfilePictures") - proto.RegisterType((*SyncAccount)(nil), "protobuf.SyncAccount") - proto.RegisterType((*SyncKeypair)(nil), "protobuf.SyncKeypair") - proto.RegisterType((*SyncAccountsPositions)(nil), "protobuf.SyncAccountsPositions") - proto.RegisterType((*SyncSavedAddress)(nil), "protobuf.SyncSavedAddress") - proto.RegisterType((*SyncCommunitySettings)(nil), "protobuf.SyncCommunitySettings") - proto.RegisterType((*SyncTrustedUser)(nil), "protobuf.SyncTrustedUser") - proto.RegisterType((*SyncVerificationRequest)(nil), "protobuf.SyncVerificationRequest") - proto.RegisterType((*SyncContactRequestDecision)(nil), "protobuf.SyncContactRequestDecision") - proto.RegisterType((*BackedUpProfile)(nil), "protobuf.BackedUpProfile") - proto.RegisterType((*RawMessage)(nil), "protobuf.RawMessage") - proto.RegisterType((*SyncRawMessage)(nil), "protobuf.SyncRawMessage") - proto.RegisterType((*SyncKeycard)(nil), "protobuf.SyncKeycard") - proto.RegisterType((*SyncSocialLinks)(nil), "protobuf.SyncSocialLinks") - proto.RegisterType((*SyncAccountCustomizationColor)(nil), "protobuf.SyncAccountCustomizationColor") +type MultiAccount_ColorHash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index []int64 `protobuf:"varint,1,rep,packed,name=index,proto3" json:"index,omitempty"` } -func init() { - proto.RegisterFile("pairing.proto", fileDescriptor_d61ab7221f0b5518) +func (x *MultiAccount_ColorHash) Reset() { + *x = MultiAccount_ColorHash{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -var fileDescriptor_d61ab7221f0b5518 = []byte{ - // 3481 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4b, 0x6c, 0x24, 0x49, - 0x56, 0x93, 0x55, 0xe5, 0xfa, 0xbc, 0x2a, 0xdb, 0xe9, 0xb0, 0x67, 0x5c, 0x76, 0xbb, 0xb7, 0xbb, - 0xb3, 0x19, 0x6d, 0x83, 0x06, 0x0f, 0xf4, 0x2c, 0x2c, 0x3b, 0x3d, 0xa3, 0xc1, 0x5d, 0xf6, 0x4c, - 0xbb, 0x3f, 0x6e, 0x13, 0xb6, 0x77, 0x00, 0x21, 0xe5, 0x86, 0x33, 0xc3, 0xae, 0x5c, 0x67, 0x65, - 0x26, 0x19, 0x51, 0x36, 0xb5, 0x07, 0x04, 0x48, 0x48, 0xdc, 0x90, 0xb8, 0xec, 0x0d, 0xcd, 0x11, - 0x71, 0xe4, 0xb6, 0x12, 0x67, 0xc4, 0x91, 0x3b, 0x5c, 0xb9, 0x70, 0xe3, 0xc6, 0x81, 0x03, 0x7a, - 0x11, 0x91, 0x59, 0x99, 0x55, 0x95, 0x5e, 0x5b, 0x9c, 0xf6, 0xe4, 0x7c, 0x2f, 0x5e, 0xbc, 0x78, - 0x11, 0xef, 0xff, 0xca, 0xb0, 0x9c, 0xb0, 0x20, 0x0d, 0xa2, 0xcb, 0xdd, 0x24, 0x8d, 0x65, 0x4c, - 0xda, 0xea, 0xcf, 0xf9, 0xf8, 0x62, 0x7b, 0xdd, 0x1b, 0x32, 0xe9, 0x06, 0x3e, 0x8f, 0x64, 0x20, - 0x27, 0x7a, 0x79, 0x7b, 0x5d, 0x4c, 0x22, 0xcf, 0x15, 0x5c, 0xca, 0x20, 0xba, 0x14, 0x06, 0xe9, - 0xb0, 0x24, 0x09, 0x03, 0x8f, 0xc9, 0x20, 0x8e, 0xdc, 0x11, 0x97, 0xcc, 0x67, 0x92, 0xb9, 0x23, - 0x2e, 0x04, 0xbb, 0xe4, 0x86, 0x66, 0xcd, 0x8b, 0x47, 0xa3, 0x71, 0x14, 0xc8, 0x80, 0x9b, 0x6d, - 0x0e, 0x83, 0x07, 0x5f, 0x73, 0xe9, 0x0d, 0x83, 0xe8, 0xf2, 0x25, 0xf3, 0xae, 0xb8, 0x7f, 0x96, - 0xec, 0x33, 0xc9, 0xf6, 0xb9, 0x64, 0x41, 0x28, 0xc8, 0x23, 0xe8, 0x2a, 0x3e, 0xd1, 0x78, 0x74, - 0xce, 0xd3, 0xbe, 0xf5, 0xd8, 0x7a, 0xb6, 0x4c, 0x01, 0x51, 0x47, 0x0a, 0x43, 0x9e, 0x40, 0x4f, - 0xc6, 0x92, 0x85, 0x19, 0x45, 0x4d, 0x51, 0x74, 0x15, 0x4e, 0x93, 0x38, 0xff, 0xdb, 0x84, 0x26, - 0xf2, 0x1e, 0x27, 0x64, 0x03, 0x96, 0xbc, 0x30, 0xf6, 0xae, 0x14, 0xa3, 0x06, 0xd5, 0x00, 0x59, - 0x81, 0x5a, 0xe0, 0xab, 0x9d, 0x1d, 0x5a, 0x0b, 0x7c, 0xf2, 0x15, 0xb4, 0xbd, 0x38, 0x92, 0xcc, - 0x93, 0xa2, 0x5f, 0x7f, 0x5c, 0x7f, 0xd6, 0x7d, 0xfe, 0x74, 0x37, 0x7b, 0x91, 0xdd, 0x93, 0x49, - 0xe4, 0x1d, 0x46, 0x42, 0xb2, 0x30, 0x54, 0x77, 0x1d, 0x68, 0xca, 0x1f, 0x3f, 0xa7, 0xf9, 0x26, - 0xf2, 0x23, 0xe8, 0x16, 0x6e, 0xda, 0x6f, 0x28, 0x1e, 0x9b, 0x65, 0x1e, 0x03, 0x43, 0x30, 0xa1, - 0x45, 0x5a, 0xf2, 0x1e, 0x56, 0x33, 0x36, 0xe6, 0x0d, 0xfa, 0x4b, 0x8f, 0xad, 0x67, 0xdd, 0xe7, - 0x1f, 0x4f, 0xb7, 0xdf, 0xf2, 0x60, 0x74, 0x76, 0x37, 0x39, 0x03, 0x52, 0xe0, 0x9f, 0xf1, 0x6c, - 0xde, 0x87, 0xe7, 0x02, 0x06, 0xe4, 0x33, 0x68, 0x25, 0x69, 0x7c, 0x11, 0x84, 0xbc, 0xdf, 0x52, - 0xbc, 0xb6, 0xa6, 0xbc, 0x32, 0x1e, 0xc7, 0x9a, 0x80, 0x66, 0x94, 0xe4, 0x1d, 0xac, 0x98, 0xcf, - 0x4c, 0x8e, 0xf6, 0x7d, 0xe4, 0x98, 0xd9, 0x4c, 0x3e, 0x85, 0x96, 0x31, 0xc2, 0x7e, 0x47, 0xf1, - 0xf9, 0xb0, 0xfc, 0xc4, 0x27, 0x7a, 0x91, 0x66, 0x54, 0xf8, 0xb8, 0x99, 0xd5, 0x66, 0x02, 0xc0, - 0xbd, 0x1e, 0x77, 0x66, 0x37, 0x4a, 0x70, 0xc5, 0x27, 0xe8, 0x3c, 0xfd, 0xee, 0x22, 0x09, 0xde, - 0xe8, 0x45, 0x9a, 0x51, 0xe1, 0x0b, 0x98, 0xcf, 0x4c, 0x80, 0xde, 0xbd, 0x5e, 0xa0, 0xbc, 0x99, - 0xec, 0x81, 0x7d, 0xc3, 0xa4, 0x37, 0x7c, 0x1f, 0x85, 0x93, 0x3d, 0xcf, 0x8b, 0xc7, 0x91, 0xec, - 0x2f, 0x2f, 0x12, 0xc4, 0x2c, 0xd2, 0x39, 0x72, 0xe2, 0xc2, 0xe6, 0x2c, 0x2e, 0x13, 0x6d, 0xe5, - 0x3e, 0xa2, 0x55, 0x71, 0x71, 0xfe, 0x61, 0x09, 0x7a, 0xef, 0xc6, 0xa1, 0x0c, 0xb2, 0x13, 0x09, - 0x34, 0x22, 0x36, 0xe2, 0xca, 0x07, 0x3b, 0x54, 0x7d, 0x93, 0x1d, 0xe8, 0xc8, 0x60, 0xc4, 0x85, - 0x64, 0xa3, 0x44, 0x79, 0x62, 0x9d, 0x4e, 0x11, 0xb8, 0xaa, 0x43, 0x90, 0x17, 0x47, 0xfd, 0xba, - 0xda, 0x36, 0x45, 0x90, 0xaf, 0x00, 0xbc, 0x38, 0x8c, 0x53, 0x77, 0xc8, 0xc4, 0xd0, 0x38, 0xdb, - 0xe3, 0xa9, 0xd0, 0xc5, 0xb3, 0x77, 0x07, 0x48, 0xf8, 0x8a, 0x89, 0x21, 0xed, 0x78, 0xd9, 0x27, - 0xd9, 0x42, 0x7f, 0x47, 0x06, 0x81, 0xaf, 0x9c, 0xad, 0x4e, 0x5b, 0x0a, 0x3e, 0xf4, 0xc9, 0xf7, - 0x61, 0xf5, 0x8a, 0x4f, 0x3c, 0x96, 0xfa, 0xae, 0x09, 0x91, 0xca, 0x75, 0x3a, 0x4a, 0x13, 0x88, - 0x3e, 0xd6, 0x58, 0xb2, 0xa9, 0x2c, 0xc1, 0x1d, 0x07, 0xbe, 0xf2, 0x87, 0x0e, 0x6d, 0x5e, 0xf1, - 0xc9, 0x59, 0xe0, 0x93, 0x2f, 0xa0, 0x19, 0x8c, 0xd8, 0x25, 0x47, 0x5b, 0x47, 0xc9, 0x7e, 0xad, - 0x42, 0xb2, 0x43, 0x13, 0x63, 0x0f, 0x91, 0x98, 0x9a, 0x3d, 0xe4, 0x53, 0x58, 0xf7, 0xc6, 0x42, - 0xc6, 0xa3, 0xe0, 0x67, 0x3a, 0xb2, 0x2a, 0xc1, 0x94, 0xb9, 0x77, 0x28, 0x29, 0x2d, 0xa9, 0xab, - 0x91, 0xcf, 0x61, 0x6b, 0xc1, 0x06, 0x57, 0x47, 0x3d, 0x50, 0x51, 0x6f, 0x73, 0x7e, 0xdb, 0x00, - 0x97, 0xb7, 0x9f, 0x40, 0x27, 0x7f, 0x1f, 0x0c, 0x95, 0x41, 0xe4, 0xf3, 0x3f, 0xeb, 0x5b, 0x8f, - 0xeb, 0xcf, 0xea, 0x54, 0x03, 0xdb, 0xff, 0x6e, 0xc1, 0x72, 0x49, 0xd2, 0xe2, 0xc5, 0xad, 0xd2, - 0xc5, 0x33, 0x35, 0xd7, 0x0a, 0x6a, 0xee, 0x43, 0x2b, 0x61, 0x93, 0x30, 0x66, 0xbe, 0x52, 0x63, - 0x8f, 0x66, 0x20, 0x1e, 0x77, 0x13, 0xf8, 0x12, 0xf5, 0x87, 0x0a, 0xd0, 0x00, 0xf9, 0x08, 0x9a, - 0x43, 0x1e, 0x5c, 0x0e, 0xa5, 0xd1, 0x8b, 0x81, 0xc8, 0x36, 0xb4, 0x31, 0x10, 0x88, 0xe0, 0x67, - 0x5c, 0xe9, 0xa3, 0x4e, 0x73, 0x98, 0x3c, 0x85, 0xe5, 0x54, 0x7d, 0xb9, 0x92, 0xa5, 0x97, 0x5c, - 0x2a, 0x7d, 0xd4, 0x69, 0x4f, 0x23, 0x4f, 0x15, 0x6e, 0x9a, 0x08, 0xda, 0x85, 0x44, 0xe0, 0xfc, - 0xbc, 0x06, 0xeb, 0x6f, 0x63, 0x8f, 0x85, 0x46, 0xab, 0xc7, 0x46, 0xb8, 0xdf, 0x81, 0xc6, 0x15, - 0x9f, 0x08, 0xf5, 0x14, 0xdd, 0xe7, 0x4f, 0xa6, 0x1a, 0x5c, 0x40, 0xbc, 0xfb, 0x86, 0x4f, 0xa8, - 0x22, 0x27, 0x9f, 0x43, 0x6f, 0x84, 0x2a, 0x66, 0xc6, 0x33, 0x6b, 0xca, 0x9f, 0x3e, 0x5a, 0x6c, - 0x00, 0xb4, 0x44, 0x8b, 0x37, 0x4c, 0x98, 0x10, 0x37, 0x71, 0xea, 0x1b, 0x8b, 0xcf, 0x61, 0x7c, - 0x45, 0x4c, 0xcb, 0x6f, 0xf8, 0x44, 0xbd, 0x56, 0x87, 0x66, 0x20, 0x79, 0x96, 0x9b, 0xab, 0x11, - 0x4a, 0x67, 0x8f, 0x0e, 0x9d, 0x45, 0x6f, 0xff, 0x26, 0xd4, 0x71, 0xc3, 0x22, 0x5f, 0x24, 0xd0, - 0xc0, 0x04, 0xab, 0xc4, 0xed, 0x51, 0xf5, 0xed, 0xfc, 0xc2, 0x82, 0x0f, 0x4b, 0x97, 0xe5, 0x3c, - 0x7d, 0xc5, 0xc3, 0x30, 0x46, 0x0f, 0x31, 0x9e, 0xe1, 0x5e, 0xf3, 0x54, 0x04, 0x71, 0xa4, 0x98, - 0x2d, 0xd1, 0x15, 0x83, 0xfe, 0xb1, 0xc6, 0xa2, 0xa1, 0x24, 0x9c, 0x2b, 0x27, 0xd3, 0x9c, 0x9b, - 0x08, 0x1e, 0xfa, 0x2a, 0xc7, 0xf3, 0xeb, 0xc0, 0xe3, 0xae, 0x12, 0x45, 0xdf, 0x16, 0x34, 0xea, - 0x08, 0x05, 0x9a, 0x12, 0xc8, 0x49, 0xc2, 0xcd, 0x9d, 0x0d, 0xc1, 0xe9, 0x24, 0x51, 0xd1, 0x43, - 0x04, 0x97, 0x11, 0x93, 0xe3, 0x94, 0xab, 0x0b, 0xf7, 0xe8, 0x14, 0xe1, 0x7c, 0x67, 0x81, 0x8d, - 0x62, 0x17, 0xb3, 0x76, 0x45, 0x25, 0xf0, 0x7d, 0x58, 0x0d, 0x0a, 0x54, 0x6e, 0x5e, 0x16, 0xac, - 0x14, 0xd1, 0x25, 0x99, 0x95, 0x48, 0xf5, 0x39, 0x91, 0xb2, 0x87, 0x6d, 0x94, 0xad, 0x3f, 0x7b, - 0xa2, 0x25, 0x55, 0xa6, 0x64, 0xa0, 0xf3, 0x5f, 0x16, 0x6c, 0x56, 0x14, 0x16, 0x77, 0xac, 0x59, - 0x9e, 0xc2, 0xb2, 0xc9, 0x8e, 0xae, 0x0a, 0x1d, 0x46, 0xa4, 0x9e, 0x41, 0x6a, 0x5f, 0xdd, 0x82, - 0x36, 0x8f, 0x84, 0x5b, 0x10, 0xac, 0xc5, 0x23, 0xa1, 0xde, 0xf8, 0x09, 0xf4, 0x42, 0x26, 0xa4, - 0x3b, 0x4e, 0x7c, 0x26, 0xb9, 0x8e, 0x83, 0x0d, 0xda, 0x45, 0xdc, 0x99, 0x46, 0xe1, 0x9d, 0xc5, - 0x44, 0x48, 0x3e, 0x72, 0x25, 0xbb, 0xc4, 0x12, 0xa2, 0x8e, 0x77, 0xd6, 0xa8, 0x53, 0x76, 0x29, - 0xc8, 0xc7, 0xb0, 0x12, 0xa2, 0x8d, 0xb8, 0x51, 0xe0, 0x5d, 0xa9, 0x43, 0x74, 0x28, 0x5c, 0x56, - 0xd8, 0x23, 0x83, 0x74, 0xfe, 0xb2, 0x09, 0x5b, 0x95, 0x55, 0x14, 0xf9, 0x2d, 0xd8, 0x28, 0x0a, - 0xe2, 0xaa, 0xbd, 0xe1, 0xc4, 0xdc, 0x9e, 0x14, 0x04, 0x7a, 0xab, 0x57, 0x7e, 0x85, 0x9f, 0x02, - 0x75, 0xcb, 0x7c, 0x9f, 0xfb, 0x2a, 0xa0, 0xb7, 0xa9, 0x06, 0xd0, 0x4e, 0xce, 0x51, 0xc9, 0xdc, - 0x57, 0x11, 0xbb, 0x4d, 0x33, 0x10, 0xe9, 0x47, 0x63, 0x94, 0xa9, 0xab, 0xe9, 0x15, 0x80, 0xf4, - 0x29, 0x1f, 0xc5, 0xd7, 0xdc, 0x57, 0xd5, 0x44, 0x9b, 0x66, 0x20, 0x79, 0x0c, 0xbd, 0x21, 0x13, - 0xae, 0x62, 0xeb, 0x8e, 0x85, 0xaa, 0x0d, 0xda, 0x14, 0x86, 0x4c, 0xec, 0x21, 0xea, 0x4c, 0x25, - 0x98, 0x6b, 0x9e, 0x06, 0x17, 0x59, 0xe5, 0x2e, 0x24, 0x93, 0x63, 0x9d, 0xfa, 0xeb, 0x94, 0x14, - 0x97, 0x4e, 0xd4, 0x8a, 0x2a, 0xb8, 0xd3, 0xb1, 0x90, 0x19, 0xe5, 0xaa, 0xa2, 0xec, 0x2a, 0x9c, - 0x21, 0xf9, 0x12, 0x1e, 0x98, 0x2a, 0xd4, 0x4d, 0xf9, 0x9f, 0x8e, 0xb9, 0x90, 0x5a, 0x8b, 0x6a, - 0x0b, 0xef, 0xdb, 0x6a, 0x47, 0xdf, 0x90, 0x50, 0x4d, 0xa1, 0x94, 0x89, 0xfb, 0x79, 0xf5, 0x76, - 0xed, 0x06, 0x6b, 0x95, 0xdb, 0x55, 0x16, 0x23, 0x5f, 0xc1, 0xce, 0xec, 0x76, 0x7c, 0x0e, 0xc9, - 0xcd, 0xf1, 0x44, 0xed, 0xdf, 0x2a, 0xef, 0xa7, 0x8a, 0x42, 0x9f, 0x5f, 0xcd, 0x40, 0x0b, 0xb0, - 0x5e, 0xcd, 0x40, 0x4b, 0xf0, 0x04, 0x7a, 0x7e, 0x20, 0x92, 0x90, 0x4d, 0xb4, 0x7d, 0x6d, 0x28, - 0xd5, 0x77, 0x0d, 0x0e, 0x6d, 0xcc, 0xb9, 0x99, 0xf7, 0xf7, 0xac, 0x3c, 0x5a, 0xec, 0xef, 0x73, - 0x46, 0x5d, 0x5b, 0x60, 0xd4, 0xb3, 0x96, 0x5b, 0x9f, 0xb3, 0x5c, 0xe7, 0x25, 0x6c, 0xcf, 0x1e, - 0x7c, 0x3c, 0x3e, 0x0f, 0x03, 0x6f, 0x30, 0x64, 0x77, 0x8c, 0x35, 0xce, 0x2f, 0xea, 0xb0, 0x5c, - 0x6a, 0x61, 0x7e, 0xe9, 0xbe, 0x9e, 0x71, 0xcc, 0x6e, 0x92, 0x06, 0xd7, 0x4c, 0x72, 0xf7, 0x8a, - 0x4f, 0x74, 0x05, 0xf0, 0xb2, 0xd6, 0xb7, 0x28, 0x18, 0x34, 0x66, 0xa4, 0xc7, 0x18, 0x59, 0x85, - 0x97, 0x06, 0x09, 0xca, 0xa6, 0x7c, 0xb3, 0x47, 0x8b, 0x28, 0x2c, 0x0a, 0x7e, 0x1a, 0x07, 0x91, - 0xf1, 0xcc, 0x36, 0x35, 0x10, 0xa6, 0x4c, 0x6d, 0xaf, 0xdc, 0x57, 0x45, 0x41, 0x9b, 0xe6, 0xf0, - 0xd4, 0x71, 0x5a, 0x45, 0xc7, 0x79, 0x0f, 0xb6, 0xd1, 0xb0, 0x70, 0x65, 0xec, 0x22, 0x1f, 0x53, - 0xa5, 0x7d, 0x5c, 0xd5, 0xac, 0x19, 0xf2, 0xd3, 0xf8, 0x75, 0x1c, 0x44, 0x74, 0x25, 0x2d, 0xc1, - 0xe4, 0x05, 0xb4, 0xb3, 0x16, 0xc1, 0xb4, 0x24, 0x8f, 0x2a, 0x18, 0x99, 0xde, 0x44, 0xd0, 0x7c, - 0x03, 0x66, 0x31, 0x1e, 0x79, 0xe9, 0x24, 0x91, 0xb9, 0xe3, 0x4f, 0x11, 0x2a, 0xc7, 0x25, 0xdc, - 0x93, 0x6c, 0xea, 0xfe, 0x53, 0x04, 0x26, 0x2e, 0x43, 0x8a, 0x4e, 0xac, 0x8a, 0x95, 0x9e, 0x7a, - 0xb9, 0x95, 0x29, 0xfa, 0x0d, 0x9f, 0x08, 0x2c, 0x71, 0x1e, 0xdc, 0x72, 0x23, 0xa3, 0x33, 0x2b, - 0xd7, 0xd9, 0x43, 0x80, 0x44, 0xd9, 0x87, 0x52, 0x99, 0xb6, 0x81, 0x8e, 0xc6, 0xa0, 0xb6, 0x72, - 0xc5, 0xd7, 0x8b, 0x8a, 0xbf, 0x25, 0xb8, 0x6e, 0xea, 0xda, 0x25, 0x2b, 0xb5, 0x3b, 0xb4, 0x89, - 0xe0, 0xa1, 0x8f, 0xb6, 0x9b, 0xb5, 0x99, 0x13, 0x5c, 0x6d, 0x6a, 0xc5, 0xe7, 0xb8, 0x43, 0xa5, - 0x44, 0xed, 0xc2, 0x2d, 0x7d, 0x98, 0x02, 0xc8, 0xd7, 0xb0, 0x96, 0xf2, 0x6b, 0xce, 0x42, 0xee, - 0xbb, 0xa6, 0x7a, 0xca, 0x6a, 0xed, 0x42, 0x4f, 0x4a, 0x0d, 0x49, 0xde, 0x08, 0xa5, 0x65, 0x84, - 0x70, 0xfe, 0xae, 0x06, 0xf6, 0xac, 0x6b, 0x90, 0x2f, 0x0b, 0xa3, 0x80, 0xb9, 0xea, 0xaf, 0x22, - 0x89, 0x15, 0x06, 0x01, 0xdf, 0x40, 0xcf, 0xbc, 0x1e, 0xde, 0x52, 0xf4, 0x6b, 0xb3, 0x2d, 0x40, - 0xb5, 0x2f, 0xd2, 0x6e, 0x92, 0x7f, 0x0b, 0xf2, 0x02, 0x5a, 0x59, 0x15, 0x59, 0x57, 0x76, 0x75, - 0x8b, 0x18, 0xd9, 0x15, 0xb3, 0x1d, 0xff, 0x8f, 0x71, 0x84, 0xf3, 0x43, 0x58, 0x55, 0xab, 0x28, - 0x90, 0xc9, 0x29, 0x77, 0x8b, 0x11, 0x5f, 0xc0, 0x46, 0xb6, 0xf1, 0x9d, 0x9e, 0x01, 0x09, 0xca, - 0xd9, 0x5d, 0x77, 0xff, 0x3e, 0x7c, 0xa4, 0xbb, 0x56, 0x19, 0x5c, 0x07, 0x72, 0x32, 0xe0, 0x91, - 0xe4, 0xe9, 0x2d, 0xfb, 0x6d, 0xa8, 0x07, 0xbe, 0x7e, 0xde, 0x1e, 0xc5, 0x4f, 0x67, 0x5f, 0xc7, - 0xb9, 0x32, 0x87, 0x3d, 0xcf, 0xe3, 0xca, 0x99, 0xee, 0xca, 0xe5, 0x40, 0x3b, 0x4b, 0x99, 0xcb, - 0x7e, 0x20, 0x46, 0x81, 0x10, 0xf7, 0x60, 0xe3, 0xc2, 0xd3, 0x79, 0x36, 0x47, 0xb1, 0x2c, 0xe5, - 0x56, 0x8e, 0xbe, 0x96, 0x55, 0x3d, 0x4c, 0x1a, 0x9e, 0x1d, 0x83, 0xd9, 0x93, 0xe8, 0x55, 0x98, - 0xcc, 0x05, 0xe7, 0x91, 0x7a, 0xaa, 0x36, 0x6d, 0x0d, 0x99, 0x38, 0xe1, 0x3c, 0x72, 0xfe, 0xd6, - 0x82, 0x47, 0xb7, 0x9f, 0x20, 0x48, 0x08, 0x0f, 0x99, 0x59, 0x76, 0x3d, 0xb5, 0xee, 0x46, 0x45, - 0x02, 0x63, 0xdf, 0xcf, 0x66, 0x07, 0x07, 0x55, 0x1c, 0xe9, 0x03, 0x56, 0x7d, 0x9a, 0xf3, 0xcf, - 0x1d, 0xf8, 0xde, 0xed, 0xfb, 0xe7, 0x42, 0xcd, 0xdc, 0x0c, 0xa0, 0x51, 0x9c, 0x01, 0x5c, 0xc0, - 0x5a, 0x51, 0xdc, 0x69, 0xdd, 0xbd, 0xf2, 0xfc, 0x47, 0x77, 0x15, 0x79, 0xb7, 0x08, 0x60, 0x99, - 0x4e, 0xed, 0x68, 0x06, 0x53, 0x0c, 0x50, 0x8d, 0x52, 0x80, 0x22, 0xd0, 0x48, 0x39, 0xcb, 0x92, - 0x8e, 0xfa, 0x46, 0x91, 0xfd, 0xcc, 0x1a, 0x4c, 0xce, 0x99, 0x22, 0x30, 0x21, 0x31, 0x63, 0x71, - 0x26, 0xef, 0xe4, 0x30, 0xd6, 0x6c, 0x66, 0x36, 0xaa, 0x5a, 0xd0, 0x1e, 0xcd, 0x40, 0x4c, 0x6f, - 0x6c, 0x2c, 0x87, 0x79, 0x97, 0x6f, 0x20, 0xdd, 0xd7, 0x26, 0xe1, 0x24, 0x9b, 0xa9, 0xaa, 0x14, - 0xd1, 0xc3, 0xbe, 0x36, 0x09, 0x27, 0xc6, 0xc7, 0xe6, 0xa2, 0x68, 0x57, 0x97, 0x1e, 0xc5, 0x28, - 0x7a, 0x01, 0x6b, 0x23, 0x3e, 0x3a, 0xe7, 0xa9, 0x18, 0x06, 0x49, 0x56, 0xc5, 0xf5, 0xee, 0xf9, - 0x90, 0xef, 0x72, 0x0e, 0xba, 0xe6, 0xa3, 0xf6, 0x68, 0x06, 0x43, 0xfe, 0xca, 0x9a, 0xd6, 0x71, - 0x8b, 0x4a, 0xcc, 0x65, 0x75, 0xe4, 0xcb, 0x3b, 0x1f, 0x99, 0xb5, 0x08, 0x73, 0x25, 0x69, 0x5e, - 0x8a, 0xcd, 0x2f, 0xe1, 0x33, 0xfb, 0x3c, 0xe4, 0xa8, 0x81, 0x15, 0xed, 0x32, 0x06, 0x9c, 0x71, - 0xb6, 0xd5, 0x19, 0x67, 0x73, 0xfe, 0xdb, 0x02, 0x7b, 0xd6, 0x5a, 0x08, 0x40, 0xf3, 0x28, 0xc6, - 0x2f, 0xfb, 0x03, 0xb2, 0x0a, 0xdd, 0x23, 0x7e, 0xf3, 0x3e, 0xe2, 0xa7, 0xf1, 0xfb, 0x88, 0xdb, - 0x16, 0xd9, 0x84, 0xf5, 0x23, 0x7e, 0x73, 0xac, 0x2b, 0x99, 0x6f, 0xd2, 0x78, 0x9c, 0x60, 0xf0, - 0xb3, 0x6b, 0xa4, 0x0b, 0xad, 0x77, 0x3c, 0x42, 0x26, 0x76, 0x9d, 0x74, 0x60, 0x89, 0xa2, 0xc2, - 0xec, 0x06, 0x21, 0xb0, 0x32, 0x28, 0xd5, 0x90, 0xf6, 0x12, 0x32, 0xc9, 0x23, 0xf1, 0x61, 0x74, - 0x1d, 0x48, 0x75, 0xb8, 0xdd, 0x24, 0x1b, 0x60, 0xcf, 0xa6, 0x6c, 0xbb, 0x45, 0xbe, 0x07, 0xdb, - 0x39, 0x76, 0xaa, 0x92, 0x6c, 0xbd, 0x4d, 0xd6, 0x61, 0x35, 0x5f, 0x7f, 0x13, 0x60, 0x0b, 0x61, - 0x77, 0xf4, 0x19, 0x73, 0x0f, 0x66, 0x83, 0xf3, 0xd7, 0x16, 0xd8, 0xb3, 0x8a, 0x25, 0x7d, 0xd8, - 0x98, 0xc5, 0x1d, 0xfa, 0x21, 0xbe, 0xc0, 0x03, 0xd8, 0x9c, 0x5d, 0x39, 0xe6, 0x91, 0x1f, 0x44, - 0x97, 0xb6, 0x45, 0x76, 0xa0, 0x3f, 0xbb, 0x98, 0x45, 0x5f, 0xbb, 0xb6, 0x68, 0x75, 0x9f, 0x7b, - 0x21, 0x96, 0x71, 0x76, 0xdd, 0xf9, 0x0b, 0x0b, 0xb6, 0x2a, 0xb5, 0x8d, 0xcf, 0x79, 0x16, 0x5d, - 0x45, 0xf1, 0x4d, 0x64, 0x7f, 0x80, 0xc0, 0xf4, 0xcc, 0x1e, 0xb4, 0x0b, 0x67, 0xf4, 0xa0, 0x3d, - 0xe5, 0x49, 0x96, 0xa1, 0x33, 0x60, 0x91, 0xc7, 0xc3, 0x90, 0xfb, 0x76, 0x03, 0xf7, 0x9d, 0x62, - 0xc7, 0xc2, 0x7d, 0x7b, 0x89, 0xac, 0xc1, 0xf2, 0x59, 0xa4, 0xc0, 0x6f, 0xe3, 0x54, 0x0e, 0x27, - 0x76, 0xd3, 0xf9, 0xce, 0x82, 0x1e, 0xda, 0xe3, 0xcb, 0x38, 0xbe, 0x1a, 0xb1, 0xf4, 0xaa, 0x3a, - 0xd4, 0x8f, 0xd3, 0xd0, 0x24, 0x2e, 0xfc, 0xcc, 0xfb, 0xfe, 0x7a, 0xa1, 0xef, 0x7f, 0x00, 0x1d, - 0x55, 0xb3, 0xbb, 0x48, 0xab, 0x83, 0x4a, 0x5b, 0x21, 0xce, 0xd2, 0xb0, 0xd8, 0xbc, 0x2d, 0x95, - 0x9b, 0xb7, 0x87, 0x00, 0xc6, 0x58, 0xd1, 0x42, 0x9b, 0xda, 0x42, 0x0d, 0x66, 0x4f, 0x3a, 0x7f, - 0x0e, 0x1f, 0xa2, 0x84, 0x07, 0x91, 0x38, 0x13, 0x3c, 0xc5, 0x83, 0xf4, 0xc4, 0xb5, 0x42, 0xd4, - 0x6d, 0x68, 0x8f, 0x0d, 0x9d, 0x91, 0x37, 0x87, 0xd5, 0x00, 0x74, 0xc8, 0x02, 0x35, 0xef, 0xd0, - 0x85, 0x5c, 0x4b, 0xc1, 0x87, 0xa5, 0xde, 0xb2, 0x51, 0x12, 0xcf, 0x79, 0xad, 0xcb, 0xa5, 0x41, - 0xc8, 0x59, 0xfa, 0x2a, 0x10, 0x32, 0x4e, 0x27, 0xc5, 0xe0, 0x69, 0x95, 0x82, 0xe7, 0x43, 0x00, - 0x0f, 0x09, 0xf5, 0x5d, 0x4c, 0x70, 0x37, 0x98, 0x3d, 0xe9, 0xfc, 0xab, 0x05, 0x04, 0x99, 0x99, - 0x5f, 0x0c, 0x8e, 0x03, 0x4f, 0x8e, 0x53, 0xbe, 0x70, 0x3a, 0x55, 0x18, 0x21, 0xd6, 0x2a, 0x46, - 0x88, 0x75, 0x35, 0x5c, 0x99, 0x1b, 0x21, 0x36, 0x14, 0x3a, 0x1b, 0x21, 0x3e, 0x80, 0x8e, 0xea, - 0xa6, 0xd4, 0x0c, 0x51, 0x8f, 0x63, 0xd4, 0x0c, 0xf1, 0x64, 0xe1, 0x0c, 0xb1, 0xa9, 0x08, 0x2a, - 0x66, 0x88, 0xad, 0xe2, 0x0c, 0x71, 0x08, 0xeb, 0xf3, 0x37, 0x11, 0xd5, 0x63, 0xd2, 0xdf, 0x83, - 0x76, 0x62, 0x88, 0x4c, 0x79, 0xb8, 0x53, 0x0e, 0x89, 0x65, 0x4e, 0x34, 0xa7, 0x76, 0xfe, 0xad, - 0x0e, 0xdd, 0xc2, 0x6c, 0xbf, 0x42, 0xef, 0x7d, 0x68, 0x31, 0xdf, 0x4f, 0xb9, 0x10, 0xd9, 0x7b, - 0x19, 0xb0, 0x28, 0x52, 0xbd, 0x24, 0x52, 0xb9, 0xe6, 0xd7, 0x1d, 0x58, 0xa1, 0xe6, 0x27, 0xd0, - 0x48, 0x98, 0x1c, 0x9a, 0xfa, 0x5d, 0x7d, 0xe7, 0x9a, 0x6a, 0x16, 0x34, 0x55, 0x1c, 0xab, 0xb7, - 0xcc, 0x9c, 0xd2, 0x8c, 0xd5, 0x37, 0x60, 0x89, 0x8f, 0xe2, 0x9f, 0x06, 0x2a, 0xf7, 0x75, 0xa8, - 0x06, 0x50, 0x55, 0x37, 0x2c, 0x0c, 0xb9, 0x34, 0xe3, 0x10, 0x03, 0x21, 0x73, 0x34, 0x23, 0xd3, - 0x13, 0xa9, 0x6f, 0xa5, 0xd6, 0xc0, 0xf7, 0x79, 0x64, 0x7a, 0x21, 0x03, 0xdd, 0x32, 0x0b, 0xd9, - 0x86, 0x76, 0x12, 0x8b, 0x40, 0x75, 0x95, 0xcb, 0x7a, 0x66, 0x9c, 0xc1, 0xe4, 0x07, 0xf0, 0x61, - 0x92, 0xc6, 0xfe, 0x71, 0xca, 0x2f, 0x78, 0x9a, 0x72, 0x7f, 0xa0, 0xac, 0x7f, 0x5f, 0xcf, 0x41, - 0x3a, 0x74, 0xf1, 0x22, 0xee, 0x92, 0x5c, 0xc8, 0xf9, 0x5d, 0xab, 0x7a, 0xd7, 0xc2, 0x45, 0x94, - 0x23, 0x4e, 0x78, 0xca, 0xce, 0x43, 0x3d, 0x0a, 0xe9, 0xd0, 0x1c, 0x76, 0xfe, 0xb3, 0xa6, 0x55, - 0x6a, 0x7e, 0x37, 0xaa, 0x50, 0x69, 0x41, 0x71, 0xb5, 0x85, 0x23, 0xf7, 0x7a, 0x79, 0x9a, 0x5b, - 0x98, 0x9a, 0xaa, 0x6f, 0x35, 0xa0, 0xe0, 0x69, 0x70, 0xcd, 0x7d, 0xf7, 0x22, 0x8d, 0x47, 0x46, - 0x93, 0x5d, 0x83, 0xfb, 0x3a, 0x8d, 0x47, 0xe4, 0x05, 0x6c, 0xeb, 0x51, 0x82, 0xe0, 0xbe, 0xab, - 0x16, 0xcc, 0x44, 0x54, 0xfd, 0x26, 0xa0, 0x83, 0xd1, 0xa6, 0x1a, 0x2c, 0x08, 0xee, 0xef, 0xe7, - 0xeb, 0x87, 0xb8, 0xac, 0xc7, 0x63, 0x91, 0x97, 0xb1, 0xd7, 0xca, 0x07, 0x8d, 0x52, 0xdc, 0x7f, - 0x5b, 0x55, 0x46, 0xc5, 0x56, 0xad, 0xe2, 0xf7, 0xaa, 0x9c, 0x0c, 0xb7, 0x98, 0x19, 0x36, 0xb6, - 0xd6, 0xf5, 0x85, 0xbf, 0xb5, 0xe1, 0x2a, 0xcd, 0xc9, 0x8a, 0xb6, 0x00, 0xe5, 0xd8, 0xf5, 0x13, - 0x1d, 0x3b, 0xb3, 0xde, 0xef, 0xd8, 0xd8, 0x81, 0xa8, 0x78, 0xf0, 0xa2, 0xb8, 0xb5, 0x3b, 0x89, - 0xeb, 0xfc, 0x8f, 0xa5, 0xc3, 0xe3, 0x09, 0xbb, 0xe6, 0xfe, 0x9e, 0xf1, 0xb8, 0x82, 0x2f, 0x5a, - 0x65, 0x5f, 0x5c, 0xf4, 0x63, 0xc9, 0x0e, 0x74, 0x2e, 0xd8, 0x75, 0x3c, 0x4e, 0x03, 0xa9, 0x55, - 0xda, 0xa6, 0x53, 0xc4, 0x2d, 0x79, 0xe3, 0x09, 0xf4, 0x74, 0x1d, 0xe3, 0x16, 0xc3, 0x53, 0x57, - 0xe3, 0xf4, 0x84, 0xea, 0x37, 0x60, 0x4d, 0x07, 0x7c, 0x31, 0x8c, 0x53, 0xa9, 0x1a, 0x75, 0x61, - 0x7c, 0x71, 0x55, 0x2d, 0x9c, 0x20, 0x1e, 0x1b, 0x76, 0x81, 0x39, 0x8e, 0x47, 0xc2, 0x14, 0xa3, - 0xf8, 0x89, 0xf6, 0x17, 0x08, 0x17, 0xad, 0xdb, 0xbc, 0x6b, 0x33, 0x10, 0xa7, 0x5c, 0xc8, 0xd7, - 0x8d, 0x76, 0xc3, 0x5e, 0x72, 0x7e, 0x6e, 0xe9, 0xd7, 0x9d, 0x9b, 0x75, 0x54, 0xbc, 0xee, 0x6c, - 0xcd, 0x5a, 0x9b, 0xaf, 0x59, 0x0f, 0xe0, 0xd1, 0x50, 0xa7, 0x18, 0x97, 0xa5, 0xde, 0x30, 0xb8, - 0xe6, 0xae, 0x18, 0x27, 0x09, 0xca, 0xce, 0x23, 0xf4, 0x1c, 0xdf, 0x3c, 0xd0, 0x8e, 0x21, 0xdb, - 0xd3, 0x54, 0x27, 0x9a, 0xe8, 0x40, 0xd3, 0x38, 0xff, 0x64, 0xe9, 0x76, 0xd6, 0xa4, 0x7e, 0xcc, - 0x9b, 0x77, 0x1c, 0xaf, 0x7f, 0x09, 0x4d, 0x53, 0xb6, 0xea, 0x96, 0x63, 0x66, 0x3e, 0x54, 0x60, - 0xb8, 0x7b, 0x3a, 0x9d, 0x84, 0x52, 0xb3, 0xc9, 0xf9, 0x1c, 0xba, 0x05, 0xb4, 0x2a, 0x61, 0x8e, - 0xde, 0x1c, 0xbd, 0xff, 0xf6, 0x48, 0x97, 0x30, 0xa7, 0xf4, 0xec, 0xe4, 0xf4, 0x60, 0xdf, 0xb6, - 0x54, 0x29, 0x72, 0xa4, 0xc0, 0x6f, 0xdf, 0xd3, 0xd3, 0x57, 0x7f, 0x64, 0xd7, 0x9c, 0xef, 0xea, - 0x7a, 0x56, 0x58, 0x2c, 0x85, 0x4c, 0x85, 0x57, 0x21, 0x3c, 0x81, 0x86, 0xf2, 0x3b, 0x63, 0x4c, - 0xf8, 0x8d, 0x17, 0x92, 0xb1, 0x09, 0x0c, 0x35, 0x19, 0xa3, 0x71, 0x79, 0x43, 0x0c, 0xaf, 0xd1, - 0x65, 0x16, 0x1b, 0xa6, 0x08, 0x54, 0x89, 0x99, 0x6c, 0xe9, 0x84, 0x6d, 0x46, 0xe0, 0x39, 0x6e, - 0x4f, 0xfd, 0x40, 0x95, 0x72, 0x91, 0xc4, 0x91, 0xc8, 0xa2, 0x7e, 0x0e, 0x63, 0x02, 0xc1, 0xae, - 0x24, 0xd0, 0x9b, 0xb5, 0xfd, 0x75, 0x0c, 0x66, 0x4f, 0x12, 0xbe, 0x78, 0xe6, 0xdc, 0x56, 0x2f, - 0xfb, 0x83, 0xf2, 0xcb, 0x2e, 0xb8, 0xf5, 0xee, 0x82, 0x16, 0x60, 0xd1, 0xa4, 0x5a, 0xeb, 0xb0, - 0x93, 0x0f, 0x15, 0xfe, 0x10, 0x48, 0x45, 0x39, 0x59, 0xd4, 0xc5, 0xf1, 0xc1, 0xd1, 0xfe, 0xe1, - 0xd1, 0x37, 0xa6, 0x9c, 0x1c, 0x0c, 0x0e, 0x8e, 0x51, 0x33, 0xba, 0x9c, 0x3c, 0x18, 0xbc, 0x3d, - 0x3c, 0x3a, 0xd8, 0xb7, 0xeb, 0x08, 0x0d, 0xf6, 0x8e, 0x06, 0x07, 0x6f, 0x0f, 0xf6, 0xed, 0x86, - 0xf3, 0x1f, 0x96, 0x9e, 0x36, 0x94, 0xcb, 0xf9, 0x7d, 0xee, 0x05, 0xa2, 0xfa, 0xb7, 0xa6, 0x1d, - 0xe8, 0x98, 0xf7, 0x3c, 0xcc, 0x2c, 0x6d, 0x8a, 0x20, 0x7f, 0x02, 0xab, 0xbe, 0xd9, 0xef, 0x96, - 0x2c, 0xef, 0xb3, 0xd9, 0xb9, 0xcd, 0xa2, 0x23, 0x77, 0xb3, 0x0f, 0xf3, 0x3c, 0x2b, 0x7e, 0x09, - 0x76, 0x3e, 0x81, 0x95, 0x32, 0x45, 0xe9, 0xb2, 0x1f, 0x94, 0x2e, 0x6b, 0x39, 0xff, 0x52, 0x83, - 0xd5, 0x99, 0xff, 0xe9, 0xa8, 0xae, 0x67, 0x66, 0x87, 0xdf, 0xb5, 0xb9, 0xe1, 0x37, 0xf9, 0x04, - 0x48, 0x91, 0xc4, 0x2d, 0x4e, 0x10, 0xed, 0x02, 0xa1, 0x8e, 0x55, 0xc5, 0x02, 0xa9, 0x71, 0x9f, - 0x02, 0x89, 0x7c, 0x01, 0x3d, 0x11, 0x7b, 0x01, 0x0b, 0xdd, 0x30, 0x88, 0xae, 0xb2, 0x7f, 0xa4, - 0xd9, 0x9a, 0xf9, 0x27, 0x11, 0x45, 0xf1, 0x16, 0x09, 0x68, 0x57, 0x4c, 0x01, 0xf2, 0x07, 0xb0, - 0xc1, 0x23, 0xe1, 0x66, 0x45, 0xb2, 0xeb, 0xe7, 0xff, 0x3a, 0x53, 0x9f, 0x9f, 0xeb, 0xce, 0x55, - 0xe1, 0x94, 0xf0, 0x59, 0x94, 0x70, 0x04, 0x00, 0x65, 0x37, 0x59, 0xaf, 0x5e, 0xa8, 0x64, 0xad, - 0x72, 0x25, 0xfb, 0x06, 0xba, 0xa6, 0xc9, 0xc7, 0x66, 0x53, 0x3d, 0xe1, 0xca, 0xf3, 0x5f, 0x9f, - 0x9e, 0xb8, 0x37, 0xfd, 0x57, 0xab, 0x77, 0xe6, 0x3f, 0xad, 0x0c, 0xd3, 0x5d, 0x35, 0xd5, 0x28, - 0xee, 0x76, 0xfe, 0xd1, 0x82, 0x15, 0x14, 0xb1, 0x70, 0xf2, 0xef, 0x42, 0x37, 0xcd, 0xa1, 0x6c, - 0xf0, 0xb3, 0x51, 0x18, 0x96, 0xe6, 0x8b, 0xb4, 0x48, 0x48, 0x9e, 0xc3, 0x86, 0x18, 0x9f, 0x67, - 0x59, 0xf3, 0xb5, 0x88, 0xa3, 0x97, 0x13, 0xc9, 0xb3, 0xc2, 0x72, 0xe1, 0x1a, 0xf9, 0x04, 0xd6, - 0xb2, 0x09, 0xf7, 0x74, 0x83, 0xfe, 0xf1, 0x7f, 0x7e, 0xc1, 0xf9, 0x7b, 0x2b, 0x2f, 0x80, 0x30, - 0x87, 0xab, 0x06, 0x2b, 0x37, 0x31, 0xfc, 0x5c, 0x98, 0x29, 0x3f, 0x82, 0xa6, 0xf9, 0xbd, 0x4c, - 0x67, 0x01, 0x03, 0x15, 0x8d, 0xb4, 0x51, 0x32, 0xd2, 0x1d, 0xe8, 0x98, 0xcc, 0xcb, 0xd1, 0x2c, - 0xea, 0x58, 0xe0, 0xe6, 0x88, 0x52, 0xa5, 0xa8, 0x2b, 0x9d, 0x1c, 0x76, 0x7e, 0xa2, 0x33, 0x48, - 0xc1, 0x6a, 0xc8, 0x0f, 0x67, 0xcc, 0x6c, 0xee, 0x39, 0xa7, 0xc4, 0x65, 0x0b, 0xcb, 0xe3, 0x42, - 0xad, 0xd8, 0x40, 0xfc, 0x8d, 0x05, 0x0f, 0x0b, 0x35, 0xc5, 0x60, 0xfe, 0x7f, 0x3c, 0x7e, 0xc9, - 0x9c, 0xb0, 0xe2, 0x7f, 0x46, 0x6a, 0x95, 0xff, 0x33, 0x52, 0xd5, 0x08, 0xbc, 0x5c, 0xfe, 0xe3, - 0xee, 0xee, 0xa7, 0x2f, 0xb2, 0x7b, 0x9c, 0x37, 0xd5, 0xd7, 0x67, 0xff, 0x17, 0x00, 0x00, 0xff, - 0xff, 0xf7, 0xbf, 0x19, 0x29, 0x2e, 0x28, 0x00, 0x00, +func (x *MultiAccount_ColorHash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount_ColorHash) ProtoMessage() {} + +func (x *MultiAccount_ColorHash) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount_ColorHash.ProtoReflect.Descriptor instead. +func (*MultiAccount_ColorHash) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *MultiAccount_ColorHash) GetIndex() []int64 { + if x != nil { + return x.Index + } + return nil +} + +type MultiAccount_IdentityImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` + Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` + Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + Filesize int64 `protobuf:"varint,6,opt,name=filesize,proto3" json:"filesize,omitempty"` + ResizeTarget int64 `protobuf:"varint,7,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` + Clock uint64 `protobuf:"varint,8,opt,name=clock,proto3" json:"clock,omitempty"` +} + +func (x *MultiAccount_IdentityImage) Reset() { + *x = MultiAccount_IdentityImage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiAccount_IdentityImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount_IdentityImage) ProtoMessage() {} + +func (x *MultiAccount_IdentityImage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount_IdentityImage.ProtoReflect.Descriptor instead. +func (*MultiAccount_IdentityImage) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *MultiAccount_IdentityImage) GetKeyUid() string { + if x != nil { + return x.KeyUid + } + return "" +} + +func (x *MultiAccount_IdentityImage) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MultiAccount_IdentityImage) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MultiAccount_IdentityImage) GetWidth() int64 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetFilesize() int64 { + if x != nil { + return x.Filesize + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetResizeTarget() int64 { + if x != nil { + return x.ResizeTarget + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +type LocalPairingPayload_Key struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *LocalPairingPayload_Key) Reset() { + *x = LocalPairingPayload_Key{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPayload_Key) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPayload_Key) ProtoMessage() {} + +func (x *LocalPairingPayload_Key) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPayload_Key.ProtoReflect.Descriptor instead. +func (*LocalPairingPayload_Key) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *LocalPairingPayload_Key) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LocalPairingPayload_Key) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +var File_pairing_proto protoreflect.FileDescriptor + +var file_pairing_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1b, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, + 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x88, 0x07, + 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, + 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x56, 0x32, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x12, + 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x55, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, + 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x33, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, + 0x64, 0x55, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x52, 0x07, 0x6b, 0x65, + 0x79, 0x70, 0x61, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x0e, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x10, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, + 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, 0x79, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x17, 0x77, 0x61, 0x74, 0x63, 0x68, + 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, + 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x17, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa8, 0x05, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, + 0x5f, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x17, + 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6c, 0x6f, + 0x63, 0x6b, 0x1a, 0x21, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0xdb, 0x01, 0x0a, 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x22, 0x97, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, + 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x6b, + 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, + 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, + 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x74, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x50, + 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6b, + 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x2d, + 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x01, + 0x0a, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x65, + 0x65, 0x72, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x14, 0x53, 0x79, + 0x6e, 0x63, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x81, 0x06, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x32, 0x12, 0x30, + 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x54, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x64, 0x64, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x68, + 0x61, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x55, 0x73, 0x12, 0x2f, 0x0a, + 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x42, 0x0a, + 0x1a, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x68, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xc5, 0x03, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x6f, + 0x69, 0x6e, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, + 0x65, 0x79, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x97, 0x02, 0x0a, 0x1b, 0x53, 0x79, + 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, + 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x72, + 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x14, + 0x53, 0x79, 0x6e, 0x63, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x16, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x44, 0x0a, 0x1a, + 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, + 0x64, 0x73, 0x22, 0x45, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x23, 0x53, 0x79, 0x6e, + 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x1f, 0x53, + 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6c, + 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x1b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbc, 0x09, 0x0a, + 0x1e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x66, 0x0a, + 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x72, 0x65, + 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x66, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x39, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, + 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x82, + 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xf1, 0x01, 0x0a, + 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x0f, 0x0a, + 0x0b, 0x4e, 0x65, 0x77, 0x4f, 0x6e, 0x65, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x17, + 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x68, 0x61, 0x74, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x10, 0x04, 0x12, + 0x12, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4b, + 0x69, 0x63, 0x6b, 0x65, 0x64, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0a, + 0x22, 0x85, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x49, 0x64, 0x6c, 0x65, 0x10, 0x00, 0x12, + 0x1b, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, + 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x03, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0c, + 0x0a, 0x08, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x6e, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x74, 0x68, 0x79, 0x10, 0x06, 0x22, 0xa0, 0x01, 0x0a, 0x0c, + 0x53, 0x79, 0x6e, 0x63, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7e, + 0x0a, 0x15, 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x4a, + 0x0a, 0x10, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x12, 0x53, + 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x68, 0x0a, 0x13, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, + 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, + 0xd0, 0x03, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x6f, 0x6a, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, + 0x12, 0x16, 0x0a, 0x06, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x72, + 0x6f, 0x64, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x49, 0x44, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x73, + 0x12, 0x34, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x15, 0x74, 0x65, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x70, 0x61, + 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x1a, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, + 0x63, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, + 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x60, 0x0a, 0x15, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xf8, 0x01, 0x0a, + 0x10, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x75, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x75, 0x72, 0x69, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74, + 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x73, + 0x74, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x97, 0x01, 0x0a, 0x15, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a, 0x0a, 0x0b, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x54, 0x52, 0x55, 0x53, 0x54, 0x57, 0x4f, + 0x52, 0x54, 0x48, 0x59, 0x10, 0x02, 0x22, 0xa0, 0x03, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x65, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x12, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x58, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, + 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x79, + 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x5c, 0x0a, 0x0f, + 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x64, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x44, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, + 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x0f, 0x42, 0x61, 0x63, + 0x6b, 0x65, 0x64, 0x55, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, + 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, + 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, + 0x73, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x51, + 0x0a, 0x14, 0x65, 0x6e, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x73, 0x55, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x12, 0x65, + 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x73, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, 0x52, + 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x72, 0x61, 0x77, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x61, 0x77, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x32, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x14, 0x73, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4a, 0x73, 0x6f, 0x6e, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x11, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x63, + 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, + 0x69, 0x6e, 0x6b, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x88, 0x01, 0x0a, 0x1d, 0x53, 0x79, 0x6e, 0x63, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, + 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, + 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pairing_proto_rawDescOnce sync.Once + file_pairing_proto_rawDescData = file_pairing_proto_rawDesc +) + +func file_pairing_proto_rawDescGZIP() []byte { + file_pairing_proto_rawDescOnce.Do(func() { + file_pairing_proto_rawDescData = protoimpl.X.CompressGZIP(file_pairing_proto_rawDescData) + }) + return file_pairing_proto_rawDescData +} + +var file_pairing_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_pairing_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_pairing_proto_goTypes = []interface{}{ + (SyncActivityCenterNotification_NotificationType)(0), // 0: protobuf.SyncActivityCenterNotification.NotificationType + (SyncActivityCenterNotification_MembershipStatus)(0), // 1: protobuf.SyncActivityCenterNotification.MembershipStatus + (SyncActivityCenterNotification_ContactVerificationStatus)(0), // 2: protobuf.SyncActivityCenterNotification.ContactVerificationStatus + (SyncTrustedUser_TrustStatus)(0), // 3: protobuf.SyncTrustedUser.TrustStatus + (SyncVerificationRequest_VerificationStatus)(0), // 4: protobuf.SyncVerificationRequest.VerificationStatus + (SyncContactRequestDecision_DecisionStatus)(0), // 5: protobuf.SyncContactRequestDecision.DecisionStatus + (*FetchingBackedUpDataDetails)(nil), // 6: protobuf.FetchingBackedUpDataDetails + (*Backup)(nil), // 7: protobuf.Backup + (*MultiAccount)(nil), // 8: protobuf.MultiAccount + (*LocalPairingPayload)(nil), // 9: protobuf.LocalPairingPayload + (*LocalPairingPeerHello)(nil), // 10: protobuf.LocalPairingPeerHello + (*SyncPairInstallation)(nil), // 11: protobuf.SyncPairInstallation + (*SyncInstallationContactV2)(nil), // 12: protobuf.SyncInstallationContactV2 + (*SyncInstallationAccount)(nil), // 13: protobuf.SyncInstallationAccount + (*SyncInstallationPublicChat)(nil), // 14: protobuf.SyncInstallationPublicChat + (*SyncInstallationCommunity)(nil), // 15: protobuf.SyncInstallationCommunity + (*SyncCommunityRequestsToJoin)(nil), // 16: protobuf.SyncCommunityRequestsToJoin + (*SyncChatRemoved)(nil), // 17: protobuf.SyncChatRemoved + (*SyncChatMessagesRead)(nil), // 18: protobuf.SyncChatMessagesRead + (*SyncActivityCenterRead)(nil), // 19: protobuf.SyncActivityCenterRead + (*SyncActivityCenterAccepted)(nil), // 20: protobuf.SyncActivityCenterAccepted + (*SyncActivityCenterDismissed)(nil), // 21: protobuf.SyncActivityCenterDismissed + (*SyncActivityCenterNotificationState)(nil), // 22: protobuf.SyncActivityCenterNotificationState + (*SyncActivityCenterNotifications)(nil), // 23: protobuf.SyncActivityCenterNotifications + (*SyncActivityCenterNotification)(nil), // 24: protobuf.SyncActivityCenterNotification + (*SyncBookmark)(nil), // 25: protobuf.SyncBookmark + (*SyncEnsUsernameDetail)(nil), // 26: protobuf.SyncEnsUsernameDetail + (*SyncClearHistory)(nil), // 27: protobuf.SyncClearHistory + (*SyncProfilePicture)(nil), // 28: protobuf.SyncProfilePicture + (*SyncProfilePictures)(nil), // 29: protobuf.SyncProfilePictures + (*SyncAccount)(nil), // 30: protobuf.SyncAccount + (*SyncKeypair)(nil), // 31: protobuf.SyncKeypair + (*SyncAccountsPositions)(nil), // 32: protobuf.SyncAccountsPositions + (*SyncSavedAddress)(nil), // 33: protobuf.SyncSavedAddress + (*SyncCommunitySettings)(nil), // 34: protobuf.SyncCommunitySettings + (*SyncTrustedUser)(nil), // 35: protobuf.SyncTrustedUser + (*SyncVerificationRequest)(nil), // 36: protobuf.SyncVerificationRequest + (*SyncContactRequestDecision)(nil), // 37: protobuf.SyncContactRequestDecision + (*BackedUpProfile)(nil), // 38: protobuf.BackedUpProfile + (*RawMessage)(nil), // 39: protobuf.RawMessage + (*SyncRawMessage)(nil), // 40: protobuf.SyncRawMessage + (*SyncKeycard)(nil), // 41: protobuf.SyncKeycard + (*SyncSocialLinks)(nil), // 42: protobuf.SyncSocialLinks + (*SyncAccountCustomizationColor)(nil), // 43: protobuf.SyncAccountCustomizationColor + (*MultiAccount_ColorHash)(nil), // 44: protobuf.MultiAccount.ColorHash + (*MultiAccount_IdentityImage)(nil), // 45: protobuf.MultiAccount.IdentityImage + (*LocalPairingPayload_Key)(nil), // 46: protobuf.LocalPairingPayload.Key + (*SyncSetting)(nil), // 47: protobuf.SyncSetting + (*RevealedAccount)(nil), // 48: protobuf.RevealedAccount + (ApplicationMetadataMessage_Type)(0), // 49: protobuf.ApplicationMetadataMessage.Type + (*SocialLink)(nil), // 50: protobuf.SocialLink +} +var file_pairing_proto_depIdxs = []int32{ + 12, // 0: protobuf.Backup.contacts:type_name -> protobuf.SyncInstallationContactV2 + 15, // 1: protobuf.Backup.communities:type_name -> protobuf.SyncInstallationCommunity + 6, // 2: protobuf.Backup.contactsDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 6, // 3: protobuf.Backup.communitiesDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 38, // 4: protobuf.Backup.profile:type_name -> protobuf.BackedUpProfile + 6, // 5: protobuf.Backup.profileDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 47, // 6: protobuf.Backup.setting:type_name -> protobuf.SyncSetting + 6, // 7: protobuf.Backup.settingsDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 31, // 8: protobuf.Backup.keypair:type_name -> protobuf.SyncKeypair + 6, // 9: protobuf.Backup.keypairDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 30, // 10: protobuf.Backup.watchOnlyAccount:type_name -> protobuf.SyncAccount + 6, // 11: protobuf.Backup.watchOnlyAccountDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 44, // 12: protobuf.MultiAccount.color_hash:type_name -> protobuf.MultiAccount.ColorHash + 45, // 13: protobuf.MultiAccount.images:type_name -> protobuf.MultiAccount.IdentityImage + 46, // 14: protobuf.LocalPairingPayload.keys:type_name -> protobuf.LocalPairingPayload.Key + 8, // 15: protobuf.LocalPairingPayload.multiaccount:type_name -> protobuf.MultiAccount + 16, // 16: protobuf.SyncInstallationCommunity.requests_to_join:type_name -> protobuf.SyncCommunityRequestsToJoin + 34, // 17: protobuf.SyncInstallationCommunity.settings:type_name -> protobuf.SyncCommunitySettings + 48, // 18: protobuf.SyncCommunityRequestsToJoin.revealed_accounts:type_name -> protobuf.RevealedAccount + 24, // 19: protobuf.SyncActivityCenterNotifications.activity_center_notifications:type_name -> protobuf.SyncActivityCenterNotification + 0, // 20: protobuf.SyncActivityCenterNotification.notification_type:type_name -> protobuf.SyncActivityCenterNotification.NotificationType + 1, // 21: protobuf.SyncActivityCenterNotification.membership_status:type_name -> protobuf.SyncActivityCenterNotification.MembershipStatus + 2, // 22: protobuf.SyncActivityCenterNotification.contact_verification_status:type_name -> protobuf.SyncActivityCenterNotification.ContactVerificationStatus + 28, // 23: protobuf.SyncProfilePictures.pictures:type_name -> protobuf.SyncProfilePicture + 30, // 24: protobuf.SyncKeypair.accounts:type_name -> protobuf.SyncAccount + 41, // 25: protobuf.SyncKeypair.keycards:type_name -> protobuf.SyncKeycard + 30, // 26: protobuf.SyncAccountsPositions.accounts:type_name -> protobuf.SyncAccount + 3, // 27: protobuf.SyncTrustedUser.status:type_name -> protobuf.SyncTrustedUser.TrustStatus + 4, // 28: protobuf.SyncVerificationRequest.verification_status:type_name -> protobuf.SyncVerificationRequest.VerificationStatus + 5, // 29: protobuf.SyncContactRequestDecision.decision_status:type_name -> protobuf.SyncContactRequestDecision.DecisionStatus + 28, // 30: protobuf.BackedUpProfile.pictures:type_name -> protobuf.SyncProfilePicture + 42, // 31: protobuf.BackedUpProfile.social_links:type_name -> protobuf.SyncSocialLinks + 26, // 32: protobuf.BackedUpProfile.ens_username_details:type_name -> protobuf.SyncEnsUsernameDetail + 49, // 33: protobuf.RawMessage.messageType:type_name -> protobuf.ApplicationMetadataMessage.Type + 39, // 34: protobuf.SyncRawMessage.rawMessages:type_name -> protobuf.RawMessage + 50, // 35: protobuf.SyncSocialLinks.social_links:type_name -> protobuf.SocialLink + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name +} + +func init() { file_pairing_proto_init() } +func file_pairing_proto_init() { + if File_pairing_proto != nil { + return + } + file_chat_identity_proto_init() + file_sync_settings_proto_init() + file_application_metadata_message_proto_init() + file_communities_proto_init() + if !protoimpl.UnsafeEnabled { + file_pairing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchingBackedUpDataDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Backup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPeerHello); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncPairInstallation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationContactV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationPublicChat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCommunityRequestsToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncChatRemoved); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncChatMessagesRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterAccepted); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterDismissed); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterNotificationState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterNotifications); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncBookmark); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncEnsUsernameDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncClearHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncProfilePicture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncProfilePictures); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncKeypair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccountsPositions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSavedAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCommunitySettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncTrustedUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncVerificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncContactRequestDecision); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackedUpProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncRawMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncKeycard); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSocialLinks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccountCustomizationColor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount_ColorHash); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount_IdentityImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPayload_Key); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pairing_proto_rawDesc, + NumEnums: 6, + NumMessages: 41, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pairing_proto_goTypes, + DependencyIndexes: file_pairing_proto_depIdxs, + EnumInfos: file_pairing_proto_enumTypes, + MessageInfos: file_pairing_proto_msgTypes, + }.Build() + File_pairing_proto = out.File + file_pairing_proto_rawDesc = nil + file_pairing_proto_goTypes = nil + file_pairing_proto_depIdxs = nil } diff --git a/protocol/protobuf/pairing.proto b/protocol/protobuf/pairing.proto index e8e2b7a33..3af083681 100644 --- a/protocol/protobuf/pairing.proto +++ b/protocol/protobuf/pairing.proto @@ -20,7 +20,7 @@ message Backup { /* this is what we already had */ repeated SyncInstallationContactV2 contacts = 3; - repeated SyncCommunity communities = 4; + repeated SyncInstallationCommunity communities = 4; /* newly added details to be backed up to and fetched from waku */ FetchingBackedUpDataDetails contactsDetails = 5; FetchingBackedUpDataDetails communitiesDetails = 6; @@ -83,7 +83,7 @@ message LocalPairingPeerHello { bytes signature = 5; } -message PairInstallation { +message SyncPairInstallation { uint64 clock = 1; string installation_id = 2; string device_type = 3; @@ -92,16 +92,6 @@ message PairInstallation { uint32 version = 5; } -message SyncInstallationContact { - uint64 clock = 1; - string id = 2; - string profile_image = 3; - string ens_name = 4; - uint64 last_updated = 5; - repeated string system_tags = 6; - string local_nickname = 7; -} - message SyncInstallationContactV2 { uint64 last_updated_locally = 1; string id = 2; @@ -135,7 +125,7 @@ message SyncInstallationPublicChat { string id = 2; } -message SyncCommunity { +message SyncInstallationCommunity { uint64 clock = 1; bytes id = 2; // Don't sync private_key because we want to have only one control node @@ -162,13 +152,6 @@ message SyncCommunityRequestsToJoin { repeated RevealedAccount revealed_accounts = 8; } -message SyncInstallation { - repeated SyncInstallationContact contacts = 1; - repeated SyncInstallationPublicChat public_chats = 2; - SyncInstallationAccount account = 3; - repeated SyncCommunity communities = 4; -} - message SyncChatRemoved { uint64 clock = 1; string id = 2; diff --git a/protocol/protobuf/pin_message.pb.go b/protocol/protobuf/pin_message.pb.go index f1267b4bb..b6c964129 100644 --- a/protocol/protobuf/pin_message.pb.go +++ b/protocol/protobuf/pin_message.pb.go @@ -1,117 +1,187 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: pin_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PinMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` Pinned bool `protobuf:"varint,4,opt,name=pinned,proto3" json:"pinned,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` } -func (m *PinMessage) Reset() { *m = PinMessage{} } -func (m *PinMessage) String() string { return proto.CompactTextString(m) } -func (*PinMessage) ProtoMessage() {} +func (x *PinMessage) Reset() { + *x = PinMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pin_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PinMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PinMessage) ProtoMessage() {} + +func (x *PinMessage) ProtoReflect() protoreflect.Message { + mi := &file_pin_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PinMessage.ProtoReflect.Descriptor instead. func (*PinMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_b3c2ad1be7128a0a, []int{0} + return file_pin_message_proto_rawDescGZIP(), []int{0} } -func (m *PinMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PinMessage.Unmarshal(m, b) -} -func (m *PinMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PinMessage.Marshal(b, m, deterministic) -} -func (m *PinMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_PinMessage.Merge(m, src) -} -func (m *PinMessage) XXX_Size() int { - return xxx_messageInfo_PinMessage.Size(m) -} -func (m *PinMessage) XXX_DiscardUnknown() { - xxx_messageInfo_PinMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_PinMessage proto.InternalMessageInfo - -func (m *PinMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *PinMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *PinMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *PinMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *PinMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *PinMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *PinMessage) GetPinned() bool { - if m != nil { - return m.Pinned +func (x *PinMessage) GetPinned() bool { + if x != nil { + return x.Pinned } return false } -func (m *PinMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *PinMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func init() { - proto.RegisterType((*PinMessage)(nil), "protobuf.PinMessage") +var File_pin_message_proto protoreflect.FileDescriptor + +var file_pin_message_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x0a, 0x50, + 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, + 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("pin_message.proto", fileDescriptor_b3c2ad1be7128a0a) +var ( + file_pin_message_proto_rawDescOnce sync.Once + file_pin_message_proto_rawDescData = file_pin_message_proto_rawDesc +) + +func file_pin_message_proto_rawDescGZIP() []byte { + file_pin_message_proto_rawDescOnce.Do(func() { + file_pin_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_pin_message_proto_rawDescData) + }) + return file_pin_message_proto_rawDescData } -var fileDescriptor_b3c2ad1be7128a0a = []byte{ - // 192 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2c, 0xc8, 0xcc, 0x8b, - 0xcf, 0x4d, 0x2d, 0x2e, 0x4e, 0x4c, 0x4f, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, - 0x53, 0x49, 0xa5, 0x69, 0x52, 0xdc, 0xa9, 0x79, 0xa5, 0xb9, 0xc5, 0x10, 0x61, 0xa5, 0x35, 0x8c, - 0x5c, 0x5c, 0x01, 0x99, 0x79, 0xbe, 0x10, 0xb5, 0x42, 0x22, 0x5c, 0xac, 0xc9, 0x39, 0xf9, 0xc9, - 0xd9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x2c, 0x41, 0x10, 0x8e, 0x90, 0x2c, 0x17, 0x17, 0xd4, 0xb0, - 0xf8, 0xcc, 0x14, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x4e, 0xa8, 0x88, 0x67, 0x8a, 0x90, - 0x38, 0x17, 0x7b, 0x72, 0x46, 0x62, 0x09, 0x48, 0x8e, 0x19, 0x2c, 0xc7, 0x06, 0xe2, 0x7a, 0xa6, - 0x08, 0x89, 0x71, 0xb1, 0x15, 0x64, 0xe6, 0xe5, 0xa5, 0xa6, 0x48, 0xb0, 0x28, 0x30, 0x6a, 0x70, - 0x04, 0x41, 0x79, 0x42, 0x16, 0x5c, 0x3c, 0x30, 0xf3, 0x4a, 0x2a, 0x0b, 0x52, 0x25, 0x58, 0x15, - 0x18, 0x35, 0xf8, 0x8c, 0x44, 0xf5, 0x60, 0x4e, 0xd4, 0x83, 0x3a, 0x27, 0xa4, 0xb2, 0x20, 0x35, - 0x88, 0x3b, 0x17, 0xc1, 0x71, 0xe2, 0x8d, 0xe2, 0xd6, 0xd3, 0xb7, 0x86, 0xa9, 0x4b, 0x62, 0x03, - 0xb3, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x78, 0x7a, 0xb9, 0x5d, 0xf0, 0x00, 0x00, 0x00, +var file_pin_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_pin_message_proto_goTypes = []interface{}{ + (*PinMessage)(nil), // 0: protobuf.PinMessage + (MessageType)(0), // 1: protobuf.MessageType +} +var file_pin_message_proto_depIdxs = []int32{ + 1, // 0: protobuf.PinMessage.message_type:type_name -> protobuf.MessageType + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_pin_message_proto_init() } +func file_pin_message_proto_init() { + if File_pin_message_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_pin_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PinMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pin_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pin_message_proto_goTypes, + DependencyIndexes: file_pin_message_proto_depIdxs, + MessageInfos: file_pin_message_proto_msgTypes, + }.Build() + File_pin_message_proto = out.File + file_pin_message_proto_rawDesc = nil + file_pin_message_proto_goTypes = nil + file_pin_message_proto_depIdxs = nil } diff --git a/protocol/protobuf/push_notifications.pb.go b/protocol/protobuf/push_notifications.pb.go index 9221ff0a9..210871906 100644 --- a/protocol/protobuf/push_notifications.pb.go +++ b/protocol/protobuf/push_notifications.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: push_notifications.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PushNotificationRegistration_TokenType int32 @@ -28,24 +28,45 @@ const ( PushNotificationRegistration_FIREBASE_TOKEN PushNotificationRegistration_TokenType = 2 ) -var PushNotificationRegistration_TokenType_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_TYPE", - 1: "APN_TOKEN", - 2: "FIREBASE_TOKEN", -} +// Enum value maps for PushNotificationRegistration_TokenType. +var ( + PushNotificationRegistration_TokenType_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_TYPE", + 1: "APN_TOKEN", + 2: "FIREBASE_TOKEN", + } + PushNotificationRegistration_TokenType_value = map[string]int32{ + "UNKNOWN_TOKEN_TYPE": 0, + "APN_TOKEN": 1, + "FIREBASE_TOKEN": 2, + } +) -var PushNotificationRegistration_TokenType_value = map[string]int32{ - "UNKNOWN_TOKEN_TYPE": 0, - "APN_TOKEN": 1, - "FIREBASE_TOKEN": 2, +func (x PushNotificationRegistration_TokenType) Enum() *PushNotificationRegistration_TokenType { + p := new(PushNotificationRegistration_TokenType) + *p = x + return p } func (x PushNotificationRegistration_TokenType) String() string { - return proto.EnumName(PushNotificationRegistration_TokenType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationRegistration_TokenType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[0].Descriptor() +} + +func (PushNotificationRegistration_TokenType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[0] +} + +func (x PushNotificationRegistration_TokenType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationRegistration_TokenType.Descriptor instead. func (PushNotificationRegistration_TokenType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{0, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{0, 0} } type PushNotificationRegistrationResponse_ErrorType int32 @@ -58,28 +79,49 @@ const ( PushNotificationRegistrationResponse_INTERNAL_ERROR PushNotificationRegistrationResponse_ErrorType = 4 ) -var PushNotificationRegistrationResponse_ErrorType_name = map[int32]string{ - 0: "UNKNOWN_ERROR_TYPE", - 1: "MALFORMED_MESSAGE", - 2: "VERSION_MISMATCH", - 3: "UNSUPPORTED_TOKEN_TYPE", - 4: "INTERNAL_ERROR", -} +// Enum value maps for PushNotificationRegistrationResponse_ErrorType. +var ( + PushNotificationRegistrationResponse_ErrorType_name = map[int32]string{ + 0: "UNKNOWN_ERROR_TYPE", + 1: "MALFORMED_MESSAGE", + 2: "VERSION_MISMATCH", + 3: "UNSUPPORTED_TOKEN_TYPE", + 4: "INTERNAL_ERROR", + } + PushNotificationRegistrationResponse_ErrorType_value = map[string]int32{ + "UNKNOWN_ERROR_TYPE": 0, + "MALFORMED_MESSAGE": 1, + "VERSION_MISMATCH": 2, + "UNSUPPORTED_TOKEN_TYPE": 3, + "INTERNAL_ERROR": 4, + } +) -var PushNotificationRegistrationResponse_ErrorType_value = map[string]int32{ - "UNKNOWN_ERROR_TYPE": 0, - "MALFORMED_MESSAGE": 1, - "VERSION_MISMATCH": 2, - "UNSUPPORTED_TOKEN_TYPE": 3, - "INTERNAL_ERROR": 4, +func (x PushNotificationRegistrationResponse_ErrorType) Enum() *PushNotificationRegistrationResponse_ErrorType { + p := new(PushNotificationRegistrationResponse_ErrorType) + *p = x + return p } func (x PushNotificationRegistrationResponse_ErrorType) String() string { - return proto.EnumName(PushNotificationRegistrationResponse_ErrorType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationRegistrationResponse_ErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[1].Descriptor() +} + +func (PushNotificationRegistrationResponse_ErrorType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[1] +} + +func (x PushNotificationRegistrationResponse_ErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationRegistrationResponse_ErrorType.Descriptor instead. func (PushNotificationRegistrationResponse_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{1, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{1, 0} } type PushNotification_PushNotificationType int32 @@ -91,26 +133,47 @@ const ( PushNotification_REQUEST_TO_JOIN_COMMUNITY PushNotification_PushNotificationType = 3 ) -var PushNotification_PushNotificationType_name = map[int32]string{ - 0: "UNKNOWN_PUSH_NOTIFICATION_TYPE", - 1: "MESSAGE", - 2: "MENTION", - 3: "REQUEST_TO_JOIN_COMMUNITY", -} +// Enum value maps for PushNotification_PushNotificationType. +var ( + PushNotification_PushNotificationType_name = map[int32]string{ + 0: "UNKNOWN_PUSH_NOTIFICATION_TYPE", + 1: "MESSAGE", + 2: "MENTION", + 3: "REQUEST_TO_JOIN_COMMUNITY", + } + PushNotification_PushNotificationType_value = map[string]int32{ + "UNKNOWN_PUSH_NOTIFICATION_TYPE": 0, + "MESSAGE": 1, + "MENTION": 2, + "REQUEST_TO_JOIN_COMMUNITY": 3, + } +) -var PushNotification_PushNotificationType_value = map[string]int32{ - "UNKNOWN_PUSH_NOTIFICATION_TYPE": 0, - "MESSAGE": 1, - "MENTION": 2, - "REQUEST_TO_JOIN_COMMUNITY": 3, +func (x PushNotification_PushNotificationType) Enum() *PushNotification_PushNotificationType { + p := new(PushNotification_PushNotificationType) + *p = x + return p } func (x PushNotification_PushNotificationType) String() string { - return proto.EnumName(PushNotification_PushNotificationType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotification_PushNotificationType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[2].Descriptor() +} + +func (PushNotification_PushNotificationType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[2] +} + +func (x PushNotification_PushNotificationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotification_PushNotificationType.Descriptor instead. func (PushNotification_PushNotificationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{6, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{6, 0} } type PushNotificationReport_ErrorType int32 @@ -122,29 +185,54 @@ const ( PushNotificationReport_NOT_REGISTERED PushNotificationReport_ErrorType = 3 ) -var PushNotificationReport_ErrorType_name = map[int32]string{ - 0: "UNKNOWN_ERROR_TYPE", - 1: "WRONG_TOKEN", - 2: "INTERNAL_ERROR", - 3: "NOT_REGISTERED", -} +// Enum value maps for PushNotificationReport_ErrorType. +var ( + PushNotificationReport_ErrorType_name = map[int32]string{ + 0: "UNKNOWN_ERROR_TYPE", + 1: "WRONG_TOKEN", + 2: "INTERNAL_ERROR", + 3: "NOT_REGISTERED", + } + PushNotificationReport_ErrorType_value = map[string]int32{ + "UNKNOWN_ERROR_TYPE": 0, + "WRONG_TOKEN": 1, + "INTERNAL_ERROR": 2, + "NOT_REGISTERED": 3, + } +) -var PushNotificationReport_ErrorType_value = map[string]int32{ - "UNKNOWN_ERROR_TYPE": 0, - "WRONG_TOKEN": 1, - "INTERNAL_ERROR": 2, - "NOT_REGISTERED": 3, +func (x PushNotificationReport_ErrorType) Enum() *PushNotificationReport_ErrorType { + p := new(PushNotificationReport_ErrorType) + *p = x + return p } func (x PushNotificationReport_ErrorType) String() string { - return proto.EnumName(PushNotificationReport_ErrorType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationReport_ErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[3].Descriptor() +} + +func (PushNotificationReport_ErrorType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[3] +} + +func (x PushNotificationReport_ErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationReport_ErrorType.Descriptor instead. func (PushNotificationReport_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{8, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{8, 0} } type PushNotificationRegistration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + TokenType PushNotificationRegistration_TokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.PushNotificationRegistration_TokenType" json:"token_type,omitempty"` DeviceToken string `protobuf:"bytes,2,opt,name=device_token,json=deviceToken,proto3" json:"device_token,omitempty"` InstallationId string `protobuf:"bytes,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` @@ -160,757 +248,1109 @@ type PushNotificationRegistration struct { BlockMentions bool `protobuf:"varint,13,opt,name=block_mentions,json=blockMentions,proto3" json:"block_mentions,omitempty"` AllowedMentionsChatList [][]byte `protobuf:"bytes,14,rep,name=allowed_mentions_chat_list,json=allowedMentionsChatList,proto3" json:"allowed_mentions_chat_list,omitempty"` MutedChatList [][]byte `protobuf:"bytes,15,rep,name=muted_chat_list,json=mutedChatList,proto3" json:"muted_chat_list,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *PushNotificationRegistration) Reset() { *m = PushNotificationRegistration{} } -func (m *PushNotificationRegistration) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRegistration) ProtoMessage() {} +func (x *PushNotificationRegistration) Reset() { + *x = PushNotificationRegistration{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRegistration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRegistration) ProtoMessage() {} + +func (x *PushNotificationRegistration) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRegistration.ProtoReflect.Descriptor instead. func (*PushNotificationRegistration) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{0} + return file_push_notifications_proto_rawDescGZIP(), []int{0} } -func (m *PushNotificationRegistration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRegistration.Unmarshal(m, b) -} -func (m *PushNotificationRegistration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRegistration.Marshal(b, m, deterministic) -} -func (m *PushNotificationRegistration) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRegistration.Merge(m, src) -} -func (m *PushNotificationRegistration) XXX_Size() int { - return xxx_messageInfo_PushNotificationRegistration.Size(m) -} -func (m *PushNotificationRegistration) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRegistration.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRegistration proto.InternalMessageInfo - -func (m *PushNotificationRegistration) GetTokenType() PushNotificationRegistration_TokenType { - if m != nil { - return m.TokenType +func (x *PushNotificationRegistration) GetTokenType() PushNotificationRegistration_TokenType { + if x != nil { + return x.TokenType } return PushNotificationRegistration_UNKNOWN_TOKEN_TYPE } -func (m *PushNotificationRegistration) GetDeviceToken() string { - if m != nil { - return m.DeviceToken +func (x *PushNotificationRegistration) GetDeviceToken() string { + if x != nil { + return x.DeviceToken } return "" } -func (m *PushNotificationRegistration) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationRegistration) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotificationRegistration) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotificationRegistration) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotificationRegistration) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *PushNotificationRegistration) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *PushNotificationRegistration) GetVersion() uint64 { - if m != nil { - return m.Version +func (x *PushNotificationRegistration) GetVersion() uint64 { + if x != nil { + return x.Version } return 0 } -func (m *PushNotificationRegistration) GetAllowedKeyList() [][]byte { - if m != nil { - return m.AllowedKeyList +func (x *PushNotificationRegistration) GetAllowedKeyList() [][]byte { + if x != nil { + return x.AllowedKeyList } return nil } -func (m *PushNotificationRegistration) GetBlockedChatList() [][]byte { - if m != nil { - return m.BlockedChatList +func (x *PushNotificationRegistration) GetBlockedChatList() [][]byte { + if x != nil { + return x.BlockedChatList } return nil } -func (m *PushNotificationRegistration) GetUnregister() bool { - if m != nil { - return m.Unregister +func (x *PushNotificationRegistration) GetUnregister() bool { + if x != nil { + return x.Unregister } return false } -func (m *PushNotificationRegistration) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *PushNotificationRegistration) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *PushNotificationRegistration) GetAllowFromContactsOnly() bool { - if m != nil { - return m.AllowFromContactsOnly +func (x *PushNotificationRegistration) GetAllowFromContactsOnly() bool { + if x != nil { + return x.AllowFromContactsOnly } return false } -func (m *PushNotificationRegistration) GetApnTopic() string { - if m != nil { - return m.ApnTopic +func (x *PushNotificationRegistration) GetApnTopic() string { + if x != nil { + return x.ApnTopic } return "" } -func (m *PushNotificationRegistration) GetBlockMentions() bool { - if m != nil { - return m.BlockMentions +func (x *PushNotificationRegistration) GetBlockMentions() bool { + if x != nil { + return x.BlockMentions } return false } -func (m *PushNotificationRegistration) GetAllowedMentionsChatList() [][]byte { - if m != nil { - return m.AllowedMentionsChatList +func (x *PushNotificationRegistration) GetAllowedMentionsChatList() [][]byte { + if x != nil { + return x.AllowedMentionsChatList } return nil } -func (m *PushNotificationRegistration) GetMutedChatList() [][]byte { - if m != nil { - return m.MutedChatList +func (x *PushNotificationRegistration) GetMutedChatList() [][]byte { + if x != nil { + return x.MutedChatList } return nil } type PushNotificationRegistrationResponse struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` - RequestId []byte `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` + RequestId []byte `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` } -func (m *PushNotificationRegistrationResponse) Reset() { *m = PushNotificationRegistrationResponse{} } -func (m *PushNotificationRegistrationResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRegistrationResponse) ProtoMessage() {} +func (x *PushNotificationRegistrationResponse) Reset() { + *x = PushNotificationRegistrationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRegistrationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRegistrationResponse) ProtoMessage() {} + +func (x *PushNotificationRegistrationResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRegistrationResponse.ProtoReflect.Descriptor instead. func (*PushNotificationRegistrationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{1} + return file_push_notifications_proto_rawDescGZIP(), []int{1} } -func (m *PushNotificationRegistrationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRegistrationResponse.Unmarshal(m, b) -} -func (m *PushNotificationRegistrationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRegistrationResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationRegistrationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRegistrationResponse.Merge(m, src) -} -func (m *PushNotificationRegistrationResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationRegistrationResponse.Size(m) -} -func (m *PushNotificationRegistrationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRegistrationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRegistrationResponse proto.InternalMessageInfo - -func (m *PushNotificationRegistrationResponse) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationRegistrationResponse) GetSuccess() bool { + if x != nil { + return x.Success } return false } -func (m *PushNotificationRegistrationResponse) GetError() PushNotificationRegistrationResponse_ErrorType { - if m != nil { - return m.Error +func (x *PushNotificationRegistrationResponse) GetError() PushNotificationRegistrationResponse_ErrorType { + if x != nil { + return x.Error } return PushNotificationRegistrationResponse_UNKNOWN_ERROR_TYPE } -func (m *PushNotificationRegistrationResponse) GetRequestId() []byte { - if m != nil { - return m.RequestId +func (x *PushNotificationRegistrationResponse) GetRequestId() []byte { + if x != nil { + return x.RequestId } return nil } type ContactCodeAdvertisement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + PushNotificationInfo []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=push_notification_info,json=pushNotificationInfo,proto3" json:"push_notification_info,omitempty"` ChatIdentity *ChatIdentity `protobuf:"bytes,2,opt,name=chat_identity,json=chatIdentity,proto3" json:"chat_identity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ContactCodeAdvertisement) Reset() { *m = ContactCodeAdvertisement{} } -func (m *ContactCodeAdvertisement) String() string { return proto.CompactTextString(m) } -func (*ContactCodeAdvertisement) ProtoMessage() {} +func (x *ContactCodeAdvertisement) Reset() { + *x = ContactCodeAdvertisement{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactCodeAdvertisement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactCodeAdvertisement) ProtoMessage() {} + +func (x *ContactCodeAdvertisement) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactCodeAdvertisement.ProtoReflect.Descriptor instead. func (*ContactCodeAdvertisement) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{2} + return file_push_notifications_proto_rawDescGZIP(), []int{2} } -func (m *ContactCodeAdvertisement) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactCodeAdvertisement.Unmarshal(m, b) -} -func (m *ContactCodeAdvertisement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactCodeAdvertisement.Marshal(b, m, deterministic) -} -func (m *ContactCodeAdvertisement) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactCodeAdvertisement.Merge(m, src) -} -func (m *ContactCodeAdvertisement) XXX_Size() int { - return xxx_messageInfo_ContactCodeAdvertisement.Size(m) -} -func (m *ContactCodeAdvertisement) XXX_DiscardUnknown() { - xxx_messageInfo_ContactCodeAdvertisement.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactCodeAdvertisement proto.InternalMessageInfo - -func (m *ContactCodeAdvertisement) GetPushNotificationInfo() []*PushNotificationQueryInfo { - if m != nil { - return m.PushNotificationInfo +func (x *ContactCodeAdvertisement) GetPushNotificationInfo() []*PushNotificationQueryInfo { + if x != nil { + return x.PushNotificationInfo } return nil } -func (m *ContactCodeAdvertisement) GetChatIdentity() *ChatIdentity { - if m != nil { - return m.ChatIdentity +func (x *ContactCodeAdvertisement) GetChatIdentity() *ChatIdentity { + if x != nil { + return x.ChatIdentity } return nil } type PushNotificationQuery struct { - PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` } -func (m *PushNotificationQuery) Reset() { *m = PushNotificationQuery{} } -func (m *PushNotificationQuery) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQuery) ProtoMessage() {} +func (x *PushNotificationQuery) Reset() { + *x = PushNotificationQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQuery) ProtoMessage() {} + +func (x *PushNotificationQuery) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQuery.ProtoReflect.Descriptor instead. func (*PushNotificationQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{3} + return file_push_notifications_proto_rawDescGZIP(), []int{3} } -func (m *PushNotificationQuery) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQuery.Unmarshal(m, b) -} -func (m *PushNotificationQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQuery.Marshal(b, m, deterministic) -} -func (m *PushNotificationQuery) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQuery.Merge(m, src) -} -func (m *PushNotificationQuery) XXX_Size() int { - return xxx_messageInfo_PushNotificationQuery.Size(m) -} -func (m *PushNotificationQuery) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQuery.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQuery proto.InternalMessageInfo - -func (m *PushNotificationQuery) GetPublicKeys() [][]byte { - if m != nil { - return m.PublicKeys +func (x *PushNotificationQuery) GetPublicKeys() [][]byte { + if x != nil { + return x.PublicKeys } return nil } type PushNotificationQueryInfo struct { - AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - AllowedKeyList [][]byte `protobuf:"bytes,4,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"` - Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` - Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` - ServerPublicKey []byte `protobuf:"bytes,7,opt,name=server_public_key,json=serverPublicKey,proto3" json:"server_public_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + AllowedKeyList [][]byte `protobuf:"bytes,4,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"` + Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` + Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` + ServerPublicKey []byte `protobuf:"bytes,7,opt,name=server_public_key,json=serverPublicKey,proto3" json:"server_public_key,omitempty"` } -func (m *PushNotificationQueryInfo) Reset() { *m = PushNotificationQueryInfo{} } -func (m *PushNotificationQueryInfo) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQueryInfo) ProtoMessage() {} +func (x *PushNotificationQueryInfo) Reset() { + *x = PushNotificationQueryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQueryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQueryInfo) ProtoMessage() {} + +func (x *PushNotificationQueryInfo) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQueryInfo.ProtoReflect.Descriptor instead. func (*PushNotificationQueryInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{4} + return file_push_notifications_proto_rawDescGZIP(), []int{4} } -func (m *PushNotificationQueryInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQueryInfo.Unmarshal(m, b) -} -func (m *PushNotificationQueryInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQueryInfo.Marshal(b, m, deterministic) -} -func (m *PushNotificationQueryInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQueryInfo.Merge(m, src) -} -func (m *PushNotificationQueryInfo) XXX_Size() int { - return xxx_messageInfo_PushNotificationQueryInfo.Size(m) -} -func (m *PushNotificationQueryInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQueryInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQueryInfo proto.InternalMessageInfo - -func (m *PushNotificationQueryInfo) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotificationQueryInfo) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotificationQueryInfo) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationQueryInfo) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotificationQueryInfo) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotificationQueryInfo) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotificationQueryInfo) GetAllowedKeyList() [][]byte { - if m != nil { - return m.AllowedKeyList +func (x *PushNotificationQueryInfo) GetAllowedKeyList() [][]byte { + if x != nil { + return x.AllowedKeyList } return nil } -func (m *PushNotificationQueryInfo) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *PushNotificationQueryInfo) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *PushNotificationQueryInfo) GetVersion() uint64 { - if m != nil { - return m.Version +func (x *PushNotificationQueryInfo) GetVersion() uint64 { + if x != nil { + return x.Version } return 0 } -func (m *PushNotificationQueryInfo) GetServerPublicKey() []byte { - if m != nil { - return m.ServerPublicKey +func (x *PushNotificationQueryInfo) GetServerPublicKey() []byte { + if x != nil { + return x.ServerPublicKey } return nil } type PushNotificationQueryResponse struct { - Info []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"` - MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"` + MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"` } -func (m *PushNotificationQueryResponse) Reset() { *m = PushNotificationQueryResponse{} } -func (m *PushNotificationQueryResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQueryResponse) ProtoMessage() {} +func (x *PushNotificationQueryResponse) Reset() { + *x = PushNotificationQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQueryResponse) ProtoMessage() {} + +func (x *PushNotificationQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQueryResponse.ProtoReflect.Descriptor instead. func (*PushNotificationQueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{5} + return file_push_notifications_proto_rawDescGZIP(), []int{5} } -func (m *PushNotificationQueryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQueryResponse.Unmarshal(m, b) -} -func (m *PushNotificationQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQueryResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationQueryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQueryResponse.Merge(m, src) -} -func (m *PushNotificationQueryResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationQueryResponse.Size(m) -} -func (m *PushNotificationQueryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQueryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQueryResponse proto.InternalMessageInfo - -func (m *PushNotificationQueryResponse) GetInfo() []*PushNotificationQueryInfo { - if m != nil { - return m.Info +func (x *PushNotificationQueryResponse) GetInfo() []*PushNotificationQueryInfo { + if x != nil { + return x.Info } return nil } -func (m *PushNotificationQueryResponse) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationQueryResponse) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } -func (m *PushNotificationQueryResponse) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationQueryResponse) GetSuccess() bool { + if x != nil { + return x.Success } return false } type PushNotification struct { - AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - ChatId []byte `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` - Type PushNotification_PushNotificationType `protobuf:"varint,6,opt,name=type,proto3,enum=protobuf.PushNotification_PushNotificationType" json:"type,omitempty"` - Author []byte `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + ChatId []byte `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + Type PushNotification_PushNotificationType `protobuf:"varint,6,opt,name=type,proto3,enum=protobuf.PushNotification_PushNotificationType" json:"type,omitempty"` + Author []byte `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` } -func (m *PushNotification) Reset() { *m = PushNotification{} } -func (m *PushNotification) String() string { return proto.CompactTextString(m) } -func (*PushNotification) ProtoMessage() {} +func (x *PushNotification) Reset() { + *x = PushNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotification) ProtoMessage() {} + +func (x *PushNotification) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotification.ProtoReflect.Descriptor instead. func (*PushNotification) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{6} + return file_push_notifications_proto_rawDescGZIP(), []int{6} } -func (m *PushNotification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotification.Unmarshal(m, b) -} -func (m *PushNotification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotification.Marshal(b, m, deterministic) -} -func (m *PushNotification) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotification.Merge(m, src) -} -func (m *PushNotification) XXX_Size() int { - return xxx_messageInfo_PushNotification.Size(m) -} -func (m *PushNotification) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotification.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotification proto.InternalMessageInfo - -func (m *PushNotification) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotification) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotification) GetChatId() []byte { - if m != nil { - return m.ChatId +func (x *PushNotification) GetChatId() []byte { + if x != nil { + return x.ChatId } return nil } -func (m *PushNotification) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotification) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotification) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotification) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotification) GetMessage() []byte { - if m != nil { - return m.Message +func (x *PushNotification) GetMessage() []byte { + if x != nil { + return x.Message } return nil } -func (m *PushNotification) GetType() PushNotification_PushNotificationType { - if m != nil { - return m.Type +func (x *PushNotification) GetType() PushNotification_PushNotificationType { + if x != nil { + return x.Type } return PushNotification_UNKNOWN_PUSH_NOTIFICATION_TYPE } -func (m *PushNotification) GetAuthor() []byte { - if m != nil { - return m.Author +func (x *PushNotification) GetAuthor() []byte { + if x != nil { + return x.Author } return nil } type PushNotificationRequest struct { - Requests []*PushNotification `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` - MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Requests []*PushNotification `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } -func (m *PushNotificationRequest) Reset() { *m = PushNotificationRequest{} } -func (m *PushNotificationRequest) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRequest) ProtoMessage() {} +func (x *PushNotificationRequest) Reset() { + *x = PushNotificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRequest) ProtoMessage() {} + +func (x *PushNotificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRequest.ProtoReflect.Descriptor instead. func (*PushNotificationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{7} + return file_push_notifications_proto_rawDescGZIP(), []int{7} } -func (m *PushNotificationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRequest.Unmarshal(m, b) -} -func (m *PushNotificationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRequest.Marshal(b, m, deterministic) -} -func (m *PushNotificationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRequest.Merge(m, src) -} -func (m *PushNotificationRequest) XXX_Size() int { - return xxx_messageInfo_PushNotificationRequest.Size(m) -} -func (m *PushNotificationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRequest proto.InternalMessageInfo - -func (m *PushNotificationRequest) GetRequests() []*PushNotification { - if m != nil { - return m.Requests +func (x *PushNotificationRequest) GetRequests() []*PushNotification { + if x != nil { + return x.Requests } return nil } -func (m *PushNotificationRequest) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationRequest) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } type PushNotificationReport struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Error PushNotificationReport_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationReport_ErrorType" json:"error,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Error PushNotificationReport_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationReport_ErrorType" json:"error,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` } -func (m *PushNotificationReport) Reset() { *m = PushNotificationReport{} } -func (m *PushNotificationReport) String() string { return proto.CompactTextString(m) } -func (*PushNotificationReport) ProtoMessage() {} +func (x *PushNotificationReport) Reset() { + *x = PushNotificationReport{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationReport) ProtoMessage() {} + +func (x *PushNotificationReport) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationReport.ProtoReflect.Descriptor instead. func (*PushNotificationReport) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{8} + return file_push_notifications_proto_rawDescGZIP(), []int{8} } -func (m *PushNotificationReport) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationReport.Unmarshal(m, b) -} -func (m *PushNotificationReport) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationReport.Marshal(b, m, deterministic) -} -func (m *PushNotificationReport) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationReport.Merge(m, src) -} -func (m *PushNotificationReport) XXX_Size() int { - return xxx_messageInfo_PushNotificationReport.Size(m) -} -func (m *PushNotificationReport) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationReport.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationReport proto.InternalMessageInfo - -func (m *PushNotificationReport) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationReport) GetSuccess() bool { + if x != nil { + return x.Success } return false } -func (m *PushNotificationReport) GetError() PushNotificationReport_ErrorType { - if m != nil { - return m.Error +func (x *PushNotificationReport) GetError() PushNotificationReport_ErrorType { + if x != nil { + return x.Error } return PushNotificationReport_UNKNOWN_ERROR_TYPE } -func (m *PushNotificationReport) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotificationReport) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotificationReport) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationReport) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } type PushNotificationResponse struct { - MessageId []byte `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - Reports []*PushNotificationReport `protobuf:"bytes,2,rep,name=reports,proto3" json:"reports,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageId []byte `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + Reports []*PushNotificationReport `protobuf:"bytes,2,rep,name=reports,proto3" json:"reports,omitempty"` } -func (m *PushNotificationResponse) Reset() { *m = PushNotificationResponse{} } -func (m *PushNotificationResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationResponse) ProtoMessage() {} +func (x *PushNotificationResponse) Reset() { + *x = PushNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationResponse) ProtoMessage() {} + +func (x *PushNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationResponse.ProtoReflect.Descriptor instead. func (*PushNotificationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{9} + return file_push_notifications_proto_rawDescGZIP(), []int{9} } -func (m *PushNotificationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationResponse.Unmarshal(m, b) -} -func (m *PushNotificationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationResponse.Merge(m, src) -} -func (m *PushNotificationResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationResponse.Size(m) -} -func (m *PushNotificationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationResponse proto.InternalMessageInfo - -func (m *PushNotificationResponse) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationResponse) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } -func (m *PushNotificationResponse) GetReports() []*PushNotificationReport { - if m != nil { - return m.Reports +func (x *PushNotificationResponse) GetReports() []*PushNotificationReport { + if x != nil { + return x.Reports } return nil } -func init() { - proto.RegisterEnum("protobuf.PushNotificationRegistration_TokenType", PushNotificationRegistration_TokenType_name, PushNotificationRegistration_TokenType_value) - proto.RegisterEnum("protobuf.PushNotificationRegistrationResponse_ErrorType", PushNotificationRegistrationResponse_ErrorType_name, PushNotificationRegistrationResponse_ErrorType_value) - proto.RegisterEnum("protobuf.PushNotification_PushNotificationType", PushNotification_PushNotificationType_name, PushNotification_PushNotificationType_value) - proto.RegisterEnum("protobuf.PushNotificationReport_ErrorType", PushNotificationReport_ErrorType_name, PushNotificationReport_ErrorType_value) - proto.RegisterType((*PushNotificationRegistration)(nil), "protobuf.PushNotificationRegistration") - proto.RegisterType((*PushNotificationRegistrationResponse)(nil), "protobuf.PushNotificationRegistrationResponse") - proto.RegisterType((*ContactCodeAdvertisement)(nil), "protobuf.ContactCodeAdvertisement") - proto.RegisterType((*PushNotificationQuery)(nil), "protobuf.PushNotificationQuery") - proto.RegisterType((*PushNotificationQueryInfo)(nil), "protobuf.PushNotificationQueryInfo") - proto.RegisterType((*PushNotificationQueryResponse)(nil), "protobuf.PushNotificationQueryResponse") - proto.RegisterType((*PushNotification)(nil), "protobuf.PushNotification") - proto.RegisterType((*PushNotificationRequest)(nil), "protobuf.PushNotificationRequest") - proto.RegisterType((*PushNotificationReport)(nil), "protobuf.PushNotificationReport") - proto.RegisterType((*PushNotificationResponse)(nil), "protobuf.PushNotificationResponse") +var File_push_notifications_proto protoreflect.FileDescriptor + +var file_push_notifications_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x05, 0x0a, 0x1c, 0x50, 0x75, + 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0a, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, + 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x61, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x6e, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x6e, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x17, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x68, 0x61, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, + 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x09, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x01, + 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x52, 0x45, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x4b, + 0x45, 0x4e, 0x10, 0x02, 0x22, 0xb2, 0x02, 0x0a, 0x24, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, + 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, + 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x53, + 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x22, 0xb2, 0x01, 0x0a, 0x18, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x16, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x70, 0x75, 0x73, + 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x52, 0x0c, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x38, + 0x0a, 0x15, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x8c, 0x02, 0x0a, 0x19, 0x50, 0x75, 0x73, + 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x75, 0x73, 0x68, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x82, 0x03, 0x0a, 0x10, + 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, 0x73, 0x0a, 0x14, 0x50, + 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, + 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x03, + 0x22, 0x70, 0x0a, 0x17, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x22, 0x9a, 0x02, 0x0a, 0x16, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x5c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x52, 0x4f, 0x4e, 0x47, 0x5f, + 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4e, + 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, + 0x75, 0x0a, 0x18, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) +var ( + file_push_notifications_proto_rawDescOnce sync.Once + file_push_notifications_proto_rawDescData = file_push_notifications_proto_rawDesc +) + +func file_push_notifications_proto_rawDescGZIP() []byte { + file_push_notifications_proto_rawDescOnce.Do(func() { + file_push_notifications_proto_rawDescData = protoimpl.X.CompressGZIP(file_push_notifications_proto_rawDescData) + }) + return file_push_notifications_proto_rawDescData } -var fileDescriptor_200acd86044eaa5d = []byte{ - // 1088 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5b, 0x4f, 0xe3, 0x46, - 0x14, 0xae, 0x93, 0x40, 0x92, 0x93, 0x2b, 0x53, 0x08, 0x5e, 0x5a, 0xb6, 0xa9, 0x7b, 0x8b, 0x78, - 0xc8, 0x56, 0x54, 0xea, 0xae, 0xca, 0x4b, 0xb3, 0xc1, 0xb0, 0x2e, 0xc4, 0xce, 0x4e, 0x9c, 0xae, - 0xa8, 0x2a, 0x8d, 0x4c, 0x32, 0x80, 0x45, 0xb0, 0x5d, 0xcf, 0x84, 0x2a, 0x6f, 0x55, 0x9f, 0xfb, - 0xd2, 0xd7, 0xfe, 0x8c, 0xfd, 0x15, 0xfd, 0x59, 0x95, 0xc7, 0xe3, 0x60, 0x48, 0xb8, 0x54, 0xda, - 0xa7, 0xf8, 0x7c, 0xe7, 0x32, 0x73, 0xce, 0xf9, 0xe6, 0x0b, 0xa8, 0xc1, 0x94, 0x5d, 0x10, 0xcf, - 0xe7, 0xee, 0x99, 0x3b, 0x72, 0xb8, 0xeb, 0x7b, 0xac, 0x1d, 0x84, 0x3e, 0xf7, 0x51, 0x41, 0xfc, - 0x9c, 0x4e, 0xcf, 0xb6, 0x3e, 0x1e, 0x5d, 0x38, 0x9c, 0xb8, 0x63, 0xea, 0x71, 0x97, 0xcf, 0x62, - 0xb7, 0xf6, 0xef, 0x0a, 0x7c, 0xda, 0x9f, 0xb2, 0x0b, 0x33, 0x95, 0x8a, 0xe9, 0xb9, 0xcb, 0x78, - 0x28, 0xbe, 0x91, 0x05, 0xc0, 0xfd, 0x4b, 0xea, 0x11, 0x3e, 0x0b, 0xa8, 0xaa, 0x34, 0x95, 0x56, - 0x75, 0xf7, 0xdb, 0x76, 0x52, 0xb4, 0xfd, 0x50, 0x6e, 0xdb, 0x8e, 0x12, 0xed, 0x59, 0x40, 0x71, - 0x91, 0x27, 0x9f, 0xe8, 0x73, 0x28, 0x8f, 0xe9, 0xb5, 0x3b, 0xa2, 0x44, 0x60, 0x6a, 0xa6, 0xa9, - 0xb4, 0x8a, 0xb8, 0x14, 0x63, 0x22, 0x03, 0x7d, 0x03, 0x35, 0xd7, 0x63, 0xdc, 0x99, 0x4c, 0x44, - 0x1d, 0xe2, 0x8e, 0xd5, 0xac, 0x88, 0xaa, 0xa6, 0x61, 0x63, 0x1c, 0xd5, 0x72, 0x46, 0x23, 0xca, - 0x98, 0xac, 0x95, 0x8b, 0x6b, 0xc5, 0x58, 0x5c, 0x4b, 0x85, 0x3c, 0xf5, 0x9c, 0xd3, 0x09, 0x1d, - 0xab, 0x2b, 0x4d, 0xa5, 0x55, 0xc0, 0x89, 0x19, 0x79, 0xae, 0x69, 0xc8, 0x5c, 0xdf, 0x53, 0x57, - 0x9b, 0x4a, 0x2b, 0x87, 0x13, 0x13, 0xb5, 0xa0, 0xee, 0x4c, 0x26, 0xfe, 0xef, 0x74, 0x4c, 0x2e, - 0xe9, 0x8c, 0x4c, 0x5c, 0xc6, 0xd5, 0x7c, 0x33, 0xdb, 0x2a, 0xe3, 0xaa, 0xc4, 0x8f, 0xe8, 0xec, - 0xd8, 0x65, 0x1c, 0xed, 0xc0, 0xda, 0xe9, 0xc4, 0x1f, 0x5d, 0xd2, 0x31, 0x11, 0xd3, 0x15, 0xa1, - 0x05, 0x11, 0x5a, 0x93, 0x8e, 0xee, 0x85, 0xc3, 0x45, 0xec, 0x73, 0x80, 0xa9, 0x17, 0x8a, 0xf9, - 0xd0, 0x50, 0x2d, 0x8a, 0xcb, 0xa4, 0x10, 0xb4, 0x0e, 0x2b, 0xe7, 0xa1, 0xe3, 0x71, 0x15, 0x9a, - 0x4a, 0xab, 0x8c, 0x63, 0x03, 0xbd, 0x04, 0x55, 0x9c, 0x49, 0xce, 0x42, 0xff, 0x8a, 0x8c, 0x7c, - 0x8f, 0x3b, 0x23, 0xce, 0x88, 0xef, 0x4d, 0x66, 0x6a, 0x49, 0xd4, 0xd8, 0x10, 0xfe, 0x83, 0xd0, - 0xbf, 0xea, 0x4a, 0xaf, 0xe5, 0x4d, 0x66, 0xe8, 0x13, 0x28, 0x3a, 0x81, 0x47, 0xb8, 0x1f, 0xb8, - 0x23, 0xb5, 0x2c, 0x06, 0x53, 0x70, 0x02, 0xcf, 0x8e, 0x6c, 0xf4, 0x15, 0x54, 0xc5, 0xf5, 0xc8, - 0x55, 0xc4, 0x06, 0xdf, 0x63, 0x6a, 0x45, 0xd4, 0xaa, 0x08, 0xb4, 0x27, 0x41, 0xb4, 0x07, 0x5b, - 0xc9, 0x20, 0x92, 0xc0, 0x54, 0x9f, 0x55, 0xd1, 0xe7, 0xa6, 0x8c, 0x48, 0x92, 0xe6, 0xfd, 0x7e, - 0x0d, 0xb5, 0xab, 0x29, 0xbf, 0x35, 0x99, 0x9a, 0xc8, 0xa8, 0x08, 0x38, 0x89, 0xd3, 0x0e, 0xa0, - 0x38, 0x27, 0x0a, 0x6a, 0x00, 0x1a, 0x9a, 0x47, 0xa6, 0xf5, 0xce, 0x24, 0xb6, 0x75, 0xa4, 0x9b, - 0xc4, 0x3e, 0xe9, 0xeb, 0xf5, 0x8f, 0x50, 0x05, 0x8a, 0x9d, 0xbe, 0xc4, 0xea, 0x0a, 0x42, 0x50, - 0x3d, 0x30, 0xb0, 0xfe, 0xba, 0x33, 0xd0, 0x25, 0x96, 0xd1, 0xde, 0x67, 0xe0, 0xcb, 0x87, 0xe8, - 0x88, 0x29, 0x0b, 0x7c, 0x8f, 0xd1, 0x68, 0xf1, 0x6c, 0x2a, 0x28, 0x22, 0xf8, 0x5c, 0xc0, 0x89, - 0x89, 0x4c, 0x58, 0xa1, 0x61, 0xe8, 0x87, 0x82, 0x94, 0xd5, 0xdd, 0x57, 0x4f, 0xe3, 0x79, 0x52, - 0xb8, 0xad, 0x47, 0xb9, 0x82, 0xef, 0x71, 0x19, 0xb4, 0x0d, 0x10, 0xd2, 0xdf, 0xa6, 0x94, 0xf1, - 0x84, 0xc3, 0x65, 0x5c, 0x94, 0x88, 0x31, 0xd6, 0xfe, 0x50, 0xa0, 0x38, 0xcf, 0x49, 0xb7, 0xae, - 0x63, 0x6c, 0xe1, 0xa4, 0xf5, 0x0d, 0x58, 0xeb, 0x75, 0x8e, 0x0f, 0x2c, 0xdc, 0xd3, 0xf7, 0x49, - 0x4f, 0x1f, 0x0c, 0x3a, 0x87, 0x7a, 0x5d, 0x41, 0xeb, 0x50, 0xff, 0x59, 0xc7, 0x03, 0xc3, 0x32, - 0x49, 0xcf, 0x18, 0xf4, 0x3a, 0x76, 0xf7, 0x4d, 0x3d, 0x83, 0xb6, 0xa0, 0x31, 0x34, 0x07, 0xc3, - 0x7e, 0xdf, 0xc2, 0xb6, 0xbe, 0x9f, 0x9e, 0x61, 0x36, 0x1a, 0x9a, 0x61, 0xda, 0x3a, 0x36, 0x3b, - 0xc7, 0xf1, 0x09, 0xf5, 0x9c, 0xf6, 0x5e, 0x01, 0x55, 0xd2, 0xa6, 0xeb, 0x8f, 0x69, 0x67, 0x7c, - 0x4d, 0x43, 0xee, 0x32, 0x1a, 0xad, 0x1b, 0x9d, 0x40, 0x63, 0x41, 0x57, 0x88, 0xeb, 0x9d, 0xf9, - 0xaa, 0xd2, 0xcc, 0xb6, 0x4a, 0xbb, 0x5f, 0xdc, 0x3f, 0x9f, 0xb7, 0x53, 0x1a, 0xce, 0x0c, 0xef, - 0xcc, 0xc7, 0xeb, 0xc1, 0x1d, 0x57, 0x84, 0xa2, 0x3d, 0xa8, 0xdc, 0x92, 0x23, 0x31, 0xf1, 0xd2, - 0x6e, 0xe3, 0xa6, 0x62, 0xc4, 0x0f, 0x43, 0x7a, 0x71, 0x79, 0x94, 0xb2, 0xb4, 0x57, 0xb0, 0xb1, - 0xf4, 0x3c, 0xf4, 0x19, 0x94, 0x82, 0xe9, 0xe9, 0xc4, 0x1d, 0x45, 0xef, 0x96, 0x89, 0x5b, 0x96, - 0x31, 0xc4, 0xd0, 0x11, 0x9d, 0x31, 0xed, 0xaf, 0x0c, 0x3c, 0xbb, 0xf7, 0xaa, 0x0b, 0x72, 0xa2, - 0x2c, 0xca, 0xc9, 0x12, 0x69, 0xca, 0x2c, 0x95, 0xa6, 0x6d, 0x80, 0x9b, 0xab, 0x24, 0xab, 0x9f, - 0xdf, 0x64, 0xa9, 0xc4, 0xe4, 0x96, 0x4a, 0xcc, 0x5c, 0x16, 0x56, 0xd2, 0xb2, 0x70, 0xbf, 0x78, - 0xed, 0xc0, 0x1a, 0xa3, 0xe1, 0x35, 0x0d, 0x49, 0xea, 0xfc, 0xbc, 0xc8, 0xad, 0xc5, 0x8e, 0x7e, - 0x72, 0x0b, 0xed, 0x6f, 0x05, 0xb6, 0x97, 0x8e, 0x63, 0xfe, 0x56, 0x5e, 0x42, 0xee, 0xff, 0x2e, - 0x5c, 0x24, 0x44, 0xfd, 0x5f, 0x51, 0xc6, 0x9c, 0x73, 0x9a, 0xcc, 0xa8, 0x8c, 0x8b, 0x12, 0x31, - 0xc6, 0xe9, 0x37, 0x98, 0xbd, 0xf5, 0x06, 0xb5, 0x3f, 0xb3, 0x50, 0xbf, 0x5b, 0xfc, 0x29, 0x9b, - 0xd9, 0x84, 0xbc, 0x64, 0x94, 0x3c, 0x6d, 0x35, 0xe6, 0xcc, 0x63, 0x9b, 0x58, 0xb2, 0xd1, 0xdc, - 0xd2, 0x8d, 0xaa, 0x90, 0x97, 0xf7, 0x97, 0xab, 0x48, 0x4c, 0xd4, 0x85, 0x9c, 0xf8, 0x77, 0x5c, - 0x15, 0xaa, 0xf1, 0xe2, 0xfe, 0x21, 0x2d, 0x00, 0x42, 0x2c, 0x44, 0x32, 0x6a, 0xc0, 0xaa, 0x33, - 0xe5, 0x17, 0x7e, 0x28, 0x97, 0x25, 0x2d, 0x8d, 0xc1, 0xfa, 0xb2, 0x2c, 0xa4, 0xc1, 0xf3, 0x44, - 0x2e, 0xfa, 0xc3, 0xc1, 0x1b, 0x62, 0x5a, 0xb6, 0x71, 0x60, 0x74, 0x3b, 0x76, 0xa4, 0x08, 0x52, - 0x3a, 0x4a, 0x90, 0xbf, 0x11, 0x0c, 0x61, 0x98, 0x91, 0xbb, 0x9e, 0x41, 0xdb, 0xf0, 0x0c, 0xeb, - 0x6f, 0x87, 0xfa, 0xc0, 0x26, 0xb6, 0x45, 0x7e, 0xb2, 0x0c, 0x93, 0x74, 0xad, 0x5e, 0x6f, 0x68, - 0x1a, 0xf6, 0x49, 0x3d, 0xab, 0x05, 0xb0, 0xb9, 0xa8, 0x78, 0x42, 0xb6, 0xd0, 0xf7, 0x50, 0x90, - 0x0a, 0xc6, 0x24, 0x2b, 0xb6, 0x1e, 0x90, 0xc9, 0x79, 0xec, 0x23, 0x84, 0xd0, 0xfe, 0xc9, 0x40, - 0x63, 0xf1, 0xc8, 0xc0, 0x0f, 0xf9, 0x03, 0x7a, 0xfd, 0xe3, 0x6d, 0xbd, 0xde, 0x79, 0x48, 0xaf, - 0xa3, 0x52, 0x4b, 0x15, 0xfa, 0x43, 0x90, 0x43, 0xfb, 0xf5, 0x29, 0x4a, 0x5e, 0x83, 0xd2, 0x3b, - 0x6c, 0x99, 0x87, 0xe9, 0xbf, 0xb1, 0x3b, 0x8a, 0x9c, 0x89, 0x30, 0xd3, 0xb2, 0x09, 0xd6, 0x0f, - 0x8d, 0x81, 0xad, 0x63, 0x7d, 0xbf, 0x9e, 0xd5, 0xa6, 0xa0, 0x2e, 0x36, 0x24, 0x5f, 0xe8, 0xed, - 0xb9, 0x2a, 0x77, 0x1f, 0xda, 0x0f, 0x90, 0x0f, 0x45, 0xef, 0x4c, 0xcd, 0x88, 0x6d, 0x35, 0x1f, - 0x1b, 0x12, 0x4e, 0x12, 0x5e, 0x57, 0x7e, 0x29, 0xb5, 0x5f, 0xec, 0x25, 0xe1, 0xa7, 0xab, 0xe2, - 0xeb, 0xbb, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x80, 0x64, 0xa2, 0x39, 0x6d, 0x0a, 0x00, 0x00, +var file_push_notifications_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_push_notifications_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_push_notifications_proto_goTypes = []interface{}{ + (PushNotificationRegistration_TokenType)(0), // 0: protobuf.PushNotificationRegistration.TokenType + (PushNotificationRegistrationResponse_ErrorType)(0), // 1: protobuf.PushNotificationRegistrationResponse.ErrorType + (PushNotification_PushNotificationType)(0), // 2: protobuf.PushNotification.PushNotificationType + (PushNotificationReport_ErrorType)(0), // 3: protobuf.PushNotificationReport.ErrorType + (*PushNotificationRegistration)(nil), // 4: protobuf.PushNotificationRegistration + (*PushNotificationRegistrationResponse)(nil), // 5: protobuf.PushNotificationRegistrationResponse + (*ContactCodeAdvertisement)(nil), // 6: protobuf.ContactCodeAdvertisement + (*PushNotificationQuery)(nil), // 7: protobuf.PushNotificationQuery + (*PushNotificationQueryInfo)(nil), // 8: protobuf.PushNotificationQueryInfo + (*PushNotificationQueryResponse)(nil), // 9: protobuf.PushNotificationQueryResponse + (*PushNotification)(nil), // 10: protobuf.PushNotification + (*PushNotificationRequest)(nil), // 11: protobuf.PushNotificationRequest + (*PushNotificationReport)(nil), // 12: protobuf.PushNotificationReport + (*PushNotificationResponse)(nil), // 13: protobuf.PushNotificationResponse + (*ChatIdentity)(nil), // 14: protobuf.ChatIdentity +} +var file_push_notifications_proto_depIdxs = []int32{ + 0, // 0: protobuf.PushNotificationRegistration.token_type:type_name -> protobuf.PushNotificationRegistration.TokenType + 1, // 1: protobuf.PushNotificationRegistrationResponse.error:type_name -> protobuf.PushNotificationRegistrationResponse.ErrorType + 8, // 2: protobuf.ContactCodeAdvertisement.push_notification_info:type_name -> protobuf.PushNotificationQueryInfo + 14, // 3: protobuf.ContactCodeAdvertisement.chat_identity:type_name -> protobuf.ChatIdentity + 8, // 4: protobuf.PushNotificationQueryResponse.info:type_name -> protobuf.PushNotificationQueryInfo + 2, // 5: protobuf.PushNotification.type:type_name -> protobuf.PushNotification.PushNotificationType + 10, // 6: protobuf.PushNotificationRequest.requests:type_name -> protobuf.PushNotification + 3, // 7: protobuf.PushNotificationReport.error:type_name -> protobuf.PushNotificationReport.ErrorType + 12, // 8: protobuf.PushNotificationResponse.reports:type_name -> protobuf.PushNotificationReport + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_push_notifications_proto_init() } +func file_push_notifications_proto_init() { + if File_push_notifications_proto != nil { + return + } + file_chat_identity_proto_init() + if !protoimpl.UnsafeEnabled { + file_push_notifications_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRegistration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRegistrationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactCodeAdvertisement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQueryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationReport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_push_notifications_proto_rawDesc, + NumEnums: 4, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_push_notifications_proto_goTypes, + DependencyIndexes: file_push_notifications_proto_depIdxs, + EnumInfos: file_push_notifications_proto_enumTypes, + MessageInfos: file_push_notifications_proto_msgTypes, + }.Build() + File_push_notifications_proto = out.File + file_push_notifications_proto_rawDesc = nil + file_push_notifications_proto_goTypes = nil + file_push_notifications_proto_depIdxs = nil } diff --git a/protocol/protobuf/status_update.pb.go b/protocol/protobuf/status_update.pb.go index 399b7d5a1..409302f82 100644 --- a/protocol/protobuf/status_update.pb.go +++ b/protocol/protobuf/status_update.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: status_update.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type StatusUpdate_StatusType int32 @@ -30,28 +30,49 @@ const ( StatusUpdate_INACTIVE StatusUpdate_StatusType = 4 ) -var StatusUpdate_StatusType_name = map[int32]string{ - 0: "UNKNOWN_STATUS_TYPE", - 1: "AUTOMATIC", - 2: "DO_NOT_DISTURB", - 3: "ALWAYS_ONLINE", - 4: "INACTIVE", -} +// Enum value maps for StatusUpdate_StatusType. +var ( + StatusUpdate_StatusType_name = map[int32]string{ + 0: "UNKNOWN_STATUS_TYPE", + 1: "AUTOMATIC", + 2: "DO_NOT_DISTURB", + 3: "ALWAYS_ONLINE", + 4: "INACTIVE", + } + StatusUpdate_StatusType_value = map[string]int32{ + "UNKNOWN_STATUS_TYPE": 0, + "AUTOMATIC": 1, + "DO_NOT_DISTURB": 2, + "ALWAYS_ONLINE": 3, + "INACTIVE": 4, + } +) -var StatusUpdate_StatusType_value = map[string]int32{ - "UNKNOWN_STATUS_TYPE": 0, - "AUTOMATIC": 1, - "DO_NOT_DISTURB": 2, - "ALWAYS_ONLINE": 3, - "INACTIVE": 4, +func (x StatusUpdate_StatusType) Enum() *StatusUpdate_StatusType { + p := new(StatusUpdate_StatusType) + *p = x + return p } func (x StatusUpdate_StatusType) String() string { - return proto.EnumName(StatusUpdate_StatusType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (StatusUpdate_StatusType) Descriptor() protoreflect.EnumDescriptor { + return file_status_update_proto_enumTypes[0].Descriptor() +} + +func (StatusUpdate_StatusType) Type() protoreflect.EnumType { + return &file_status_update_proto_enumTypes[0] +} + +func (x StatusUpdate_StatusType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatusUpdate_StatusType.Descriptor instead. func (StatusUpdate_StatusType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_911acd91e62cd3d7, []int{0, 0} + return file_status_update_proto_rawDescGZIP(), []int{0, 0} } // Specs: @@ -66,85 +87,155 @@ func (StatusUpdate_StatusType) EnumDescriptor() ([]byte, []int) { // Display - Offline forever // Note: Only send pings if the user interacted with the app in the last x minutes. type StatusUpdate struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - StatusType StatusUpdate_StatusType `protobuf:"varint,2,opt,name=status_type,json=statusType,proto3,enum=protobuf.StatusUpdate_StatusType" json:"status_type,omitempty"` - CustomText string `protobuf:"bytes,3,opt,name=custom_text,json=customText,proto3" json:"custom_text,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + StatusType StatusUpdate_StatusType `protobuf:"varint,2,opt,name=status_type,json=statusType,proto3,enum=protobuf.StatusUpdate_StatusType" json:"status_type,omitempty"` + CustomText string `protobuf:"bytes,3,opt,name=custom_text,json=customText,proto3" json:"custom_text,omitempty"` } -func (m *StatusUpdate) Reset() { *m = StatusUpdate{} } -func (m *StatusUpdate) String() string { return proto.CompactTextString(m) } -func (*StatusUpdate) ProtoMessage() {} +func (x *StatusUpdate) Reset() { + *x = StatusUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_status_update_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatusUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusUpdate) ProtoMessage() {} + +func (x *StatusUpdate) ProtoReflect() protoreflect.Message { + mi := &file_status_update_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatusUpdate.ProtoReflect.Descriptor instead. func (*StatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_911acd91e62cd3d7, []int{0} + return file_status_update_proto_rawDescGZIP(), []int{0} } -func (m *StatusUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StatusUpdate.Unmarshal(m, b) -} -func (m *StatusUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StatusUpdate.Marshal(b, m, deterministic) -} -func (m *StatusUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_StatusUpdate.Merge(m, src) -} -func (m *StatusUpdate) XXX_Size() int { - return xxx_messageInfo_StatusUpdate.Size(m) -} -func (m *StatusUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_StatusUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_StatusUpdate proto.InternalMessageInfo - -func (m *StatusUpdate) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *StatusUpdate) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *StatusUpdate) GetStatusType() StatusUpdate_StatusType { - if m != nil { - return m.StatusType +func (x *StatusUpdate) GetStatusType() StatusUpdate_StatusType { + if x != nil { + return x.StatusType } return StatusUpdate_UNKNOWN_STATUS_TYPE } -func (m *StatusUpdate) GetCustomText() string { - if m != nil { - return m.CustomText +func (x *StatusUpdate) GetCustomText() string { + if x != nil { + return x.CustomText } return "" } -func init() { - proto.RegisterEnum("protobuf.StatusUpdate_StatusType", StatusUpdate_StatusType_name, StatusUpdate_StatusType_value) - proto.RegisterType((*StatusUpdate)(nil), "protobuf.StatusUpdate") +var File_status_update_proto protoreflect.FileDescriptor + +var file_status_update_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, + 0xf4, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x65, 0x78, 0x74, 0x22, 0x69, 0x0a, 0x0a, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, + 0x55, 0x52, 0x42, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, + 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x10, 0x04, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("status_update.proto", fileDescriptor_911acd91e62cd3d7) +var ( + file_status_update_proto_rawDescOnce sync.Once + file_status_update_proto_rawDescData = file_status_update_proto_rawDesc +) + +func file_status_update_proto_rawDescGZIP() []byte { + file_status_update_proto_rawDescOnce.Do(func() { + file_status_update_proto_rawDescData = protoimpl.X.CompressGZIP(file_status_update_proto_rawDescData) + }) + return file_status_update_proto_rawDescData } -var fileDescriptor_911acd91e62cd3d7 = []byte{ - // 253 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8e, 0xc1, 0x4e, 0xc2, 0x40, - 0x10, 0x86, 0x5d, 0x40, 0x03, 0x53, 0x4a, 0xea, 0x60, 0x62, 0x6f, 0x56, 0x4e, 0x3d, 0xd5, 0x44, - 0x8f, 0x9e, 0xb6, 0xd0, 0x43, 0x23, 0x6e, 0x4d, 0x77, 0x56, 0x82, 0x97, 0x0d, 0xd4, 0x35, 0x31, - 0x6a, 0xda, 0xd8, 0x6d, 0x02, 0xef, 0xed, 0x03, 0x98, 0x14, 0x50, 0x4e, 0xf3, 0xff, 0x93, 0x6f, - 0xbe, 0x0c, 0x8c, 0x6b, 0xbb, 0xb2, 0x4d, 0xad, 0x9b, 0xea, 0x75, 0x65, 0x4d, 0x54, 0x7d, 0x97, - 0xb6, 0xc4, 0x7e, 0x3b, 0xd6, 0xcd, 0xdb, 0xe4, 0x87, 0xc1, 0x50, 0xb6, 0x84, 0x6a, 0x01, 0xbc, - 0x80, 0xd3, 0xe2, 0xb3, 0x2c, 0x3e, 0x7c, 0x16, 0xb0, 0xb0, 0x97, 0xef, 0x0a, 0xc6, 0xe0, 0xec, - 0x3d, 0x76, 0x5b, 0x19, 0xbf, 0x13, 0xb0, 0x70, 0x74, 0x7b, 0x1d, 0x1d, 0x34, 0xd1, 0xb1, 0x62, - 0x5f, 0x68, 0x5b, 0x99, 0x1c, 0xea, 0xbf, 0x8c, 0x57, 0xe0, 0x14, 0x4d, 0x6d, 0xcb, 0x2f, 0x6d, - 0xcd, 0xc6, 0xfa, 0xdd, 0x80, 0x85, 0x83, 0x1c, 0x76, 0x2b, 0x32, 0x1b, 0x3b, 0x79, 0x07, 0xf8, - 0x3f, 0xc5, 0x4b, 0x18, 0x2b, 0xf1, 0x20, 0xb2, 0x85, 0xd0, 0x92, 0x38, 0x29, 0xa9, 0x69, 0xf9, - 0x94, 0x78, 0x27, 0xe8, 0xc2, 0x80, 0x2b, 0xca, 0x1e, 0x39, 0xa5, 0x53, 0x8f, 0x21, 0xc2, 0x68, - 0x96, 0x69, 0x91, 0x91, 0x9e, 0xa5, 0x92, 0x54, 0x1e, 0x7b, 0x1d, 0x3c, 0x07, 0x97, 0xcf, 0x17, - 0x7c, 0x29, 0x75, 0x26, 0xe6, 0xa9, 0x48, 0xbc, 0x2e, 0x0e, 0xa1, 0x9f, 0x0a, 0x3e, 0xa5, 0xf4, - 0x39, 0xf1, 0x7a, 0xb1, 0xfb, 0xe2, 0x44, 0x37, 0xf7, 0x87, 0xf7, 0xd7, 0x67, 0x6d, 0xba, 0xfb, - 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xa1, 0x52, 0x1d, 0x2d, 0x01, 0x00, 0x00, +var file_status_update_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_status_update_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_status_update_proto_goTypes = []interface{}{ + (StatusUpdate_StatusType)(0), // 0: protobuf.StatusUpdate.StatusType + (*StatusUpdate)(nil), // 1: protobuf.StatusUpdate +} +var file_status_update_proto_depIdxs = []int32{ + 0, // 0: protobuf.StatusUpdate.status_type:type_name -> protobuf.StatusUpdate.StatusType + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_status_update_proto_init() } +func file_status_update_proto_init() { + if File_status_update_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_status_update_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatusUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_status_update_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_status_update_proto_goTypes, + DependencyIndexes: file_status_update_proto_depIdxs, + EnumInfos: file_status_update_proto_enumTypes, + MessageInfos: file_status_update_proto_msgTypes, + }.Build() + File_status_update_proto = out.File + file_status_update_proto_rawDesc = nil + file_status_update_proto_goTypes = nil + file_status_update_proto_depIdxs = nil } diff --git a/protocol/protobuf/sync_settings.pb.go b/protocol/protobuf/sync_settings.pb.go index 7c891d2eb..6e5037ee2 100644 --- a/protocol/protobuf/sync_settings.pb.go +++ b/protocol/protobuf/sync_settings.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: sync_settings.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SyncSetting_Type int32 @@ -43,106 +43,170 @@ const ( SyncSetting_INCLUDE_WATCHONLY_ACCOUNT SyncSetting_Type = 17 ) -var SyncSetting_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CURRENCY", - 2: "GIF_RECENTS", - 3: "GIF_FAVOURITES", - 4: "MESSAGES_FROM_CONTACTS_ONLY", - 5: "PREFERRED_NAME", - 6: "PREVIEW_PRIVACY", - 7: "PROFILE_PICTURES_SHOW_TO", - 8: "PROFILE_PICTURES_VISIBILITY", - 9: "SEND_STATUS_UPDATES", - 10: "STICKERS_PACKS_INSTALLED", - 11: "STICKERS_PACKS_PENDING", - 12: "STICKERS_RECENT_STICKERS", - 13: "DISPLAY_NAME", - 14: "BIO", - 15: "MNEMONIC_REMOVED", - 16: "ENS_USERNAMES", - 17: "INCLUDE_WATCHONLY_ACCOUNT", -} +// Enum value maps for SyncSetting_Type. +var ( + SyncSetting_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CURRENCY", + 2: "GIF_RECENTS", + 3: "GIF_FAVOURITES", + 4: "MESSAGES_FROM_CONTACTS_ONLY", + 5: "PREFERRED_NAME", + 6: "PREVIEW_PRIVACY", + 7: "PROFILE_PICTURES_SHOW_TO", + 8: "PROFILE_PICTURES_VISIBILITY", + 9: "SEND_STATUS_UPDATES", + 10: "STICKERS_PACKS_INSTALLED", + 11: "STICKERS_PACKS_PENDING", + 12: "STICKERS_RECENT_STICKERS", + 13: "DISPLAY_NAME", + 14: "BIO", + 15: "MNEMONIC_REMOVED", + 16: "ENS_USERNAMES", + 17: "INCLUDE_WATCHONLY_ACCOUNT", + } + SyncSetting_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CURRENCY": 1, + "GIF_RECENTS": 2, + "GIF_FAVOURITES": 3, + "MESSAGES_FROM_CONTACTS_ONLY": 4, + "PREFERRED_NAME": 5, + "PREVIEW_PRIVACY": 6, + "PROFILE_PICTURES_SHOW_TO": 7, + "PROFILE_PICTURES_VISIBILITY": 8, + "SEND_STATUS_UPDATES": 9, + "STICKERS_PACKS_INSTALLED": 10, + "STICKERS_PACKS_PENDING": 11, + "STICKERS_RECENT_STICKERS": 12, + "DISPLAY_NAME": 13, + "BIO": 14, + "MNEMONIC_REMOVED": 15, + "ENS_USERNAMES": 16, + "INCLUDE_WATCHONLY_ACCOUNT": 17, + } +) -var SyncSetting_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CURRENCY": 1, - "GIF_RECENTS": 2, - "GIF_FAVOURITES": 3, - "MESSAGES_FROM_CONTACTS_ONLY": 4, - "PREFERRED_NAME": 5, - "PREVIEW_PRIVACY": 6, - "PROFILE_PICTURES_SHOW_TO": 7, - "PROFILE_PICTURES_VISIBILITY": 8, - "SEND_STATUS_UPDATES": 9, - "STICKERS_PACKS_INSTALLED": 10, - "STICKERS_PACKS_PENDING": 11, - "STICKERS_RECENT_STICKERS": 12, - "DISPLAY_NAME": 13, - "BIO": 14, - "MNEMONIC_REMOVED": 15, - "ENS_USERNAMES": 16, - "INCLUDE_WATCHONLY_ACCOUNT": 17, +func (x SyncSetting_Type) Enum() *SyncSetting_Type { + p := new(SyncSetting_Type) + *p = x + return p } func (x SyncSetting_Type) String() string { - return proto.EnumName(SyncSetting_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncSetting_Type) Descriptor() protoreflect.EnumDescriptor { + return file_sync_settings_proto_enumTypes[0].Descriptor() +} + +func (SyncSetting_Type) Type() protoreflect.EnumType { + return &file_sync_settings_proto_enumTypes[0] +} + +func (x SyncSetting_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncSetting_Type.Descriptor instead. func (SyncSetting_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e2f7a0bce2873c78, []int{0, 0} + return file_sync_settings_proto_rawDescGZIP(), []int{0, 0} } type SyncSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Type SyncSetting_Type `protobuf:"varint,1,opt,name=type,proto3,enum=protobuf.SyncSetting_Type" json:"type,omitempty"` Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - // Types that are valid to be assigned to Value: + // Types that are assignable to Value: // // *SyncSetting_ValueString // *SyncSetting_ValueBytes // *SyncSetting_ValueBool // *SyncSetting_ValueInt64 - Value isSyncSetting_Value `protobuf_oneof:"value"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value isSyncSetting_Value `protobuf_oneof:"value"` } -func (m *SyncSetting) Reset() { *m = SyncSetting{} } -func (m *SyncSetting) String() string { return proto.CompactTextString(m) } -func (*SyncSetting) ProtoMessage() {} +func (x *SyncSetting) Reset() { + *x = SyncSetting{} + if protoimpl.UnsafeEnabled { + mi := &file_sync_settings_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSetting) ProtoMessage() {} + +func (x *SyncSetting) ProtoReflect() protoreflect.Message { + mi := &file_sync_settings_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSetting.ProtoReflect.Descriptor instead. func (*SyncSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_e2f7a0bce2873c78, []int{0} + return file_sync_settings_proto_rawDescGZIP(), []int{0} } -func (m *SyncSetting) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSetting.Unmarshal(m, b) -} -func (m *SyncSetting) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSetting.Marshal(b, m, deterministic) -} -func (m *SyncSetting) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSetting.Merge(m, src) -} -func (m *SyncSetting) XXX_Size() int { - return xxx_messageInfo_SyncSetting.Size(m) -} -func (m *SyncSetting) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSetting.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSetting proto.InternalMessageInfo - -func (m *SyncSetting) GetType() SyncSetting_Type { - if m != nil { - return m.Type +func (x *SyncSetting) GetType() SyncSetting_Type { + if x != nil { + return x.Type } return SyncSetting_UNKNOWN } -func (m *SyncSetting) GetClock() uint64 { +func (x *SyncSetting) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +func (m *SyncSetting) GetValue() isSyncSetting_Value { if m != nil { - return m.Clock + return m.Value + } + return nil +} + +func (x *SyncSetting) GetValueString() string { + if x, ok := x.GetValue().(*SyncSetting_ValueString); ok { + return x.ValueString + } + return "" +} + +func (x *SyncSetting) GetValueBytes() []byte { + if x, ok := x.GetValue().(*SyncSetting_ValueBytes); ok { + return x.ValueBytes + } + return nil +} + +func (x *SyncSetting) GetValueBool() bool { + if x, ok := x.GetValue().(*SyncSetting_ValueBool); ok { + return x.ValueBool + } + return false +} + +func (x *SyncSetting) GetValueInt64() int64 { + if x, ok := x.GetValue().(*SyncSetting_ValueInt64); ok { + return x.ValueInt64 } return 0 } @@ -175,93 +239,125 @@ func (*SyncSetting_ValueBool) isSyncSetting_Value() {} func (*SyncSetting_ValueInt64) isSyncSetting_Value() {} -func (m *SyncSetting) GetValue() isSyncSetting_Value { - if m != nil { - return m.Value - } - return nil +var File_sync_settings_proto protoreflect.FileDescriptor + +var file_sync_settings_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, + 0x8e, 0x05, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, + 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x21, + 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x22, 0xa3, 0x03, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x55, 0x52, 0x52, 0x45, + 0x4e, 0x43, 0x59, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x49, 0x46, 0x5f, 0x52, 0x45, 0x43, + 0x45, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x49, 0x46, 0x5f, 0x46, 0x41, + 0x56, 0x4f, 0x55, 0x52, 0x49, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x50, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, + 0x43, 0x59, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x50, 0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x54, 0x4f, + 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x50, 0x49, + 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, + 0x59, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x09, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, + 0x49, 0x43, 0x4b, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x50, 0x45, 0x4e, + 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, + 0x52, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, + 0x52, 0x53, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, + 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x0d, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x49, 0x4f, 0x10, 0x0e, 0x12, + 0x14, 0x0a, 0x10, 0x4d, 0x4e, 0x45, 0x4d, 0x4f, 0x4e, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x53, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x10, 0x10, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x43, 0x4c, + 0x55, 0x44, 0x45, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x41, 0x43, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x11, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *SyncSetting) GetValueString() string { - if x, ok := m.GetValue().(*SyncSetting_ValueString); ok { - return x.ValueString - } - return "" +var ( + file_sync_settings_proto_rawDescOnce sync.Once + file_sync_settings_proto_rawDescData = file_sync_settings_proto_rawDesc +) + +func file_sync_settings_proto_rawDescGZIP() []byte { + file_sync_settings_proto_rawDescOnce.Do(func() { + file_sync_settings_proto_rawDescData = protoimpl.X.CompressGZIP(file_sync_settings_proto_rawDescData) + }) + return file_sync_settings_proto_rawDescData } -func (m *SyncSetting) GetValueBytes() []byte { - if x, ok := m.GetValue().(*SyncSetting_ValueBytes); ok { - return x.ValueBytes - } - return nil +var file_sync_settings_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_sync_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_sync_settings_proto_goTypes = []interface{}{ + (SyncSetting_Type)(0), // 0: protobuf.SyncSetting.Type + (*SyncSetting)(nil), // 1: protobuf.SyncSetting +} +var file_sync_settings_proto_depIdxs = []int32{ + 0, // 0: protobuf.SyncSetting.type:type_name -> protobuf.SyncSetting.Type + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } -func (m *SyncSetting) GetValueBool() bool { - if x, ok := m.GetValue().(*SyncSetting_ValueBool); ok { - return x.ValueBool +func init() { file_sync_settings_proto_init() } +func file_sync_settings_proto_init() { + if File_sync_settings_proto != nil { + return } - return false -} - -func (m *SyncSetting) GetValueInt64() int64 { - if x, ok := m.GetValue().(*SyncSetting_ValueInt64); ok { - return x.ValueInt64 + if !protoimpl.UnsafeEnabled { + file_sync_settings_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSetting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return 0 -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*SyncSetting) XXX_OneofWrappers() []interface{} { - return []interface{}{ + file_sync_settings_proto_msgTypes[0].OneofWrappers = []interface{}{ (*SyncSetting_ValueString)(nil), (*SyncSetting_ValueBytes)(nil), (*SyncSetting_ValueBool)(nil), (*SyncSetting_ValueInt64)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.SyncSetting_Type", SyncSetting_Type_name, SyncSetting_Type_value) - proto.RegisterType((*SyncSetting)(nil), "protobuf.SyncSetting") -} - -func init() { - proto.RegisterFile("sync_settings.proto", fileDescriptor_e2f7a0bce2873c78) -} - -var fileDescriptor_e2f7a0bce2873c78 = []byte{ - // 517 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0x5f, 0x6f, 0xd3, 0x3c, - 0x14, 0xc6, 0x9b, 0xb5, 0x5d, 0xbb, 0xd3, 0x6e, 0xf3, 0xbc, 0xe9, 0x7d, 0xc3, 0x00, 0x2d, 0x8c, - 0x9b, 0x5c, 0x05, 0x09, 0x10, 0x37, 0x5c, 0xb9, 0xce, 0xe9, 0x6a, 0x2d, 0xb1, 0x23, 0xdb, 0x69, - 0x55, 0x6e, 0x2c, 0x56, 0x95, 0x69, 0xa2, 0x6a, 0xa6, 0x35, 0x43, 0xea, 0x97, 0xe0, 0x4b, 0xf0, - 0x45, 0x51, 0x12, 0xca, 0xdf, 0x2b, 0xfb, 0x3c, 0xe7, 0x77, 0x1e, 0x1f, 0x1f, 0x1b, 0x4e, 0x37, - 0xdb, 0xf5, 0xc2, 0x6d, 0x96, 0x65, 0x79, 0xb7, 0xbe, 0xdd, 0x44, 0xf7, 0x0f, 0x45, 0x59, 0xd0, - 0x7e, 0xbd, 0xdc, 0x3c, 0x7e, 0xba, 0xfc, 0xda, 0x85, 0x81, 0xd9, 0xae, 0x17, 0xa6, 0x01, 0x68, - 0x04, 0x9d, 0x72, 0x7b, 0xbf, 0xf4, 0xbd, 0xc0, 0x0b, 0x8f, 0x5e, 0x9f, 0x47, 0x3b, 0x30, 0xfa, - 0x0d, 0x8a, 0xec, 0xf6, 0x7e, 0xa9, 0x6b, 0x8e, 0x9e, 0x41, 0x77, 0xb1, 0x2a, 0x16, 0x9f, 0xfd, - 0xbd, 0xc0, 0x0b, 0x3b, 0xba, 0x09, 0xe8, 0x4b, 0x18, 0x7e, 0xf9, 0xb8, 0x7a, 0x5c, 0xba, 0x4d, - 0xf9, 0x70, 0xb7, 0xbe, 0xf5, 0xdb, 0x81, 0x17, 0x1e, 0x4c, 0x5a, 0x7a, 0x50, 0xab, 0xa6, 0x16, - 0xe9, 0x0b, 0x68, 0x42, 0x77, 0xb3, 0x2d, 0x97, 0x1b, 0xbf, 0x13, 0x78, 0xe1, 0x70, 0xd2, 0xd2, - 0x50, 0x8b, 0xa3, 0x4a, 0xa3, 0x17, 0x00, 0x3f, 0x90, 0xa2, 0x58, 0xf9, 0xdd, 0xc0, 0x0b, 0xfb, - 0x93, 0x96, 0x3e, 0x68, 0x88, 0xa2, 0x58, 0xfd, 0xf2, 0xb8, 0x5b, 0x97, 0xef, 0xde, 0xfa, 0xfb, - 0x81, 0x17, 0xb6, 0x7f, 0x7a, 0x88, 0x4a, 0xbb, 0xfc, 0xd6, 0x86, 0x4e, 0xd5, 0x30, 0x1d, 0x40, - 0x2f, 0x97, 0xd7, 0x52, 0xcd, 0x24, 0x69, 0xd1, 0x21, 0xf4, 0x79, 0xae, 0x35, 0x4a, 0x3e, 0x27, - 0x1e, 0x3d, 0x86, 0xc1, 0x95, 0x18, 0x3b, 0x8d, 0x1c, 0xa5, 0x35, 0x64, 0x8f, 0x52, 0x38, 0xaa, - 0x84, 0x31, 0x9b, 0xaa, 0x5c, 0x0b, 0x8b, 0x86, 0xb4, 0xe9, 0x05, 0x3c, 0x4d, 0xd1, 0x18, 0x76, - 0x85, 0xc6, 0x8d, 0xb5, 0x4a, 0x1d, 0x57, 0xd2, 0x32, 0x6e, 0x8d, 0x53, 0x32, 0x99, 0x93, 0x4e, - 0x55, 0x94, 0x69, 0x1c, 0xa3, 0xd6, 0x18, 0x3b, 0xc9, 0x52, 0x24, 0x5d, 0x7a, 0x0a, 0xc7, 0x99, - 0xc6, 0xa9, 0xc0, 0x99, 0xcb, 0xb4, 0x98, 0x32, 0x3e, 0x27, 0xfb, 0xf4, 0x19, 0xf8, 0x99, 0x56, - 0x63, 0x91, 0xa0, 0xcb, 0x04, 0xb7, 0xb9, 0x46, 0xe3, 0xcc, 0x44, 0xcd, 0x9c, 0x55, 0xa4, 0x57, - 0x9d, 0xf3, 0x4f, 0x76, 0x2a, 0x8c, 0x18, 0x89, 0x44, 0xd8, 0x39, 0xe9, 0xd3, 0xff, 0xe1, 0xd4, - 0xa0, 0x8c, 0x9d, 0xb1, 0xcc, 0xe6, 0xc6, 0xe5, 0x59, 0xcc, 0xaa, 0x0e, 0x0f, 0x2a, 0x5f, 0x63, - 0x05, 0xbf, 0x46, 0x6d, 0x5c, 0xc6, 0xf8, 0xb5, 0x71, 0x42, 0x1a, 0xcb, 0x92, 0x04, 0x63, 0x02, - 0xf4, 0x1c, 0xfe, 0xfb, 0x2b, 0x9b, 0xa1, 0x8c, 0x85, 0xbc, 0x22, 0x83, 0x3f, 0x2a, 0x9b, 0x29, - 0xb8, 0x5d, 0x4c, 0x86, 0x94, 0xc0, 0x30, 0x16, 0x26, 0x4b, 0xd8, 0xbc, 0xb9, 0xd6, 0x21, 0xed, - 0x41, 0x7b, 0x24, 0x14, 0x39, 0xa2, 0x67, 0x40, 0x52, 0x89, 0xa9, 0x92, 0x82, 0x3b, 0x8d, 0xa9, - 0x9a, 0x62, 0x4c, 0x8e, 0xe9, 0x09, 0x1c, 0xa2, 0x34, 0x2e, 0x37, 0xa8, 0xab, 0x02, 0x43, 0x08, - 0x7d, 0x0e, 0x4f, 0x84, 0xe4, 0x49, 0x1e, 0xa3, 0x9b, 0x31, 0xcb, 0x27, 0xd5, 0xcc, 0x1c, 0xe3, - 0x5c, 0xe5, 0xd2, 0x92, 0x93, 0x51, 0x0f, 0xba, 0xcd, 0xab, 0x1e, 0x7e, 0x18, 0x44, 0xaf, 0xde, - 0xef, 0xbe, 0xdd, 0xcd, 0x7e, 0xbd, 0x7b, 0xf3, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x93, 0x18, 0x16, - 0x3f, 0xc7, 0x02, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_sync_settings_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_sync_settings_proto_goTypes, + DependencyIndexes: file_sync_settings_proto_depIdxs, + EnumInfos: file_sync_settings_proto_enumTypes, + MessageInfos: file_sync_settings_proto_msgTypes, + }.Build() + File_sync_settings_proto = out.File + file_sync_settings_proto_rawDesc = nil + file_sync_settings_proto_goTypes = nil + file_sync_settings_proto_depIdxs = nil } diff --git a/protocol/protobuf/url_data.pb.go b/protocol/protobuf/url_data.pb.go index c8f1cdc6e..43bc1d539 100644 --- a/protocol/protobuf/url_data.pb.go +++ b/protocol/protobuf/url_data.pb.go @@ -1,300 +1,441 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: url_data.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Community struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - MembersCount uint32 `protobuf:"varint,3,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` - Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` - TagIndices []uint32 `protobuf:"varint,5,rep,packed,name=tag_indices,json=tagIndices,proto3" json:"tag_indices,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + MembersCount uint32 `protobuf:"varint,3,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` + Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` + TagIndices []uint32 `protobuf:"varint,5,rep,packed,name=tag_indices,json=tagIndices,proto3" json:"tag_indices,omitempty"` } -func (m *Community) Reset() { *m = Community{} } -func (m *Community) String() string { return proto.CompactTextString(m) } -func (*Community) ProtoMessage() {} +func (x *Community) Reset() { + *x = Community{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Community) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Community) ProtoMessage() {} + +func (x *Community) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Community.ProtoReflect.Descriptor instead. func (*Community) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{0} + return file_url_data_proto_rawDescGZIP(), []int{0} } -func (m *Community) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Community.Unmarshal(m, b) -} -func (m *Community) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Community.Marshal(b, m, deterministic) -} -func (m *Community) XXX_Merge(src proto.Message) { - xxx_messageInfo_Community.Merge(m, src) -} -func (m *Community) XXX_Size() int { - return xxx_messageInfo_Community.Size(m) -} -func (m *Community) XXX_DiscardUnknown() { - xxx_messageInfo_Community.DiscardUnknown(m) -} - -var xxx_messageInfo_Community proto.InternalMessageInfo - -func (m *Community) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Community) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Community) GetDescription() string { - if m != nil { - return m.Description +func (x *Community) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Community) GetMembersCount() uint32 { - if m != nil { - return m.MembersCount +func (x *Community) GetMembersCount() uint32 { + if x != nil { + return x.MembersCount } return 0 } -func (m *Community) GetColor() string { - if m != nil { - return m.Color +func (x *Community) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *Community) GetTagIndices() []uint32 { - if m != nil { - return m.TagIndices +func (x *Community) GetTagIndices() []uint32 { + if x != nil { + return x.TagIndices } return nil } type Channel struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Emoji string `protobuf:"bytes,3,opt,name=emoji,proto3" json:"emoji,omitempty"` - Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` - Community *Community `protobuf:"bytes,5,opt,name=community,proto3" json:"community,omitempty"` - Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Emoji string `protobuf:"bytes,3,opt,name=emoji,proto3" json:"emoji,omitempty"` + Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` + Community *Community `protobuf:"bytes,5,opt,name=community,proto3" json:"community,omitempty"` + Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` } -func (m *Channel) Reset() { *m = Channel{} } -func (m *Channel) String() string { return proto.CompactTextString(m) } -func (*Channel) ProtoMessage() {} +func (x *Channel) Reset() { + *x = Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Channel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Channel) ProtoMessage() {} + +func (x *Channel) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Channel.ProtoReflect.Descriptor instead. func (*Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{1} + return file_url_data_proto_rawDescGZIP(), []int{1} } -func (m *Channel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Channel.Unmarshal(m, b) -} -func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Channel.Marshal(b, m, deterministic) -} -func (m *Channel) XXX_Merge(src proto.Message) { - xxx_messageInfo_Channel.Merge(m, src) -} -func (m *Channel) XXX_Size() int { - return xxx_messageInfo_Channel.Size(m) -} -func (m *Channel) XXX_DiscardUnknown() { - xxx_messageInfo_Channel.DiscardUnknown(m) -} - -var xxx_messageInfo_Channel proto.InternalMessageInfo - -func (m *Channel) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Channel) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Channel) GetDescription() string { - if m != nil { - return m.Description +func (x *Channel) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Channel) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *Channel) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *Channel) GetColor() string { - if m != nil { - return m.Color +func (x *Channel) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *Channel) GetCommunity() *Community { - if m != nil { - return m.Community +func (x *Channel) GetCommunity() *Community { + if x != nil { + return x.Community } return nil } -func (m *Channel) GetUuid() string { - if m != nil { - return m.Uuid +func (x *Channel) GetUuid() string { + if x != nil { + return x.Uuid } return "" } type User struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` } -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} +func (x *User) Reset() { + *x = User{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{2} + return file_url_data_proto_rawDescGZIP(), []int{2} } -func (m *User) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_User.Unmarshal(m, b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_User.Marshal(b, m, deterministic) -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) -} -func (m *User) XXX_Size() int { - return xxx_messageInfo_User.Size(m) -} -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) -} - -var xxx_messageInfo_User proto.InternalMessageInfo - -func (m *User) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *User) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *User) GetDescription() string { - if m != nil { - return m.Description +func (x *User) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *User) GetColor() string { - if m != nil { - return m.Color +func (x *User) GetColor() string { + if x != nil { + return x.Color } return "" } type URLData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Community, Channel, or User - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` } -func (m *URLData) Reset() { *m = URLData{} } -func (m *URLData) String() string { return proto.CompactTextString(m) } -func (*URLData) ProtoMessage() {} +func (x *URLData) Reset() { + *x = URLData{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *URLData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*URLData) ProtoMessage() {} + +func (x *URLData) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use URLData.ProtoReflect.Descriptor instead. func (*URLData) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{3} + return file_url_data_proto_rawDescGZIP(), []int{3} } -func (m *URLData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_URLData.Unmarshal(m, b) -} -func (m *URLData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_URLData.Marshal(b, m, deterministic) -} -func (m *URLData) XXX_Merge(src proto.Message) { - xxx_messageInfo_URLData.Merge(m, src) -} -func (m *URLData) XXX_Size() int { - return xxx_messageInfo_URLData.Size(m) -} -func (m *URLData) XXX_DiscardUnknown() { - xxx_messageInfo_URLData.DiscardUnknown(m) -} - -var xxx_messageInfo_URLData proto.InternalMessageInfo - -func (m *URLData) GetContent() []byte { - if m != nil { - return m.Content +func (x *URLData) GetContent() []byte { + if x != nil { + return x.Content } return nil } -func init() { - proto.RegisterType((*Community)(nil), "protobuf.Community") - proto.RegisterType((*Channel)(nil), "protobuf.Channel") - proto.RegisterType((*User)(nil), "protobuf.User") - proto.RegisterType((*URLData)(nil), "protobuf.URLData") +var File_url_data_proto protoreflect.FileDescriptor + +var file_url_data_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x75, 0x72, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0d, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x5f, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x61, 0x67, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x07, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x6f, 0x6a, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x61, 0x0a, + 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x22, 0x23, 0x0a, 0x07, 0x55, 0x52, 0x4c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("url_data.proto", fileDescriptor_5f1e15b5f0115710) +var ( + file_url_data_proto_rawDescOnce sync.Once + file_url_data_proto_rawDescData = file_url_data_proto_rawDesc +) + +func file_url_data_proto_rawDescGZIP() []byte { + file_url_data_proto_rawDescOnce.Do(func() { + file_url_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_url_data_proto_rawDescData) + }) + return file_url_data_proto_rawDescData } -var fileDescriptor_5f1e15b5f0115710 = []byte{ - // 295 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x90, 0xb1, 0x4e, 0xeb, 0x30, - 0x14, 0x86, 0xe5, 0xdb, 0xa6, 0xbd, 0x39, 0x69, 0x18, 0x4c, 0x07, 0x6f, 0x84, 0x74, 0xc9, 0x14, - 0x04, 0x8c, 0x6c, 0x94, 0x05, 0x09, 0x31, 0x58, 0xea, 0xc2, 0x12, 0x39, 0x8e, 0x29, 0x46, 0xb1, - 0x1d, 0x39, 0xf6, 0xd0, 0x77, 0xe2, 0x25, 0x78, 0x33, 0x84, 0x93, 0x50, 0x16, 0xb6, 0x4e, 0x3e, - 0xff, 0xa7, 0xa3, 0xe3, 0x4f, 0x3f, 0x9c, 0x79, 0xdb, 0x56, 0x0d, 0x73, 0xac, 0xec, 0xac, 0x71, - 0x06, 0xff, 0x0f, 0x4f, 0xed, 0x5f, 0xf3, 0x0f, 0x04, 0xf1, 0xd6, 0x28, 0xe5, 0xb5, 0x74, 0x07, - 0x7c, 0x09, 0xab, 0x46, 0xf6, 0x5d, 0xcb, 0x0e, 0x95, 0x66, 0x4a, 0x10, 0x94, 0xa1, 0x22, 0xa6, - 0xc9, 0xc8, 0x9e, 0x99, 0x12, 0x38, 0x83, 0xa4, 0x11, 0x3d, 0xb7, 0xb2, 0x73, 0xd2, 0x68, 0xf2, - 0x6f, 0xdc, 0x38, 0x22, 0xbc, 0x81, 0x54, 0x09, 0x55, 0x0b, 0xdb, 0x57, 0xdc, 0x78, 0xed, 0xc8, - 0x2c, 0x43, 0x45, 0x4a, 0x57, 0x23, 0xdc, 0x7e, 0x33, 0xbc, 0x86, 0x88, 0x9b, 0xd6, 0x58, 0x32, - 0x0f, 0x07, 0x86, 0x80, 0x2f, 0x20, 0x71, 0x6c, 0x5f, 0x49, 0xdd, 0x48, 0x2e, 0x7a, 0x12, 0x65, - 0xb3, 0x22, 0xa5, 0xe0, 0xd8, 0xfe, 0x71, 0x20, 0xf9, 0x27, 0x82, 0xe5, 0xf6, 0x8d, 0x69, 0x2d, - 0xda, 0xd3, 0xc8, 0xae, 0x21, 0x12, 0xca, 0xbc, 0xcb, 0x20, 0x19, 0xd3, 0x21, 0xfc, 0x61, 0x77, - 0x0d, 0x31, 0x9f, 0xaa, 0x22, 0x51, 0x86, 0x8a, 0xe4, 0xe6, 0xbc, 0x9c, 0x9a, 0x2c, 0x7f, 0x5a, - 0xa4, 0xc7, 0x2d, 0x8c, 0x61, 0xee, 0xbd, 0x6c, 0xc8, 0x22, 0xdc, 0x09, 0x73, 0xce, 0x60, 0xbe, - 0xeb, 0x85, 0x3d, 0x99, 0xff, 0x60, 0x3a, 0xfb, 0x65, 0x9a, 0x6f, 0x60, 0xb9, 0xa3, 0x4f, 0x0f, - 0xcc, 0x31, 0x4c, 0x60, 0xc9, 0x8d, 0x76, 0x42, 0xbb, 0xf0, 0xc1, 0x8a, 0x4e, 0xf1, 0x3e, 0x7d, - 0x49, 0xca, 0xab, 0xbb, 0xc9, 0xbf, 0x5e, 0x84, 0xe9, 0xf6, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xd1, - 0x08, 0xbf, 0x32, 0x2c, 0x02, 0x00, 0x00, +var file_url_data_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_url_data_proto_goTypes = []interface{}{ + (*Community)(nil), // 0: protobuf.Community + (*Channel)(nil), // 1: protobuf.Channel + (*User)(nil), // 2: protobuf.User + (*URLData)(nil), // 3: protobuf.URLData +} +var file_url_data_proto_depIdxs = []int32{ + 0, // 0: protobuf.Channel.community:type_name -> protobuf.Community + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_url_data_proto_init() } +func file_url_data_proto_init() { + if File_url_data_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_url_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Community); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*URLData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_url_data_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_url_data_proto_goTypes, + DependencyIndexes: file_url_data_proto_depIdxs, + MessageInfos: file_url_data_proto_msgTypes, + }.Build() + File_url_data_proto = out.File + file_url_data_proto_rawDesc = nil + file_url_data_proto_goTypes = nil + file_url_data_proto_depIdxs = nil } diff --git a/protocol/push_notification_test.go b/protocol/push_notification_test.go index 32fa589fd..5532d4993 100644 --- a/protocol/push_notification_test.go +++ b/protocol/push_notification_test.go @@ -701,7 +701,7 @@ func (s *MessengerPushNotificationSuite) TestContactCode() { s.Require().NoError(err) s.Require().NotNil(contactCodeAdvertisement) - s.Require().NoError(alice.pushNotificationClient.HandleContactCodeAdvertisement(&bob1.identity.PublicKey, *contactCodeAdvertisement)) + s.Require().NoError(alice.pushNotificationClient.HandleContactCodeAdvertisement(&bob1.identity.PublicKey, contactCodeAdvertisement)) } @@ -918,7 +918,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationCommunityReq // Send a community message chat := CreateOneToOneChat(common.PubkeyToHex(&alice.identity.PublicKey), &alice.identity.PublicKey, alice.transport) - inputMessage := &common.Message{} + inputMessage := common.NewMessage() inputMessage.ChatId = chat.ID inputMessage.Text = "some text" inputMessage.CommunityID = community.IDString() diff --git a/protocol/pushnotificationclient/client.go b/protocol/pushnotificationclient/client.go index 4a4b06468..34389a4fa 100644 --- a/protocol/pushnotificationclient/client.go +++ b/protocol/pushnotificationclient/client.go @@ -403,7 +403,11 @@ func (c *Client) Register(deviceToken, apnTopic string, tokenType protobuf.PushN } // HandlePushNotificationRegistrationResponse should check whether the response was successful or not, retry if necessary otherwise store the result in the database -func (c *Client) HandlePushNotificationRegistrationResponse(publicKey *ecdsa.PublicKey, response protobuf.PushNotificationRegistrationResponse) error { +func (c *Client) HandlePushNotificationRegistrationResponse(publicKey *ecdsa.PublicKey, response *protobuf.PushNotificationRegistrationResponse) error { + if response == nil { + return nil + } + c.config.Logger.Debug("received push notification registration response", zap.Any("response", response)) if len(response.RequestId) == 0 { @@ -490,9 +494,9 @@ func (c *Client) processQueryInfo(clientPublicKey *ecdsa.PublicKey, serverPublic } // HandlePushNotificationQueryResponse should update the data in the database for a given user -func (c *Client) HandlePushNotificationQueryResponse(serverPublicKey *ecdsa.PublicKey, response protobuf.PushNotificationQueryResponse) error { +func (c *Client) HandlePushNotificationQueryResponse(serverPublicKey *ecdsa.PublicKey, response *protobuf.PushNotificationQueryResponse) error { c.config.Logger.Debug("received push notification query response", zap.Any("response", response)) - if len(response.Info) == 0 { + if response == nil || len(response.Info) == 0 { return errors.New("empty response from the server") } @@ -521,7 +525,10 @@ func (c *Client) HandlePushNotificationQueryResponse(serverPublicKey *ecdsa.Publ } // HandleContactCodeAdvertisement checks if there are any info and process them -func (c *Client) HandleContactCodeAdvertisement(clientPublicKey *ecdsa.PublicKey, message protobuf.ContactCodeAdvertisement) error { +func (c *Client) HandleContactCodeAdvertisement(clientPublicKey *ecdsa.PublicKey, message *protobuf.ContactCodeAdvertisement) error { + if message == nil { + return nil + } // nothing to do for our own pubkey if common.IsPubKeyEqual(clientPublicKey, &c.config.Identity.PublicKey) { return nil @@ -550,7 +557,11 @@ func (c *Client) HandleContactCodeAdvertisement(clientPublicKey *ecdsa.PublicKey } // HandlePushNotificationResponse should set the request as processed -func (c *Client) HandlePushNotificationResponse(serverKey *ecdsa.PublicKey, response protobuf.PushNotificationResponse) error { +func (c *Client) HandlePushNotificationResponse(serverKey *ecdsa.PublicKey, response *protobuf.PushNotificationResponse) error { + if response == nil { + return nil + } + messageID := response.MessageId c.config.Logger.Debug("received response for", zap.String("messageID", types.EncodeHex(messageID))) for _, report := range response.Reports { diff --git a/protocol/pushnotificationclient/migrations/migrations.go b/protocol/pushnotificationclient/migrations/migrations.go index 729b14dfe..7e5f48e50 100644 --- a/protocol/pushnotificationclient/migrations/migrations.go +++ b/protocol/pushnotificationclient/migrations/migrations.go @@ -16,7 +16,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -26,7 +25,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -34,7 +33,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -90,7 +89,7 @@ func _1593601729_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa, 0x95, 0x55, 0x64, 0x38, 0x40, 0x16, 0xbf, 0x8b, 0x1c, 0x18, 0xb4, 0xc5, 0x7f, 0xd0, 0xb8, 0xf0, 0x3c, 0xa2, 0x82, 0xf8, 0x8d, 0x5a, 0xd3, 0xb6, 0x6e, 0xa3, 0xb4, 0xc, 0x9, 0x33, 0x0}} return a, nil } @@ -110,7 +109,7 @@ func _1593601729_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x1e, 0x5, 0x35, 0x9, 0xb2, 0x2d, 0x6f, 0x33, 0x63, 0xa2, 0x7a, 0x5b, 0xd2, 0x2d, 0xcb, 0x79, 0x7e, 0x6, 0xb4, 0x9d, 0x35, 0xd8, 0x9b, 0x55, 0xe5, 0xf8, 0x44, 0xca, 0xa6, 0xf3, 0xd3}} return a, nil } @@ -130,7 +129,7 @@ func _1597909626_add_server_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -150,7 +149,7 @@ func _1597909626_add_server_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc8, 0x3f, 0xe0, 0xe7, 0x57, 0x0, 0x5d, 0x60, 0xf3, 0x55, 0x64, 0x71, 0x80, 0x3c, 0xca, 0x8, 0x61, 0xb5, 0x3c, 0xe, 0xa1, 0xe4, 0x61, 0xd1, 0x4e, 0xd8, 0xb2, 0x55, 0xdd, 0x87, 0x62, 0x9b}} return a, nil } @@ -170,7 +169,7 @@ func _1599053776_add_chat_id_and_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -190,7 +189,7 @@ func _1599053776_add_chat_id_and_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7a, 0xf9, 0xc4, 0xa2, 0x96, 0x2e, 0xf9, 0x8f, 0x7, 0xf1, 0x1e, 0x73, 0x8a, 0xa6, 0x3a, 0x13, 0x4, 0x73, 0x82, 0x83, 0xb, 0xe3, 0xb5, 0x3b, 0x7e, 0xd, 0x23, 0xce, 0x98, 0xd4, 0xdc}} return a, nil } @@ -210,7 +209,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} return a, nil } @@ -306,30 +305,29 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "1593601729_initial_schema.down.sql": _1593601729_initial_schemaDownSql, - - "1593601729_initial_schema.up.sql": _1593601729_initial_schemaUpSql, - - "1597909626_add_server_type.down.sql": _1597909626_add_server_typeDownSql, - - "1597909626_add_server_type.up.sql": _1597909626_add_server_typeUpSql, - + "1593601729_initial_schema.down.sql": _1593601729_initial_schemaDownSql, + "1593601729_initial_schema.up.sql": _1593601729_initial_schemaUpSql, + "1597909626_add_server_type.down.sql": _1597909626_add_server_typeDownSql, + "1597909626_add_server_type.up.sql": _1597909626_add_server_typeUpSql, "1599053776_add_chat_id_and_type.down.sql": _1599053776_add_chat_id_and_typeDownSql, - - "1599053776_add_chat_id_and_type.up.sql": _1599053776_add_chat_id_and_typeUpSql, - - "doc.go": docGo, + "1599053776_add_chat_id_and_type.up.sql": _1599053776_add_chat_id_and_typeUpSql, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -362,13 +360,13 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1593601729_initial_schema.down.sql": &bintree{_1593601729_initial_schemaDownSql, map[string]*bintree{}}, - "1593601729_initial_schema.up.sql": &bintree{_1593601729_initial_schemaUpSql, map[string]*bintree{}}, - "1597909626_add_server_type.down.sql": &bintree{_1597909626_add_server_typeDownSql, map[string]*bintree{}}, - "1597909626_add_server_type.up.sql": &bintree{_1597909626_add_server_typeUpSql, map[string]*bintree{}}, - "1599053776_add_chat_id_and_type.down.sql": &bintree{_1599053776_add_chat_id_and_typeDownSql, map[string]*bintree{}}, - "1599053776_add_chat_id_and_type.up.sql": &bintree{_1599053776_add_chat_id_and_typeUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1593601729_initial_schema.down.sql": {_1593601729_initial_schemaDownSql, map[string]*bintree{}}, + "1593601729_initial_schema.up.sql": {_1593601729_initial_schemaUpSql, map[string]*bintree{}}, + "1597909626_add_server_type.down.sql": {_1597909626_add_server_typeDownSql, map[string]*bintree{}}, + "1597909626_add_server_type.up.sql": {_1597909626_add_server_typeUpSql, map[string]*bintree{}}, + "1599053776_add_chat_id_and_type.down.sql": {_1599053776_add_chat_id_and_typeDownSql, map[string]*bintree{}}, + "1599053776_add_chat_id_and_type.up.sql": {_1599053776_add_chat_id_and_typeUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -385,7 +383,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/pushnotificationserver/migrations/migrations.go b/protocol/pushnotificationserver/migrations/migrations.go index 962c88b11..ef18771ef 100644 --- a/protocol/pushnotificationserver/migrations/migrations.go +++ b/protocol/pushnotificationserver/migrations/migrations.go @@ -14,7 +14,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -24,7 +23,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -32,7 +31,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -88,7 +87,7 @@ func _1593601728_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0x8a, 0x61, 0x81, 0x57, 0x45, 0x9b, 0x97, 0x9b, 0x1f, 0xf6, 0x94, 0x8a, 0x20, 0xb3, 0x2b, 0xff, 0x69, 0x49, 0xf4, 0x58, 0xcc, 0xd0, 0x55, 0xcc, 0x9a, 0x8b, 0xb6, 0x7f, 0x29, 0x53, 0xc1}} return a, nil } @@ -108,7 +107,7 @@ func _1593601728_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x61, 0x90, 0x79, 0xd9, 0x14, 0x65, 0xe9, 0x96, 0x53, 0x17, 0x33, 0x54, 0xeb, 0x8b, 0x5d, 0x95, 0x99, 0x10, 0x36, 0x58, 0xdd, 0xb2, 0xbf, 0x45, 0xd9, 0xbb, 0xc4, 0x92, 0xe, 0xce, 0x2}} return a, nil } @@ -128,7 +127,7 @@ func _1598419937_add_push_notifications_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x98, 0xc8, 0x30, 0x45, 0x5b, 0xc5, 0x7d, 0x13, 0x5d, 0xe7, 0xc8, 0x23, 0x43, 0xf7, 0xdc, 0x9c, 0xe2, 0xdd, 0x63, 0xf0, 0xb7, 0x16, 0x40, 0xc, 0xda, 0xb9, 0x16, 0x70, 0x2b, 0x5a, 0x7e}} return a, nil } @@ -148,7 +147,7 @@ func _1598419937_add_push_notifications_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2, 0x3e, 0xef, 0xf, 0xc2, 0xdf, 0xbc, 0x99, 0x7a, 0xc2, 0xd3, 0x64, 0x4f, 0x4c, 0x7e, 0xfc, 0x2e, 0x8c, 0xa7, 0x54, 0xd3, 0x4d, 0x25, 0x98, 0x41, 0xbc, 0xea, 0xd7, 0x2, 0xc1, 0xd0, 0x52}} return a, nil } @@ -168,7 +167,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} return a, nil } @@ -264,26 +263,27 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "1593601728_initial_schema.down.sql": _1593601728_initial_schemaDownSql, - - "1593601728_initial_schema.up.sql": _1593601728_initial_schemaUpSql, - + "1593601728_initial_schema.down.sql": _1593601728_initial_schemaDownSql, + "1593601728_initial_schema.up.sql": _1593601728_initial_schemaUpSql, "1598419937_add_push_notifications_table.down.sql": _1598419937_add_push_notifications_tableDownSql, - - "1598419937_add_push_notifications_table.up.sql": _1598419937_add_push_notifications_tableUpSql, - + "1598419937_add_push_notifications_table.up.sql": _1598419937_add_push_notifications_tableUpSql, "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -316,11 +316,11 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1593601728_initial_schema.down.sql": &bintree{_1593601728_initial_schemaDownSql, map[string]*bintree{}}, - "1593601728_initial_schema.up.sql": &bintree{_1593601728_initial_schemaUpSql, map[string]*bintree{}}, - "1598419937_add_push_notifications_table.down.sql": &bintree{_1598419937_add_push_notifications_tableDownSql, map[string]*bintree{}}, - "1598419937_add_push_notifications_table.up.sql": &bintree{_1598419937_add_push_notifications_tableUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1593601728_initial_schema.down.sql": {_1593601728_initial_schemaDownSql, map[string]*bintree{}}, + "1593601728_initial_schema.up.sql": {_1593601728_initial_schemaUpSql, map[string]*bintree{}}, + "1598419937_add_push_notifications_table.down.sql": {_1598419937_add_push_notifications_tableDownSql, map[string]*bintree{}}, + "1598419937_add_push_notifications_table.up.sql": {_1598419937_add_push_notifications_tableUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -337,7 +337,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/pushnotificationserver/server.go b/protocol/pushnotificationserver/server.go index 976f138f5..f0639443d 100644 --- a/protocol/pushnotificationserver/server.go +++ b/protocol/pushnotificationserver/server.go @@ -117,8 +117,12 @@ func (s *Server) HandlePushNotificationRegistration(publicKey *ecdsa.PublicKey, } // HandlePushNotificationQuery builds a response for the query and sends it back to the user -func (s *Server) HandlePushNotificationQuery(publicKey *ecdsa.PublicKey, messageID []byte, query protobuf.PushNotificationQuery) error { - response := s.buildPushNotificationQueryResponse(&query) +func (s *Server) HandlePushNotificationQuery(publicKey *ecdsa.PublicKey, messageID []byte, query *protobuf.PushNotificationQuery) error { + if query == nil { + return nil + } + + response := s.buildPushNotificationQueryResponse(query) if response == nil { return nil } @@ -142,7 +146,7 @@ func (s *Server) HandlePushNotificationQuery(publicKey *ecdsa.PublicKey, message // HandlePushNotificationRequest will send a gorush notification and send a response back to the user func (s *Server) HandlePushNotificationRequest(publicKey *ecdsa.PublicKey, messageID []byte, - request protobuf.PushNotificationRequest) error { + request *protobuf.PushNotificationRequest) error { s.config.Logger.Debug("handling pn request", zap.Binary("message-id", messageID)) // This is at-most-once semantic for now @@ -156,7 +160,7 @@ func (s *Server) HandlePushNotificationRequest(publicKey *ecdsa.PublicKey, return nil } - response, requestsAndRegistrations := s.buildPushNotificationRequestResponse(&request) + response, requestsAndRegistrations := s.buildPushNotificationRequestResponse(request) //AndSendNotification(&request) if response == nil { return nil diff --git a/protocol/status_update.go b/protocol/status_update.go index da0f66b29..922a2bf34 100644 --- a/protocol/status_update.go +++ b/protocol/status_update.go @@ -9,7 +9,7 @@ type UserStatus struct { CustomText string `json:"text"` } -func ToUserStatus(msg protobuf.StatusUpdate) UserStatus { +func ToUserStatus(msg *protobuf.StatusUpdate) UserStatus { return UserStatus{ StatusType: int(msg.StatusType), Clock: msg.Clock, diff --git a/protocol/transport/migrations/migrations.go b/protocol/transport/migrations/migrations.go index 46c6e77ed..aeedb2ed2 100644 --- a/protocol/transport/migrations/migrations.go +++ b/protocol/transport/migrations/migrations.go @@ -15,7 +15,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -25,7 +24,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -33,7 +32,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -89,7 +88,7 @@ func _1561059284_add_waku_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0x2a, 0x7e, 0x9, 0xa3, 0xdd, 0xc6, 0x3, 0xfa, 0xaa, 0x98, 0xa0, 0x26, 0x5e, 0x67, 0x43, 0xe6, 0x20, 0xfd, 0x10, 0xfd, 0x60, 0x89, 0x17, 0x13, 0x87, 0x1b, 0x44, 0x36, 0x79, 0xb6, 0x60}} return a, nil } @@ -109,7 +108,7 @@ func _1561059284_add_waku_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x5c, 0x8, 0x32, 0xef, 0x12, 0x88, 0x21, 0xd, 0x7a, 0x42, 0x4d, 0xe7, 0x2d, 0x6c, 0x99, 0xb6, 0x1, 0xf1, 0xba, 0x2c, 0x40, 0x8d, 0xa9, 0x4b, 0xe6, 0xc4, 0x21, 0xec, 0x47, 0x6b, 0xf7}} return a, nil } @@ -129,7 +128,7 @@ func _1616691080_add_wakuv2_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0xb6, 0x23, 0x70, 0xb8, 0x63, 0x18, 0x61, 0xea, 0x35, 0x6e, 0xae, 0xe9, 0x71, 0x89, 0xa, 0xa5, 0x72, 0xa2, 0x64, 0xaa, 0x45, 0x1, 0xf, 0xfc, 0xee, 0x1b, 0xd9, 0xd2, 0x27, 0xf4, 0xe2}} return a, nil } @@ -149,7 +148,7 @@ func _1616691080_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xf0, 0x97, 0x25, 0xfe, 0x96, 0x2c, 0xa8, 0x62, 0x4a, 0x71, 0x75, 0xff, 0x5f, 0x43, 0x1e, 0x71, 0x53, 0xf1, 0xde, 0xf, 0xcf, 0xcd, 0x87, 0x15, 0x61, 0x9d, 0x25, 0x2e, 0xaf, 0x18, 0x99}} return a, nil } @@ -169,7 +168,7 @@ func _1634723014_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xe1, 0x7a, 0x1e, 0x6, 0xad, 0x1b, 0x37, 0xdb, 0xea, 0x94, 0xaf, 0xe0, 0x7d, 0xc9, 0xd6, 0xda, 0x52, 0x71, 0x8a, 0x44, 0xb3, 0xa6, 0x7b, 0x1e, 0x90, 0xdb, 0x1e, 0x5a, 0xa, 0x40, 0x26}} return a, nil } @@ -189,7 +188,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x6a, 0xc1, 0xce, 0x94, 0xf6, 0xef, 0xf1, 0x97, 0x95, 0xb, 0x35, 0xaf, 0x5f, 0xe7, 0x5f, 0xac, 0x6e, 0xb8, 0xab, 0xba, 0xb5, 0x35, 0x97, 0x22, 0x36, 0x11, 0xce, 0x44, 0xfc, 0xfa, 0xac}} return a, nil } @@ -285,28 +284,28 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "1561059284_add_waku_keys.down.sql": _1561059284_add_waku_keysDownSql, - - "1561059284_add_waku_keys.up.sql": _1561059284_add_waku_keysUpSql, - + "1561059284_add_waku_keys.down.sql": _1561059284_add_waku_keysDownSql, + "1561059284_add_waku_keys.up.sql": _1561059284_add_waku_keysUpSql, "1616691080_add_wakuV2_keys.down.sql": _1616691080_add_wakuv2_keysDownSql, - - "1616691080_add_wakuV2_keys.up.sql": _1616691080_add_wakuv2_keysUpSql, - - "1634723014_add_wakuV2_keys.up.sql": _1634723014_add_wakuv2_keysUpSql, - - "doc.go": docGo, + "1616691080_add_wakuV2_keys.up.sql": _1616691080_add_wakuv2_keysUpSql, + "1634723014_add_wakuV2_keys.up.sql": _1634723014_add_wakuv2_keysUpSql, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -339,12 +338,12 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1561059284_add_waku_keys.down.sql": &bintree{_1561059284_add_waku_keysDownSql, map[string]*bintree{}}, - "1561059284_add_waku_keys.up.sql": &bintree{_1561059284_add_waku_keysUpSql, map[string]*bintree{}}, - "1616691080_add_wakuV2_keys.down.sql": &bintree{_1616691080_add_wakuv2_keysDownSql, map[string]*bintree{}}, - "1616691080_add_wakuV2_keys.up.sql": &bintree{_1616691080_add_wakuv2_keysUpSql, map[string]*bintree{}}, - "1634723014_add_wakuV2_keys.up.sql": &bintree{_1634723014_add_wakuv2_keysUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1561059284_add_waku_keys.down.sql": {_1561059284_add_waku_keysDownSql, map[string]*bintree{}}, + "1561059284_add_waku_keys.up.sql": {_1561059284_add_waku_keysUpSql, map[string]*bintree{}}, + "1616691080_add_wakuV2_keys.down.sql": {_1616691080_add_wakuv2_keysDownSql, map[string]*bintree{}}, + "1616691080_add_wakuV2_keys.up.sql": {_1616691080_add_wakuv2_keysUpSql, map[string]*bintree{}}, + "1634723014_add_wakuV2_keys.up.sql": {_1634723014_add_wakuv2_keysUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -361,7 +360,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/protocol/v1/status_message.go b/protocol/v1/status_message.go index ff6152006..3ec301c1f 100644 --- a/protocol/v1/status_message.go +++ b/protocol/v1/status_message.go @@ -3,7 +3,6 @@ package protocol import ( "crypto/ecdsa" "encoding/json" - "reflect" "github.com/golang/protobuf/proto" "github.com/jinzhu/copier" @@ -27,8 +26,6 @@ type StatusMessage struct { TransportMessage *types.Message `json:"transportMessage"` // Type is the type of application message contained Type protobuf.ApplicationMetadataMessage_Type `json:"-"` - // ParsedMessage is the parsed message by the application layer, i.e the output - ParsedMessage *reflect.Value `json:"-"` // TransportPayload is the payload as received from the transport layer TransportPayload []byte `json:"-"` @@ -175,193 +172,3 @@ func (m *StatusMessage) HandleApplicationMetadata() error { return nil } - -func (m *StatusMessage) HandleApplication() error { - switch m.Type { - case protobuf.ApplicationMetadataMessage_CHAT_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.ChatMessage)) - - case protobuf.ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.MembershipUpdateMessage)) - - case protobuf.ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.AcceptRequestAddressForTransaction)) - - case protobuf.ApplicationMetadataMessage_SEND_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.SendTransaction)) - - case protobuf.ApplicationMetadataMessage_REQUEST_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.RequestTransaction)) - - case protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.DeclineRequestAddressForTransaction)) - - case protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.DeclineRequestTransaction)) - - case protobuf.ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION: - return m.unmarshalProtobufData(new(protobuf.RequestAddressForTransaction)) - - case protobuf.ApplicationMetadataMessage_CONTACT_UPDATE: - return m.unmarshalProtobufData(new(protobuf.ContactUpdate)) - - case protobuf.ApplicationMetadataMessage_PIN_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.PinMessage)) - - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION: - return m.unmarshalProtobufData(new(protobuf.SyncInstallation)) - - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT: - log.Debug("Sync installation contact") - return m.unmarshalProtobufData(new(protobuf.SyncInstallationContactV2)) - - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_PUBLIC_CHAT: - return m.unmarshalProtobufData(new(protobuf.SyncInstallationPublicChat)) - - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT: - return m.unmarshalProtobufData(new(protobuf.SyncInstallationAccount)) - - case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_PICTURE: - return m.unmarshalProtobufData(new(protobuf.SyncProfilePictures)) - - case protobuf.ApplicationMetadataMessage_PAIR_INSTALLATION: - return m.unmarshalProtobufData(new(protobuf.PairInstallation)) - - case protobuf.ApplicationMetadataMessage_SYNC_INSTALLATION_COMMUNITY: - return m.unmarshalProtobufData(new(protobuf.SyncCommunity)) - case protobuf.ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT: - return m.unmarshalProtobufData(new(protobuf.ContactCodeAdvertisement)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REQUEST: - return m.unmarshalProtobufData(new(protobuf.PushNotificationRequest)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION_RESPONSE: - return m.unmarshalProtobufData(new(protobuf.PushNotificationRegistrationResponse)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY: - return m.unmarshalProtobufData(new(protobuf.PushNotificationQuery)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY_RESPONSE: - return m.unmarshalProtobufData(new(protobuf.PushNotificationQueryResponse)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_RESPONSE: - return m.unmarshalProtobufData(new(protobuf.PushNotificationResponse)) - case protobuf.ApplicationMetadataMessage_EMOJI_REACTION: - return m.unmarshalProtobufData(new(protobuf.EmojiReaction)) - case protobuf.ApplicationMetadataMessage_GROUP_CHAT_INVITATION: - return m.unmarshalProtobufData(new(protobuf.GroupChatInvitation)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION: - return m.unmarshalProtobufData(new(protobuf.CommunityDescription)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN: - return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoin)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES: - return m.unmarshalProtobufData(new(protobuf.CommunityEditRevealedAccounts)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN_RESPONSE: - return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoinResponse)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN: - return m.unmarshalProtobufData(new(protobuf.CommunityCancelRequestToJoin)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE: - return m.unmarshalProtobufData(new(protobuf.CommunityRequestToLeave)) - case protobuf.ApplicationMetadataMessage_EDIT_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.EditMessage)) - case protobuf.ApplicationMetadataMessage_DELETE_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.DeleteMessage)) - case protobuf.ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.DeleteForMeMessage)) - case protobuf.ApplicationMetadataMessage_STATUS_UPDATE: - return m.unmarshalProtobufData(new(protobuf.StatusUpdate)) - case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION: - // This message is a bit different as it's encrypted, so we pass it straight through - v := reflect.ValueOf(m.UnwrappedPayload) - m.ParsedMessage = &v - return nil - case protobuf.ApplicationMetadataMessage_CHAT_IDENTITY: - return m.unmarshalProtobufData(new(protobuf.ChatIdentity)) - case protobuf.ApplicationMetadataMessage_ANONYMOUS_METRIC_BATCH: - return m.unmarshalProtobufData(new(protobuf.AnonymousMetricBatch)) - case protobuf.ApplicationMetadataMessage_SYNC_CHAT_REMOVED: - return m.unmarshalProtobufData(new(protobuf.SyncChatRemoved)) - case protobuf.ApplicationMetadataMessage_SYNC_CHAT_MESSAGES_READ: - return m.unmarshalProtobufData(new(protobuf.SyncChatMessagesRead)) - case protobuf.ApplicationMetadataMessage_BACKUP: - return m.unmarshalProtobufData(new(protobuf.Backup)) - case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_READ: - return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterRead)) - case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_ACCEPTED: - return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterAccepted)) - case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DISMISSED: - return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterDismissed)) - case protobuf.ApplicationMetadataMessage_SYNC_BOOKMARK: - return m.unmarshalProtobufData(new(protobuf.SyncBookmark)) - case protobuf.ApplicationMetadataMessage_SYNC_CLEAR_HISTORY: - return m.unmarshalProtobufData(new(protobuf.SyncClearHistory)) - case protobuf.ApplicationMetadataMessage_SYNC_SETTING: - return m.unmarshalProtobufData(new(protobuf.SyncSetting)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_ARCHIVE_MAGNETLINK: - return m.unmarshalProtobufData(new(protobuf.CommunityMessageArchiveMagnetlink)) - case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNT: - return m.unmarshalProtobufData(new(protobuf.SyncAccount)) - case protobuf.ApplicationMetadataMessage_ACCEPT_CONTACT_REQUEST: - return m.unmarshalProtobufData(new(protobuf.AcceptContactRequest)) - case protobuf.ApplicationMetadataMessage_RETRACT_CONTACT_REQUEST: - return m.unmarshalProtobufData(new(protobuf.RetractContactRequest)) - case protobuf.ApplicationMetadataMessage_SYNC_COMMUNITY_SETTINGS: - return m.unmarshalProtobufData(new(protobuf.SyncCommunitySettings)) - case protobuf.ApplicationMetadataMessage_REQUEST_CONTACT_VERIFICATION: - return m.unmarshalProtobufData(new(protobuf.RequestContactVerification)) - case protobuf.ApplicationMetadataMessage_ACCEPT_CONTACT_VERIFICATION: - return m.unmarshalProtobufData(new(protobuf.AcceptContactVerification)) - case protobuf.ApplicationMetadataMessage_CANCEL_CONTACT_VERIFICATION: - return m.unmarshalProtobufData(new(protobuf.CancelContactVerification)) - case protobuf.ApplicationMetadataMessage_DECLINE_CONTACT_VERIFICATION: - return m.unmarshalProtobufData(new(protobuf.DeclineContactVerification)) - case protobuf.ApplicationMetadataMessage_SYNC_TRUSTED_USER: - return m.unmarshalProtobufData((new(protobuf.SyncTrustedUser))) - case protobuf.ApplicationMetadataMessage_SYNC_VERIFICATION_REQUEST: - return m.unmarshalProtobufData((new(protobuf.SyncVerificationRequest))) - case protobuf.ApplicationMetadataMessage_SYNC_CONTACT_REQUEST_DECISION: - return m.unmarshalProtobufData((new(protobuf.SyncContactRequestDecision))) - case protobuf.ApplicationMetadataMessage_SYNC_SAVED_ADDRESS: - return m.unmarshalProtobufData(new(protobuf.SyncSavedAddress)) - case protobuf.ApplicationMetadataMessage_SYNC_SOCIAL_LINKS: - return m.unmarshalProtobufData(new(protobuf.SyncSocialLinks)) - case protobuf.ApplicationMetadataMessage_SYNC_ENS_USERNAME_DETAIL: - return m.unmarshalProtobufData(new(protobuf.SyncEnsUsernameDetail)) - case protobuf.ApplicationMetadataMessage_SYNC_KEYPAIR: - return m.unmarshalProtobufData(new(protobuf.SyncKeypair)) - case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION: - return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterNotifications)) - case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE: - return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterNotificationState)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.CommunityEventsMessage)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED: - return m.unmarshalProtobufData(new(protobuf.CommunityEventsMessageRejected)) - case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNT_CUSTOMIZATION_COLOR: - return m.unmarshalProtobufData(new(protobuf.SyncAccountCustomizationColor)) - case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS: - return m.unmarshalProtobufData(new(protobuf.SyncAccountsPositions)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE: - return m.unmarshalProtobufData(new(protobuf.CommunityPrivilegedUserSyncMessage)) - } - - return nil -} - -func (m *StatusMessage) unmarshalProtobufData(pb proto.Message) error { - var ptr proto.Message - rv := reflect.ValueOf(pb) - if rv.Kind() == reflect.Ptr { - ptr = pb - } else { - ptr = rv.Addr().Interface().(proto.Message) - } - - err := proto.Unmarshal(m.UnwrappedPayload, ptr) - if err != nil { - m.ParsedMessage = nil - log.Error("[message::DecodeMessage] could not decode %T: %#x, err: %v", pb, m.Hash, err.Error()) - } else { - rv = reflect.ValueOf(ptr) - elem := rv.Elem() - m.ParsedMessage = &elem - return nil - } - - return nil -} diff --git a/protocol/wakusync/progress_response.go b/protocol/wakusync/progress_response.go index 28311653d..b15846c18 100644 --- a/protocol/wakusync/progress_response.go +++ b/protocol/wakusync/progress_response.go @@ -14,10 +14,10 @@ func (sfwr *WakuBackedUpDataResponse) AddFetchingBackedUpDataDetails(section str return } if sfwr.FetchingDataProgress == nil { - sfwr.FetchingDataProgress = make(map[string]protobuf.FetchingBackedUpDataDetails) + sfwr.FetchingDataProgress = make(map[string]*protobuf.FetchingBackedUpDataDetails) } - sfwr.FetchingDataProgress[section] = *details + sfwr.FetchingDataProgress[section] = details } func (sfwr *WakuBackedUpDataResponse) FetchingBackedUpDataDetails() map[string]FetchingBackupedDataDetails { diff --git a/protocol/wakusync/response.go b/protocol/wakusync/response.go index e4e522115..39fc64a57 100644 --- a/protocol/wakusync/response.go +++ b/protocol/wakusync/response.go @@ -10,7 +10,7 @@ import ( type WakuBackedUpDataResponse struct { Clock uint64 - FetchingDataProgress map[string]protobuf.FetchingBackedUpDataDetails // key represents the data/section backup details refer to + FetchingDataProgress map[string]*protobuf.FetchingBackedUpDataDetails // key represents the data/section backup details refer to Profile *BackedUpProfile Setting *settings.SyncSettingField Keypair *accounts.Keypair diff --git a/server/handlers_test.go b/server/handlers_test.go index 05633d6ec..e518b4698 100644 --- a/server/handlers_test.go +++ b/server/handlers_test.go @@ -92,7 +92,7 @@ func TestHandleLinkPreviewThumbnail(t *testing.T) { msg := common.Message{ ID: "1", - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ UnfurledLinks: []*protobuf.UnfurledLink{ { Type: protobuf.UnfurledLink_LINK, diff --git a/server/pairing/sync_device_test.go b/server/pairing/sync_device_test.go index 7ac47b273..9e52c098a 100644 --- a/server/pairing/sync_device_test.go +++ b/server/pairing/sync_device_test.go @@ -689,7 +689,7 @@ func (t *testTimeSource) GetCurrentTime() uint64 { func buildTestMessage(chat *protocol.Chat) *common.Message { clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) - message := &common.Message{} + message := common.NewMessage() message.Text = "text-input-message" message.ChatId = chat.ID message.Clock = clock diff --git a/services/chat/api_send_messages.go b/services/chat/api_send_messages.go index beddec9a5..1ab1b5a21 100644 --- a/services/chat/api_send_messages.go +++ b/services/chat/api_send_messages.go @@ -22,7 +22,7 @@ func (api *API) SendSticker(ctx context.Context, communityID types.HexBytes, cha msg := &common.Message{ CommunityID: string(communityID.Bytes()), - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, ContentType: protobuf.ChatMessage_STICKER, Text: "Update to latest version to see a nice sticker here!", @@ -79,7 +79,7 @@ func (api *API) SendMessage(ctx context.Context, communityID types.HexBytes, cha msg := &common.Message{ CommunityID: string(communityID.Bytes()), - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, ContentType: isTextOrEmoji(text), Text: text, @@ -104,7 +104,7 @@ func (api *API) SendImages(ctx context.Context, communityID types.HexBytes, chat for _, imagePath := range imagePaths { messages = append(messages, &common.Message{ CommunityID: string(communityID.Bytes()), - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, ContentType: protobuf.ChatMessage_IMAGE, Text: "Update to latest version to see a nice image here!", @@ -118,7 +118,7 @@ func (api *API) SendImages(ctx context.Context, communityID types.HexBytes, chat if text != "" { messages = append(messages, &common.Message{ CommunityID: string(communityID.Bytes()), - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, ContentType: isTextOrEmoji(text), Text: text, @@ -142,7 +142,7 @@ func (api *API) SendAudio(ctx context.Context, communityID types.HexBytes, chatI msg := &common.Message{ CommunityID: string(communityID.Bytes()), - ChatMessage: protobuf.ChatMessage{ + ChatMessage: &protobuf.ChatMessage{ ChatId: chatID, Text: "Update to latest version to listen to an audio message here!", ContentType: protobuf.ChatMessage_AUDIO, diff --git a/static/bindata.go b/static/bindata.go index dd5773373..5e9a882a2 100644 --- a/static/bindata.go +++ b/static/bindata.go @@ -29,7 +29,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -39,7 +38,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -47,7 +46,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -103,7 +102,7 @@ func emojisTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x28, 0xc, 0x22, 0x34, 0xa1, 0xeb, 0x8, 0x8d, 0xef, 0x38, 0x1b, 0xd8, 0xc2, 0x1a, 0x6d, 0xa2, 0x62, 0xad, 0x43, 0xfc, 0x1c, 0x38, 0xda, 0x8c, 0x3f, 0x34, 0xa, 0x8c, 0x6f, 0x5d, 0xd8}} return a, nil } @@ -123,7 +122,7 @@ func ConfigReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0x44, 0x2b, 0x13, 0x14, 0x34, 0xa, 0x66, 0x62, 0x1b, 0xc6, 0x4a, 0x2c, 0x7d, 0x4d, 0x89, 0xfb, 0xc9, 0x69, 0xe4, 0x18, 0x5f, 0x3, 0x98, 0x6d, 0x3c, 0x9e, 0xa8, 0xcd, 0x53, 0x5d, 0x75}} return a, nil } @@ -143,7 +142,7 @@ func ConfigCliAnonMetricNodeClientJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xdf, 0xcd, 0xc8, 0x92, 0x1d, 0x63, 0x5e, 0xe1, 0xf9, 0x7f, 0xed, 0xf2, 0x68, 0x6b, 0x20, 0xff, 0x1d, 0x3b, 0xc9, 0x7b, 0xb9, 0x6a, 0xba, 0xd3, 0xbd, 0xf7, 0x48, 0x7b, 0x5a, 0x52, 0x79}} return a, nil } @@ -163,7 +162,7 @@ func ConfigCliAnonMetricNodeServerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf0, 0x2f, 0x97, 0xab, 0x77, 0x61, 0x93, 0x9d, 0x1f, 0x33, 0x18, 0x72, 0xad, 0xce, 0xa3, 0x35, 0xa9, 0x44, 0xbf, 0x29, 0xa8, 0xea, 0x21, 0xb7, 0x22, 0x7f, 0x7d, 0x3a, 0x6b, 0x55, 0x3c, 0x66}} return a, nil } @@ -183,7 +182,7 @@ func ConfigCliFleetEthProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x4f, 0x86, 0x8b, 0x6e, 0x2, 0x27, 0xa3, 0x37, 0x27, 0x74, 0x51, 0xf0, 0x97, 0x5b, 0x64, 0x8e, 0xbd, 0x29, 0xba, 0x75, 0x2d, 0x75, 0x78, 0x46, 0xb9, 0x56, 0x6, 0xb1, 0xf9, 0x85, 0xdd}} return a, nil } @@ -203,7 +202,7 @@ func ConfigCliFleetEthStagingJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0xac, 0xc9, 0x61, 0x97, 0x42, 0x0, 0x3a, 0xfc, 0x78, 0x11, 0xa1, 0xc7, 0x55, 0x71, 0x46, 0x72, 0x3e, 0x52, 0xb0, 0x89, 0x69, 0x7f, 0x8f, 0xf1, 0x26, 0x44, 0xc5, 0xfc, 0x20, 0x9f, 0xa1}} return a, nil } @@ -223,7 +222,7 @@ func ConfigCliFleetStatusProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0xea, 0x14, 0x57, 0xed, 0x60, 0x4d, 0xb6, 0x32, 0x7e, 0xd3, 0xbe, 0x1e, 0xc7, 0xfe, 0x42, 0xee, 0xfe, 0x10, 0xe4, 0x22, 0x64, 0xc1, 0xb9, 0xce, 0x34, 0xcd, 0xdd, 0xe3, 0x38, 0x43, 0xd3}} return a, nil } @@ -243,7 +242,7 @@ func ConfigCliFleetStatusTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x9f, 0x8f, 0x25, 0x1f, 0x31, 0xbd, 0x72, 0x26, 0xb7, 0xd, 0x7e, 0xcb, 0xbb, 0x12, 0xef, 0x9f, 0x1a, 0x2e, 0xb, 0x96, 0x64, 0x7d, 0x52, 0x9e, 0x68, 0x13, 0x55, 0xd5, 0x88, 0x38, 0x7b}} return a, nil } @@ -263,7 +262,7 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xb9, 0x1c, 0x57, 0x50, 0xa9, 0x93, 0x70, 0xcd, 0xd7, 0x22, 0xee, 0x65, 0x72, 0x11, 0x71, 0xd3, 0x20, 0xd0, 0xf0, 0x4d, 0x53, 0x94, 0x44, 0x81, 0xbd, 0x11, 0xed, 0x5e, 0x72, 0x0, 0x12}} return a, nil } @@ -283,7 +282,7 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x67, 0x1e, 0xd1, 0x98, 0x7b, 0xf3, 0x9f, 0x76, 0xa0, 0xbe, 0x67, 0x29, 0xdb, 0xd7, 0x3e, 0xb8, 0x7c, 0x65, 0x2d, 0x2, 0x84, 0xe0, 0xab, 0x8d, 0x3d, 0x4a, 0x53, 0xb4, 0xa7, 0x2e, 0xf0}} return a, nil } @@ -303,7 +302,7 @@ func ConfigCliLesEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xee, 0x27, 0xa7, 0x74, 0xa0, 0x46, 0xa1, 0x41, 0xed, 0x4d, 0x16, 0x5b, 0xf3, 0xf0, 0x7c, 0xc8, 0x2f, 0x6f, 0x47, 0xa4, 0xbb, 0x5f, 0x43, 0x33, 0xd, 0x9, 0x9d, 0xea, 0x9e, 0x15, 0xee}} return a, nil } @@ -323,7 +322,7 @@ func ConfigCliMailserverEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xec, 0x81, 0x8b, 0x99, 0xb6, 0xdb, 0xc0, 0x8b, 0x46, 0x97, 0x96, 0xc7, 0x58, 0x30, 0x33, 0xef, 0x54, 0x25, 0x87, 0x7b, 0xb9, 0x94, 0x6b, 0x18, 0xa4, 0x5b, 0x58, 0x67, 0x7c, 0x44, 0xa6}} return a, nil } @@ -343,7 +342,7 @@ func ConfigStatusChainGenesisJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xf0, 0xc, 0x1, 0x95, 0x65, 0x6, 0x55, 0x48, 0x8f, 0x83, 0xa0, 0xb4, 0x81, 0xda, 0xad, 0x30, 0x6d, 0xb2, 0x78, 0x1b, 0x26, 0x4, 0x13, 0x12, 0x9, 0x6, 0xae, 0x3a, 0x2c, 0x1, 0x71}} return a, nil } @@ -363,7 +362,7 @@ func keysBootnodeKey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x31, 0xcf, 0x27, 0xd4, 0x96, 0x2e, 0x32, 0xcd, 0x58, 0x96, 0x2a, 0xe5, 0x8c, 0xa0, 0xf1, 0x73, 0x1f, 0xd6, 0xd6, 0x8b, 0xb, 0x73, 0xd3, 0x2c, 0x84, 0x1a, 0x56, 0xa4, 0x74, 0xb6, 0x95, 0x20}} return a, nil } @@ -383,7 +382,7 @@ func keysFirebaseauthkey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe, 0x69, 0x23, 0x64, 0x7d, 0xf9, 0x14, 0x37, 0x6f, 0x2b, 0x1, 0xf0, 0xb0, 0xa4, 0xb2, 0xd0, 0x18, 0xcd, 0xf9, 0xeb, 0x57, 0xa3, 0xfd, 0x79, 0x25, 0xa7, 0x9c, 0x3, 0xce, 0x26, 0xec, 0xe1}} return a, nil } @@ -403,7 +402,7 @@ func keysTestAccount1StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xba, 0x35, 0x1, 0x2b, 0x9d, 0xad, 0xf0, 0x2d, 0x3c, 0x4d, 0x6, 0xb5, 0x22, 0x2, 0x47, 0xd4, 0x1c, 0xf4, 0x31, 0x2f, 0xb, 0x5b, 0x27, 0x5d, 0x43, 0x97, 0x58, 0x2d, 0xf0, 0xe1, 0xbe}} return a, nil } @@ -423,7 +422,7 @@ func keysTestAccount1Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0x43, 0xc2, 0xf4, 0x8c, 0xc6, 0x64, 0x25, 0x8c, 0x7, 0x8c, 0xa8, 0x89, 0x2b, 0x7b, 0x9b, 0x4f, 0x81, 0xcb, 0xce, 0x3d, 0xef, 0x82, 0x9c, 0x27, 0x27, 0xa9, 0xc5, 0x46, 0x70, 0x30, 0x38}} return a, nil } @@ -443,7 +442,7 @@ func keysTestAccount2StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0xf8, 0x5c, 0xe9, 0x92, 0x96, 0x2d, 0x88, 0x2b, 0x8e, 0x42, 0x3f, 0xa4, 0x93, 0x6c, 0xad, 0xe9, 0xc0, 0x1b, 0x8a, 0x8, 0x8c, 0x5e, 0x7a, 0x84, 0xa2, 0xf, 0x9f, 0x77, 0x58, 0x2c, 0x2c}} return a, nil } @@ -463,7 +462,7 @@ func keysTestAccount2Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x72, 0xd5, 0x95, 0x5c, 0x5a, 0x99, 0x9d, 0x2f, 0x21, 0x83, 0xd7, 0x10, 0x17, 0x4a, 0x3d, 0x65, 0xc9, 0x26, 0x1a, 0x2c, 0x9d, 0x65, 0x63, 0xd2, 0xa0, 0xfc, 0x7c, 0x0, 0x87, 0x38, 0x9f}} return a, nil } @@ -483,7 +482,7 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x40, 0x56, 0xc1, 0x5e, 0x10, 0x6e, 0x28, 0x15, 0x3, 0x4e, 0xc4, 0xc4, 0x71, 0x4d, 0x16, 0x99, 0xcc, 0x1b, 0x63, 0xee, 0x10, 0x20, 0xe4, 0x59, 0x52, 0x3f, 0xc0, 0xad, 0x15, 0x13, 0x72}} return a, nil } @@ -579,56 +578,42 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "emojis.txt": emojisTxt, - + "emojis.txt": emojisTxt, "../config/README.md": ConfigReadmeMd, - "../config/cli/anon-metric-node-client.json": ConfigCliAnonMetricNodeClientJson, - "../config/cli/anon-metric-node-server.json": ConfigCliAnonMetricNodeServerJson, - - "../config/cli/fleet-eth.prod.json": ConfigCliFleetEthProdJson, - - "../config/cli/fleet-eth.staging.json": ConfigCliFleetEthStagingJson, - - "../config/cli/fleet-status.prod.json": ConfigCliFleetStatusProdJson, - - "../config/cli/fleet-status.test.json": ConfigCliFleetStatusTestJson, - - "../config/cli/fleet-wakuv2.prod.json": ConfigCliFleetWakuv2ProdJson, - - "../config/cli/fleet-wakuv2.test.json": ConfigCliFleetWakuv2TestJson, - - "../config/cli/les-enabled.json": ConfigCliLesEnabledJson, - - "../config/cli/mailserver-enabled.json": ConfigCliMailserverEnabledJson, - - "../config/status-chain-genesis.json": ConfigStatusChainGenesisJson, - - "keys/bootnode.key": keysBootnodeKey, - - "keys/firebaseauthkey": keysFirebaseauthkey, - - "keys/test-account1-status-chain.pk": keysTestAccount1StatusChainPk, - - "keys/test-account1.pk": keysTestAccount1Pk, - - "keys/test-account2-status-chain.pk": keysTestAccount2StatusChainPk, - - "keys/test-account2.pk": keysTestAccount2Pk, - - "keys/test-account3-before-eip55.pk": keysTestAccount3BeforeEip55Pk, + "../config/cli/fleet-eth.prod.json": ConfigCliFleetEthProdJson, + "../config/cli/fleet-eth.staging.json": ConfigCliFleetEthStagingJson, + "../config/cli/fleet-status.prod.json": ConfigCliFleetStatusProdJson, + "../config/cli/fleet-status.test.json": ConfigCliFleetStatusTestJson, + "../config/cli/fleet-wakuv2.prod.json": ConfigCliFleetWakuv2ProdJson, + "../config/cli/fleet-wakuv2.test.json": ConfigCliFleetWakuv2TestJson, + "../config/cli/les-enabled.json": ConfigCliLesEnabledJson, + "../config/cli/mailserver-enabled.json": ConfigCliMailserverEnabledJson, + "../config/status-chain-genesis.json": ConfigStatusChainGenesisJson, + "keys/bootnode.key": keysBootnodeKey, + "keys/firebaseauthkey": keysFirebaseauthkey, + "keys/test-account1-status-chain.pk": keysTestAccount1StatusChainPk, + "keys/test-account1.pk": keysTestAccount1Pk, + "keys/test-account2-status-chain.pk": keysTestAccount2StatusChainPk, + "keys/test-account2.pk": keysTestAccount2Pk, + "keys/test-account3-before-eip55.pk": keysTestAccount3BeforeEip55Pk, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -661,33 +646,33 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "..": &bintree{nil, map[string]*bintree{ - "config": &bintree{nil, map[string]*bintree{ - "README.md": &bintree{ConfigReadmeMd, map[string]*bintree{}}, - "cli": &bintree{nil, map[string]*bintree{ - "anon-metric-node-client.json": &bintree{ConfigCliAnonMetricNodeClientJson, map[string]*bintree{}}, - "anon-metric-node-server.json": &bintree{ConfigCliAnonMetricNodeServerJson, map[string]*bintree{}}, - "fleet-eth.prod.json": &bintree{ConfigCliFleetEthProdJson, map[string]*bintree{}}, - "fleet-eth.staging.json": &bintree{ConfigCliFleetEthStagingJson, map[string]*bintree{}}, - "fleet-status.prod.json": &bintree{ConfigCliFleetStatusProdJson, map[string]*bintree{}}, - "fleet-status.test.json": &bintree{ConfigCliFleetStatusTestJson, map[string]*bintree{}}, - "fleet-wakuv2.prod.json": &bintree{ConfigCliFleetWakuv2ProdJson, map[string]*bintree{}}, - "fleet-wakuv2.test.json": &bintree{ConfigCliFleetWakuv2TestJson, map[string]*bintree{}}, - "les-enabled.json": &bintree{ConfigCliLesEnabledJson, map[string]*bintree{}}, - "mailserver-enabled.json": &bintree{ConfigCliMailserverEnabledJson, map[string]*bintree{}}, + "..": {nil, map[string]*bintree{ + "config": {nil, map[string]*bintree{ + "README.md": {ConfigReadmeMd, map[string]*bintree{}}, + "cli": {nil, map[string]*bintree{ + "anon-metric-node-client.json": {ConfigCliAnonMetricNodeClientJson, map[string]*bintree{}}, + "anon-metric-node-server.json": {ConfigCliAnonMetricNodeServerJson, map[string]*bintree{}}, + "fleet-eth.prod.json": {ConfigCliFleetEthProdJson, map[string]*bintree{}}, + "fleet-eth.staging.json": {ConfigCliFleetEthStagingJson, map[string]*bintree{}}, + "fleet-status.prod.json": {ConfigCliFleetStatusProdJson, map[string]*bintree{}}, + "fleet-status.test.json": {ConfigCliFleetStatusTestJson, map[string]*bintree{}}, + "fleet-wakuv2.prod.json": {ConfigCliFleetWakuv2ProdJson, map[string]*bintree{}}, + "fleet-wakuv2.test.json": {ConfigCliFleetWakuv2TestJson, map[string]*bintree{}}, + "les-enabled.json": {ConfigCliLesEnabledJson, map[string]*bintree{}}, + "mailserver-enabled.json": {ConfigCliMailserverEnabledJson, map[string]*bintree{}}, }}, - "status-chain-genesis.json": &bintree{ConfigStatusChainGenesisJson, map[string]*bintree{}}, + "status-chain-genesis.json": {ConfigStatusChainGenesisJson, map[string]*bintree{}}, }}, }}, - "emojis.txt": &bintree{emojisTxt, map[string]*bintree{}}, - "keys": &bintree{nil, map[string]*bintree{ - "bootnode.key": &bintree{keysBootnodeKey, map[string]*bintree{}}, - "firebaseauthkey": &bintree{keysFirebaseauthkey, map[string]*bintree{}}, - "test-account1-status-chain.pk": &bintree{keysTestAccount1StatusChainPk, map[string]*bintree{}}, - "test-account1.pk": &bintree{keysTestAccount1Pk, map[string]*bintree{}}, - "test-account2-status-chain.pk": &bintree{keysTestAccount2StatusChainPk, map[string]*bintree{}}, - "test-account2.pk": &bintree{keysTestAccount2Pk, map[string]*bintree{}}, - "test-account3-before-eip55.pk": &bintree{keysTestAccount3BeforeEip55Pk, map[string]*bintree{}}, + "emojis.txt": {emojisTxt, map[string]*bintree{}}, + "keys": {nil, map[string]*bintree{ + "bootnode.key": {keysBootnodeKey, map[string]*bintree{}}, + "firebaseauthkey": {keysFirebaseauthkey, map[string]*bintree{}}, + "test-account1-status-chain.pk": {keysTestAccount1StatusChainPk, map[string]*bintree{}}, + "test-account1.pk": {keysTestAccount1Pk, map[string]*bintree{}}, + "test-account2-status-chain.pk": {keysTestAccount2StatusChainPk, map[string]*bintree{}}, + "test-account2.pk": {keysTestAccount2Pk, map[string]*bintree{}}, + "test-account3-before-eip55.pk": {keysTestAccount3BeforeEip55Pk, map[string]*bintree{}}, }}, }} @@ -705,7 +690,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/t/bindata.go b/t/bindata.go index 4569aeae3..f7d804828 100644 --- a/t/bindata.go +++ b/t/bindata.go @@ -12,7 +12,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -22,7 +21,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -30,7 +29,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -86,7 +85,7 @@ func configPublicChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0x5d, 0xc0, 0xfe, 0x57, 0x50, 0x18, 0xec, 0x2d, 0x61, 0x1b, 0xa9, 0x81, 0x11, 0x5f, 0x77, 0xf7, 0xb6, 0x67, 0x82, 0x1, 0x40, 0x68, 0x9d, 0xc5, 0x41, 0xaf, 0xce, 0x43, 0x81, 0x92, 0x96}} return a, nil } @@ -106,7 +105,7 @@ func configStatusChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xb3, 0x61, 0x51, 0x70, 0x3c, 0x12, 0x3e, 0xf1, 0x1c, 0x81, 0xfb, 0x9a, 0x7c, 0xe3, 0x63, 0xd0, 0x8f, 0x12, 0xc5, 0x2d, 0xf4, 0xea, 0x27, 0x33, 0xef, 0xca, 0xf9, 0x3f, 0x72, 0x44, 0xbf}} return a, nil } @@ -126,7 +125,7 @@ func configTestDataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1692356179, 0)} + info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xce, 0x9d, 0x80, 0xf5, 0x87, 0xfa, 0x57, 0x1d, 0xa1, 0xd5, 0x7a, 0x10, 0x3, 0xac, 0xd7, 0xf4, 0x64, 0x32, 0x96, 0x2b, 0xb7, 0x21, 0xb7, 0xa6, 0x80, 0x40, 0xe9, 0x65, 0xe3, 0xd6, 0xbd, 0x40}} return a, nil } @@ -223,21 +222,24 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "config/public-chain-accounts.json": configPublicChainAccountsJson, - "config/status-chain-accounts.json": configStatusChainAccountsJson, - - "config/test-data.json": configTestDataJson, + "config/test-data.json": configTestDataJson, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -270,10 +272,10 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "config": &bintree{nil, map[string]*bintree{ - "public-chain-accounts.json": &bintree{configPublicChainAccountsJson, map[string]*bintree{}}, - "status-chain-accounts.json": &bintree{configStatusChainAccountsJson, map[string]*bintree{}}, - "test-data.json": &bintree{configTestDataJson, map[string]*bintree{}}, + "config": {nil, map[string]*bintree{ + "public-chain-accounts.json": {configPublicChainAccountsJson, map[string]*bintree{}}, + "status-chain-accounts.json": {configStatusChainAccountsJson, map[string]*bintree{}}, + "test-data.json": {configTestDataJson, map[string]*bintree{}}, }}, }} @@ -291,7 +293,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c new file mode 100644 index 000000000..5b141a994 --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c @@ -0,0 +1,150 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "lax_der_parsing.h" + +int ecdsa_signature_parse_der_lax(const secp256k1_context* ctx, secp256k1_ecdsa_signature* sig, const unsigned char *input, size_t inputlen) { + size_t rpos, rlen, spos, slen; + size_t pos = 0; + size_t lenbyte; + unsigned char tmpsig[64] = {0}; + int overflow = 0; + + /* Hack to initialize sig with a correctly-parsed but invalid signature. */ + secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + + /* Sequence tag byte */ + if (pos == inputlen || input[pos] != 0x30) { + return 0; + } + pos++; + + /* Sequence length bytes */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + pos += lenbyte; + } + + /* Integer tag byte for R */ + if (pos == inputlen || input[pos] != 0x02) { + return 0; + } + pos++; + + /* Integer length for R */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + while (lenbyte > 0 && input[pos] == 0) { + pos++; + lenbyte--; + } + if (lenbyte >= sizeof(size_t)) { + return 0; + } + rlen = 0; + while (lenbyte > 0) { + rlen = (rlen << 8) + input[pos]; + pos++; + lenbyte--; + } + } else { + rlen = lenbyte; + } + if (rlen > inputlen - pos) { + return 0; + } + rpos = pos; + pos += rlen; + + /* Integer tag byte for S */ + if (pos == inputlen || input[pos] != 0x02) { + return 0; + } + pos++; + + /* Integer length for S */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + while (lenbyte > 0 && input[pos] == 0) { + pos++; + lenbyte--; + } + if (lenbyte >= sizeof(size_t)) { + return 0; + } + slen = 0; + while (lenbyte > 0) { + slen = (slen << 8) + input[pos]; + pos++; + lenbyte--; + } + } else { + slen = lenbyte; + } + if (slen > inputlen - pos) { + return 0; + } + spos = pos; + pos += slen; + + /* Ignore leading zeroes in R */ + while (rlen > 0 && input[rpos] == 0) { + rlen--; + rpos++; + } + /* Copy R value */ + if (rlen > 32) { + overflow = 1; + } else { + memcpy(tmpsig + 32 - rlen, input + rpos, rlen); + } + + /* Ignore leading zeroes in S */ + while (slen > 0 && input[spos] == 0) { + slen--; + spos++; + } + /* Copy S value */ + if (slen > 32) { + overflow = 1; + } else { + memcpy(tmpsig + 64 - slen, input + spos, slen); + } + + if (!overflow) { + overflow = !secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + } + if (overflow) { + memset(tmpsig, 0, 64); + secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + } + return 1; +} + diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.h new file mode 100644 index 000000000..6d27871a7 --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.h @@ -0,0 +1,91 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/**** + * Please do not link this file directly. It is not part of the libsecp256k1 + * project and does not promise any stability in its API, functionality or + * presence. Projects which use this code should instead copy this header + * and its accompanying .c file directly into their codebase. + ****/ + +/* This file defines a function that parses DER with various errors and + * violations. This is not a part of the library itself, because the allowed + * violations are chosen arbitrarily and do not follow or establish any + * standard. + * + * In many places it matters that different implementations do not only accept + * the same set of valid signatures, but also reject the same set of signatures. + * The only means to accomplish that is by strictly obeying a standard, and not + * accepting anything else. + * + * Nonetheless, sometimes there is a need for compatibility with systems that + * use signatures which do not strictly obey DER. The snippet below shows how + * certain violations are easily supported. You may need to adapt it. + * + * Do not use this for new systems. Use well-defined DER or compact signatures + * instead if you have the choice (see secp256k1_ecdsa_signature_parse_der and + * secp256k1_ecdsa_signature_parse_compact). + * + * The supported violations are: + * - All numbers are parsed as nonnegative integers, even though X.609-0207 + * section 8.3.3 specifies that integers are always encoded as two's + * complement. + * - Integers can have length 0, even though section 8.3.1 says they can't. + * - Integers with overly long padding are accepted, violation section + * 8.3.2. + * - 127-byte long length descriptors are accepted, even though section + * 8.1.3.5.c says that they are not. + * - Trailing garbage data inside or after the signature is ignored. + * - The length descriptor of the sequence is ignored. + * + * Compared to for example OpenSSL, many violations are NOT supported: + * - Using overly long tag descriptors for the sequence or integers inside, + * violating section 8.1.2.2. + * - Encoding primitive integers as constructed values, violating section + * 8.3.1. + */ + +#ifndef _SECP256K1_CONTRIB_LAX_DER_PARSING_H_ +#define _SECP256K1_CONTRIB_LAX_DER_PARSING_H_ + +#include + +# ifdef __cplusplus +extern "C" { +# endif + +/** Parse a signature in "lax DER" format + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input: a pointer to the signature to be parsed + * inputlen: the length of the array pointed to be input + * + * This function will accept any valid DER encoded signature, even if the + * encoded numbers are out of range. In addition, it will accept signatures + * which violate the DER spec in various ways. Its purpose is to allow + * validation of the Bitcoin blockchain, which includes non-DER signatures + * from before the network rules were updated to enforce DER. Note that + * the set of supported violations is a strict subset of what OpenSSL will + * accept. + * + * After the call, sig will always be initialized. If parsing failed or the + * encoded numbers are out of range, signature validation with it is + * guaranteed to fail for every message and public key. + */ +int ecdsa_signature_parse_der_lax( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.c b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.c new file mode 100644 index 000000000..c2e63b4b8 --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.c @@ -0,0 +1,113 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "lax_der_privatekey_parsing.h" + +int ec_privkey_import_der(const secp256k1_context* ctx, unsigned char *out32, const unsigned char *privkey, size_t privkeylen) { + const unsigned char *end = privkey + privkeylen; + int lenb = 0; + int len = 0; + memset(out32, 0, 32); + /* sequence header */ + if (end < privkey+1 || *privkey != 0x30) { + return 0; + } + privkey++; + /* sequence length constructor */ + if (end < privkey+1 || !(*privkey & 0x80)) { + return 0; + } + lenb = *privkey & ~0x80; privkey++; + if (lenb < 1 || lenb > 2) { + return 0; + } + if (end < privkey+lenb) { + return 0; + } + /* sequence length */ + len = privkey[lenb-1] | (lenb > 1 ? privkey[lenb-2] << 8 : 0); + privkey += lenb; + if (end < privkey+len) { + return 0; + } + /* sequence element 0: version number (=1) */ + if (end < privkey+3 || privkey[0] != 0x02 || privkey[1] != 0x01 || privkey[2] != 0x01) { + return 0; + } + privkey += 3; + /* sequence element 1: octet string, up to 32 bytes */ + if (end < privkey+2 || privkey[0] != 0x04 || privkey[1] > 0x20 || end < privkey+2+privkey[1]) { + return 0; + } + memcpy(out32 + 32 - privkey[1], privkey + 2, privkey[1]); + if (!secp256k1_ec_seckey_verify(ctx, out32)) { + memset(out32, 0, 32); + return 0; + } + return 1; +} + +int ec_privkey_export_der(const secp256k1_context *ctx, unsigned char *privkey, size_t *privkeylen, const unsigned char *key32, int compressed) { + secp256k1_pubkey pubkey; + size_t pubkeylen = 0; + if (!secp256k1_ec_pubkey_create(ctx, &pubkey, key32)) { + *privkeylen = 0; + return 0; + } + if (compressed) { + static const unsigned char begin[] = { + 0x30,0x81,0xD3,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0x85,0x30,0x81,0x82,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x21,0x02,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x24,0x03,0x22,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + memcpy(ptr, key32, 32); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + pubkeylen = 33; + secp256k1_ec_pubkey_serialize(ctx, ptr, &pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED); + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } else { + static const unsigned char begin[] = { + 0x30,0x82,0x01,0x13,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0xA5,0x30,0x81,0xA2,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x41,0x04,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x48,0x3A,0xDA,0x77,0x26,0xA3,0xC4,0x65,0x5D,0xA4,0xFB,0xFC,0x0E,0x11, + 0x08,0xA8,0xFD,0x17,0xB4,0x48,0xA6,0x85,0x54,0x19,0x9C,0x47,0xD0,0x8F,0xFB,0x10, + 0xD4,0xB8,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x44,0x03,0x42,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + memcpy(ptr, key32, 32); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + pubkeylen = 65; + secp256k1_ec_pubkey_serialize(ctx, ptr, &pubkeylen, &pubkey, SECP256K1_EC_UNCOMPRESSED); + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } + return 1; +} diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.h new file mode 100644 index 000000000..2fd088f8a --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/contrib/lax_der_privatekey_parsing.h @@ -0,0 +1,90 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/**** + * Please do not link this file directly. It is not part of the libsecp256k1 + * project and does not promise any stability in its API, functionality or + * presence. Projects which use this code should instead copy this header + * and its accompanying .c file directly into their codebase. + ****/ + +/* This file contains code snippets that parse DER private keys with + * various errors and violations. This is not a part of the library + * itself, because the allowed violations are chosen arbitrarily and + * do not follow or establish any standard. + * + * It also contains code to serialize private keys in a compatible + * manner. + * + * These functions are meant for compatibility with applications + * that require BER encoded keys. When working with secp256k1-specific + * code, the simple 32-byte private keys normally used by the + * library are sufficient. + */ + +#ifndef _SECP256K1_CONTRIB_BER_PRIVATEKEY_H_ +#define _SECP256K1_CONTRIB_BER_PRIVATEKEY_H_ + +#include + +# ifdef __cplusplus +extern "C" { +# endif + +/** Export a private key in DER format. + * + * Returns: 1 if the private key was valid. + * Args: ctx: pointer to a context object, initialized for signing (cannot + * be NULL) + * Out: privkey: pointer to an array for storing the private key in BER. + * Should have space for 279 bytes, and cannot be NULL. + * privkeylen: Pointer to an int where the length of the private key in + * privkey will be stored. + * In: seckey: pointer to a 32-byte secret key to export. + * compressed: 1 if the key should be exported in + * compressed format, 0 otherwise + * + * This function is purely meant for compatibility with applications that + * require BER encoded keys. When working with secp256k1-specific code, the + * simple 32-byte private keys are sufficient. + * + * Note that this function does not guarantee correct DER output. It is + * guaranteed to be parsable by secp256k1_ec_privkey_import_der + */ +SECP256K1_WARN_UNUSED_RESULT int ec_privkey_export_der( + const secp256k1_context* ctx, + unsigned char *privkey, + size_t *privkeylen, + const unsigned char *seckey, + int compressed +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Import a private key in DER format. + * Returns: 1 if a private key was extracted. + * Args: ctx: pointer to a context object (cannot be NULL). + * Out: seckey: pointer to a 32-byte array for storing the private key. + * (cannot be NULL). + * In: privkey: pointer to a private key in DER format (cannot be NULL). + * privkeylen: length of the DER private key pointed to be privkey. + * + * This function will accept more than just strict DER, and even allow some BER + * violations. The public key stored inside the DER-encoded private key is not + * verified for correctness, nor are the curve parameters. Use this function + * only if you know in advance it is supposed to contain a secp256k1 private + * key. + */ +SECP256K1_WARN_UNUSED_RESULT int ec_privkey_import_der( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *privkey, + size_t privkeylen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c new file mode 100644 index 000000000..bcef7b32c --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c @@ -0,0 +1,377 @@ +#include +#include +#include +#include "org_bitcoin_NativeSecp256k1.h" +#include "include/secp256k1.h" +#include "include/secp256k1_ecdh.h" +#include "include/secp256k1_recovery.h" + + +SECP256K1_API jlong JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ctx_1clone + (JNIEnv* env, jclass classObject, jlong ctx_l) +{ + const secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + + jlong ctx_clone_l = (uintptr_t) secp256k1_context_clone(ctx); + + (void)classObject;(void)env; + + return ctx_clone_l; + +} + +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1context_1randomize + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + + const unsigned char* seed = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + + (void)classObject; + + return secp256k1_context_randomize(ctx, seed); + +} + +SECP256K1_API void JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1destroy_1context + (JNIEnv* env, jclass classObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + + secp256k1_context_destroy(ctx); + + (void)classObject;(void)env; +} + +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1verify + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint siglen, jint publen) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + + unsigned char* data = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* sigdata = { (unsigned char*) (data + 32) }; + const unsigned char* pubdata = { (unsigned char*) (data + siglen + 32) }; + + secp256k1_ecdsa_signature sig; + secp256k1_pubkey pubkey; + + int ret = secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigdata, siglen); + + if( ret ) { + ret = secp256k1_ec_pubkey_parse(ctx, &pubkey, pubdata, publen); + + if( ret ) { + ret = secp256k1_ecdsa_verify(ctx, &sig, data, &pubkey); + } + } + + (void)classObject; + + return ret; +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1sign + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + unsigned char* data = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + unsigned char* secKey = (unsigned char*) (data + 32); + + jobjectArray retArray; + jbyteArray sigArray, intsByteArray; + unsigned char intsarray[2]; + + secp256k1_ecdsa_signature sig[72]; + + int ret = secp256k1_ecdsa_sign(ctx, sig, data, secKey, NULL, NULL ); + + unsigned char outputSer[72]; + size_t outputLen = 72; + + if( ret ) { + int ret2 = secp256k1_ecdsa_signature_serialize_der(ctx,outputSer, &outputLen, sig ); (void)ret2; + } + + intsarray[0] = outputLen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + sigArray = (*env)->NewByteArray(env, outputLen); + (*env)->SetByteArrayRegion(env, sigArray, 0, outputLen, (jbyte*)outputSer); + (*env)->SetObjectArrayElement(env, retArray, 0, sigArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} + +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ec_1seckey_1verify + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + unsigned char* secKey = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + + (void)classObject; + + return secp256k1_ec_seckey_verify(ctx, secKey); +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ec_1pubkey_1create + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + const unsigned char* secKey = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + + secp256k1_pubkey pubkey; + + jobjectArray retArray; + jbyteArray pubkeyArray, intsByteArray; + unsigned char intsarray[2]; + + int ret = secp256k1_ec_pubkey_create(ctx, &pubkey, secKey); + + unsigned char outputSer[65]; + size_t outputLen = 65; + + if( ret ) { + int ret2 = secp256k1_ec_pubkey_serialize(ctx,outputSer, &outputLen, &pubkey,SECP256K1_EC_UNCOMPRESSED );(void)ret2; + } + + intsarray[0] = outputLen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + pubkeyArray = (*env)->NewByteArray(env, outputLen); + (*env)->SetByteArrayRegion(env, pubkeyArray, 0, outputLen, (jbyte*)outputSer); + (*env)->SetObjectArrayElement(env, retArray, 0, pubkeyArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; + +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1privkey_1tweak_1add + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + unsigned char* privkey = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* tweak = (unsigned char*) (privkey + 32); + + jobjectArray retArray; + jbyteArray privArray, intsByteArray; + unsigned char intsarray[2]; + + int privkeylen = 32; + + int ret = secp256k1_ec_privkey_tweak_add(ctx, privkey, tweak); + + intsarray[0] = privkeylen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + privArray = (*env)->NewByteArray(env, privkeylen); + (*env)->SetByteArrayRegion(env, privArray, 0, privkeylen, (jbyte*)privkey); + (*env)->SetObjectArrayElement(env, retArray, 0, privArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1privkey_1tweak_1mul + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + unsigned char* privkey = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* tweak = (unsigned char*) (privkey + 32); + + jobjectArray retArray; + jbyteArray privArray, intsByteArray; + unsigned char intsarray[2]; + + int privkeylen = 32; + + int ret = secp256k1_ec_privkey_tweak_mul(ctx, privkey, tweak); + + intsarray[0] = privkeylen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + privArray = (*env)->NewByteArray(env, privkeylen); + (*env)->SetByteArrayRegion(env, privArray, 0, privkeylen, (jbyte*)privkey); + (*env)->SetObjectArrayElement(env, retArray, 0, privArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1pubkey_1tweak_1add + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; +/* secp256k1_pubkey* pubkey = (secp256k1_pubkey*) (*env)->GetDirectBufferAddress(env, byteBufferObject);*/ + unsigned char* pkey = (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* tweak = (unsigned char*) (pkey + publen); + + jobjectArray retArray; + jbyteArray pubArray, intsByteArray; + unsigned char intsarray[2]; + unsigned char outputSer[65]; + size_t outputLen = 65; + + secp256k1_pubkey pubkey; + int ret = secp256k1_ec_pubkey_parse(ctx, &pubkey, pkey, publen); + + if( ret ) { + ret = secp256k1_ec_pubkey_tweak_add(ctx, &pubkey, tweak); + } + + if( ret ) { + int ret2 = secp256k1_ec_pubkey_serialize(ctx,outputSer, &outputLen, &pubkey,SECP256K1_EC_UNCOMPRESSED );(void)ret2; + } + + intsarray[0] = outputLen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + pubArray = (*env)->NewByteArray(env, outputLen); + (*env)->SetByteArrayRegion(env, pubArray, 0, outputLen, (jbyte*)outputSer); + (*env)->SetObjectArrayElement(env, retArray, 0, pubArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1pubkey_1tweak_1mul + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + unsigned char* pkey = (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* tweak = (unsigned char*) (pkey + publen); + + jobjectArray retArray; + jbyteArray pubArray, intsByteArray; + unsigned char intsarray[2]; + unsigned char outputSer[65]; + size_t outputLen = 65; + + secp256k1_pubkey pubkey; + int ret = secp256k1_ec_pubkey_parse(ctx, &pubkey, pkey, publen); + + if ( ret ) { + ret = secp256k1_ec_pubkey_tweak_mul(ctx, &pubkey, tweak); + } + + if( ret ) { + int ret2 = secp256k1_ec_pubkey_serialize(ctx,outputSer, &outputLen, &pubkey,SECP256K1_EC_UNCOMPRESSED );(void)ret2; + } + + intsarray[0] = outputLen; + intsarray[1] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + pubArray = (*env)->NewByteArray(env, outputLen); + (*env)->SetByteArrayRegion(env, pubArray, 0, outputLen, (jbyte*)outputSer); + (*env)->SetObjectArrayElement(env, retArray, 0, pubArray); + + intsByteArray = (*env)->NewByteArray(env, 2); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 2, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} + +SECP256K1_API jlong JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1pubkey_1combine + (JNIEnv * env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint numkeys) +{ + (void)classObject;(void)env;(void)byteBufferObject;(void)ctx_l;(void)numkeys; + + return 0; +} + +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdh + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen) +{ + secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; + const unsigned char* secdata = (*env)->GetDirectBufferAddress(env, byteBufferObject); + const unsigned char* pubdata = (const unsigned char*) (secdata + 32); + + jobjectArray retArray; + jbyteArray outArray, intsByteArray; + unsigned char intsarray[1]; + secp256k1_pubkey pubkey; + unsigned char nonce_res[32]; + size_t outputLen = 32; + + int ret = secp256k1_ec_pubkey_parse(ctx, &pubkey, pubdata, publen); + + if (ret) { + ret = secp256k1_ecdh( + ctx, + nonce_res, + &pubkey, + secdata + ); + } + + intsarray[0] = ret; + + retArray = (*env)->NewObjectArray(env, 2, + (*env)->FindClass(env, "[B"), + (*env)->NewByteArray(env, 1)); + + outArray = (*env)->NewByteArray(env, outputLen); + (*env)->SetByteArrayRegion(env, outArray, 0, 32, (jbyte*)nonce_res); + (*env)->SetObjectArrayElement(env, retArray, 0, outArray); + + intsByteArray = (*env)->NewByteArray(env, 1); + (*env)->SetByteArrayRegion(env, intsByteArray, 0, 1, (jbyte*)intsarray); + (*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); + + (void)classObject; + + return retArray; +} diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.h new file mode 100644 index 000000000..fe613c9e9 --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.h @@ -0,0 +1,119 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +#include "include/secp256k1.h" +/* Header for class org_bitcoin_NativeSecp256k1 */ + +#ifndef _Included_org_bitcoin_NativeSecp256k1 +#define _Included_org_bitcoin_NativeSecp256k1 +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ctx_clone + * Signature: (J)J + */ +SECP256K1_API jlong JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ctx_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_context_randomize + * Signature: (Ljava/nio/ByteBuffer;J)I + */ +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1context_1randomize + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_privkey_tweak_add + * Signature: (Ljava/nio/ByteBuffer;J)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1privkey_1tweak_1add + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_privkey_tweak_mul + * Signature: (Ljava/nio/ByteBuffer;J)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1privkey_1tweak_1mul + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_pubkey_tweak_add + * Signature: (Ljava/nio/ByteBuffer;JI)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1pubkey_1tweak_1add + (JNIEnv *, jclass, jobject, jlong, jint); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_pubkey_tweak_mul + * Signature: (Ljava/nio/ByteBuffer;JI)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1pubkey_1tweak_1mul + (JNIEnv *, jclass, jobject, jlong, jint); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_destroy_context + * Signature: (J)V + */ +SECP256K1_API void JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1destroy_1context + (JNIEnv *, jclass, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ecdsa_verify + * Signature: (Ljava/nio/ByteBuffer;JII)I + */ +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1verify + (JNIEnv *, jclass, jobject, jlong, jint, jint); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ecdsa_sign + * Signature: (Ljava/nio/ByteBuffer;J)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1sign + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ec_seckey_verify + * Signature: (Ljava/nio/ByteBuffer;J)I + */ +SECP256K1_API jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ec_1seckey_1verify + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ec_pubkey_create + * Signature: (Ljava/nio/ByteBuffer;J)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ec_1pubkey_1create + (JNIEnv *, jclass, jobject, jlong); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ec_pubkey_parse + * Signature: (Ljava/nio/ByteBuffer;JI)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ec_1pubkey_1parse + (JNIEnv *, jclass, jobject, jlong, jint); + +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ecdh + * Signature: (Ljava/nio/ByteBuffer;JI)[[B + */ +SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdh + (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.c b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.c new file mode 100644 index 000000000..a52939e7e --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.c @@ -0,0 +1,15 @@ +#include +#include +#include "org_bitcoin_Secp256k1Context.h" +#include "include/secp256k1.h" + +SECP256K1_API jlong JNICALL Java_org_bitcoin_Secp256k1Context_secp256k1_1init_1context + (JNIEnv* env, jclass classObject) +{ + secp256k1_context *ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + + (void)classObject;(void)env; + + return (uintptr_t)ctx; +} + diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.h new file mode 100644 index 000000000..0d2bc84b7 --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_Secp256k1Context.h @@ -0,0 +1,22 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +#include "include/secp256k1.h" +/* Header for class org_bitcoin_Secp256k1Context */ + +#ifndef _Included_org_bitcoin_Secp256k1Context +#define _Included_org_bitcoin_Secp256k1Context +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_bitcoin_Secp256k1Context + * Method: secp256k1_init_context + * Signature: ()J + */ +SECP256K1_API jlong JNICALL Java_org_bitcoin_Secp256k1Context_secp256k1_1init_1context + (JNIEnv *, jclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/main_impl.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/main_impl.h new file mode 100644 index 000000000..9e30fb73d --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/main_impl.h @@ -0,0 +1,54 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_MODULE_ECDH_MAIN_ +#define _SECP256K1_MODULE_ECDH_MAIN_ + +#include "include/secp256k1_ecdh.h" +#include "ecmult_const_impl.h" + +int secp256k1_ecdh(const secp256k1_context* ctx, unsigned char *result, const secp256k1_pubkey *point, const unsigned char *scalar) { + int ret = 0; + int overflow = 0; + secp256k1_gej res; + secp256k1_ge pt; + secp256k1_scalar s; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(result != NULL); + ARG_CHECK(point != NULL); + ARG_CHECK(scalar != NULL); + + secp256k1_pubkey_load(ctx, &pt, point); + secp256k1_scalar_set_b32(&s, scalar, &overflow); + if (overflow || secp256k1_scalar_is_zero(&s)) { + ret = 0; + } else { + unsigned char x[32]; + unsigned char y[1]; + secp256k1_sha256_t sha; + + secp256k1_ecmult_const(&res, &pt, &s); + secp256k1_ge_set_gej(&pt, &res); + /* Compute a hash of the point in compressed form + * Note we cannot use secp256k1_eckey_pubkey_serialize here since it does not + * expect its output to be secret and has a timing sidechannel. */ + secp256k1_fe_normalize(&pt.x); + secp256k1_fe_normalize(&pt.y); + secp256k1_fe_get_b32(x, &pt.x); + y[0] = 0x02 | secp256k1_fe_is_odd(&pt.y); + + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, y, sizeof(y)); + secp256k1_sha256_write(&sha, x, sizeof(x)); + secp256k1_sha256_finalize(&sha, result); + ret = 1; + } + + secp256k1_scalar_clear(&s); + return ret; +} + +#endif diff --git a/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/tests_impl.h b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/tests_impl.h new file mode 100644 index 000000000..85a5d0a9a --- /dev/null +++ b/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/ecdh/tests_impl.h @@ -0,0 +1,105 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_MODULE_ECDH_TESTS_ +#define _SECP256K1_MODULE_ECDH_TESTS_ + +void test_ecdh_api(void) { + /* Setup context that just counts errors */ + secp256k1_context *tctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); + secp256k1_pubkey point; + unsigned char res[32]; + unsigned char s_one[32] = { 0 }; + int32_t ecount = 0; + s_one[31] = 1; + + secp256k1_context_set_error_callback(tctx, counting_illegal_callback_fn, &ecount); + secp256k1_context_set_illegal_callback(tctx, counting_illegal_callback_fn, &ecount); + CHECK(secp256k1_ec_pubkey_create(tctx, &point, s_one) == 1); + + /* Check all NULLs are detected */ + CHECK(secp256k1_ecdh(tctx, res, &point, s_one) == 1); + CHECK(ecount == 0); + CHECK(secp256k1_ecdh(tctx, NULL, &point, s_one) == 0); + CHECK(ecount == 1); + CHECK(secp256k1_ecdh(tctx, res, NULL, s_one) == 0); + CHECK(ecount == 2); + CHECK(secp256k1_ecdh(tctx, res, &point, NULL) == 0); + CHECK(ecount == 3); + CHECK(secp256k1_ecdh(tctx, res, &point, s_one) == 1); + CHECK(ecount == 3); + + /* Cleanup */ + secp256k1_context_destroy(tctx); +} + +void test_ecdh_generator_basepoint(void) { + unsigned char s_one[32] = { 0 }; + secp256k1_pubkey point[2]; + int i; + + s_one[31] = 1; + /* Check against pubkey creation when the basepoint is the generator */ + for (i = 0; i < 100; ++i) { + secp256k1_sha256_t sha; + unsigned char s_b32[32]; + unsigned char output_ecdh[32]; + unsigned char output_ser[32]; + unsigned char point_ser[33]; + size_t point_ser_len = sizeof(point_ser); + secp256k1_scalar s; + + random_scalar_order(&s); + secp256k1_scalar_get_b32(s_b32, &s); + + /* compute using ECDH function */ + CHECK(secp256k1_ec_pubkey_create(ctx, &point[0], s_one) == 1); + CHECK(secp256k1_ecdh(ctx, output_ecdh, &point[0], s_b32) == 1); + /* compute "explicitly" */ + CHECK(secp256k1_ec_pubkey_create(ctx, &point[1], s_b32) == 1); + CHECK(secp256k1_ec_pubkey_serialize(ctx, point_ser, &point_ser_len, &point[1], SECP256K1_EC_COMPRESSED) == 1); + CHECK(point_ser_len == sizeof(point_ser)); + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, point_ser, point_ser_len); + secp256k1_sha256_finalize(&sha, output_ser); + /* compare */ + CHECK(memcmp(output_ecdh, output_ser, sizeof(output_ser)) == 0); + } +} + +void test_bad_scalar(void) { + unsigned char s_zero[32] = { 0 }; + unsigned char s_overflow[32] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, + 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41 + }; + unsigned char s_rand[32] = { 0 }; + unsigned char output[32]; + secp256k1_scalar rand; + secp256k1_pubkey point; + + /* Create random point */ + random_scalar_order(&rand); + secp256k1_scalar_get_b32(s_rand, &rand); + CHECK(secp256k1_ec_pubkey_create(ctx, &point, s_rand) == 1); + + /* Try to multiply it by bad values */ + CHECK(secp256k1_ecdh(ctx, output, &point, s_zero) == 0); + CHECK(secp256k1_ecdh(ctx, output, &point, s_overflow) == 0); + /* ...and a good one */ + s_overflow[31] -= 1; + CHECK(secp256k1_ecdh(ctx, output, &point, s_overflow) == 1); +} + +void run_ecdh_tests(void) { + test_ecdh_api(); + test_ecdh_generator_basepoint(); + test_bad_scalar(); +} + +#endif diff --git a/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_regexp/sqlite3_mod_regexp.c b/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_regexp/sqlite3_mod_regexp.c new file mode 100644 index 000000000..d3ad149db --- /dev/null +++ b/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_regexp/sqlite3_mod_regexp.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +SQLITE_EXTENSION_INIT1 +static void regexp_func(sqlite3_context *context, int argc, sqlite3_value **argv) { + if (argc >= 2) { + const char *target = (const char *)sqlite3_value_text(argv[1]); + const char *pattern = (const char *)sqlite3_value_text(argv[0]); + const char* errstr = NULL; + int erroff = 0; + int vec[500]; + int n, rc; + pcre* re = pcre_compile(pattern, 0, &errstr, &erroff, NULL); + if (!re) { + sqlite3_result_error(context, errstr, 0); + return; + } + rc = pcre_exec(re, NULL, target, strlen(target), 0, 0, vec, 500); + if (rc <= 0) { + sqlite3_result_int(context, 0); + return; + } + sqlite3_result_int(context, 1); + } +} + +#ifdef _WIN32 +__declspec(dllexport) +#endif +int sqlite3_extension_init(sqlite3 *db, char **errmsg, const sqlite3_api_routines *api) { + SQLITE_EXTENSION_INIT2(api); + return sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8, (void*)db, regexp_func, NULL, NULL); +} diff --git a/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_vtable/picojson.h b/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_vtable/picojson.h new file mode 100644 index 000000000..21426470d --- /dev/null +++ b/vendor/github.com/mutecomm/go-sqlcipher/v4/_example/mod_vtable/picojson.h @@ -0,0 +1,1040 @@ +/* + * Copyright 2009-2010 Cybozu Labs, Inc. + * Copyright 2011 Kazuho Oku + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY CYBOZU LABS, INC. ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL CYBOZU LABS, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are + * those of the authors and should not be interpreted as representing official + * policies, either expressed or implied, of Cybozu Labs, Inc. + * + */ +#ifndef picojson_h +#define picojson_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER + #define SNPRINTF _snprintf_s + #pragma warning(push) + #pragma warning(disable : 4244) // conversion from int to char +#else + #define SNPRINTF snprintf +#endif + +namespace picojson { + + enum { + null_type, + boolean_type, + number_type, + string_type, + array_type, + object_type + }; + + struct null {}; + + class value { + public: + typedef std::vector array; + typedef std::map object; + union _storage { + bool boolean_; + double number_; + std::string* string_; + array* array_; + object* object_; + }; + protected: + int type_; + _storage u_; + public: + value(); + value(int type, bool); + explicit value(bool b); + explicit value(double n); + explicit value(const std::string& s); + explicit value(const array& a); + explicit value(const object& o); + explicit value(const char* s); + value(const char* s, size_t len); + ~value(); + value(const value& x); + value& operator=(const value& x); + void swap(value& x); + template bool is() const; + template const T& get() const; + template T& get(); + bool evaluate_as_boolean() const; + const value& get(size_t idx) const; + const value& get(const std::string& key) const; + bool contains(size_t idx) const; + bool contains(const std::string& key) const; + std::string to_str() const; + template void serialize(Iter os) const; + std::string serialize() const; + private: + template value(const T*); // intentionally defined to block implicit conversion of pointer to bool + }; + + typedef value::array array; + typedef value::object object; + + inline value::value() : type_(null_type) {} + + inline value::value(int type, bool) : type_(type) { + switch (type) { +#define INIT(p, v) case p##type: u_.p = v; break + INIT(boolean_, false); + INIT(number_, 0.0); + INIT(string_, new std::string()); + INIT(array_, new array()); + INIT(object_, new object()); +#undef INIT + default: break; + } + } + + inline value::value(bool b) : type_(boolean_type) { + u_.boolean_ = b; + } + + inline value::value(double n) : type_(number_type) { + u_.number_ = n; + } + + inline value::value(const std::string& s) : type_(string_type) { + u_.string_ = new std::string(s); + } + + inline value::value(const array& a) : type_(array_type) { + u_.array_ = new array(a); + } + + inline value::value(const object& o) : type_(object_type) { + u_.object_ = new object(o); + } + + inline value::value(const char* s) : type_(string_type) { + u_.string_ = new std::string(s); + } + + inline value::value(const char* s, size_t len) : type_(string_type) { + u_.string_ = new std::string(s, len); + } + + inline value::~value() { + switch (type_) { +#define DEINIT(p) case p##type: delete u_.p; break + DEINIT(string_); + DEINIT(array_); + DEINIT(object_); +#undef DEINIT + default: break; + } + } + + inline value::value(const value& x) : type_(x.type_) { + switch (type_) { +#define INIT(p, v) case p##type: u_.p = v; break + INIT(string_, new std::string(*x.u_.string_)); + INIT(array_, new array(*x.u_.array_)); + INIT(object_, new object(*x.u_.object_)); +#undef INIT + default: + u_ = x.u_; + break; + } + } + + inline value& value::operator=(const value& x) { + if (this != &x) { + this->~value(); + new (this) value(x); + } + return *this; + } + + inline void value::swap(value& x) { + std::swap(type_, x.type_); + std::swap(u_, x.u_); + } + +#define IS(ctype, jtype) \ + template <> inline bool value::is() const { \ + return type_ == jtype##_type; \ + } + IS(null, null) + IS(bool, boolean) + IS(int, number) + IS(double, number) + IS(std::string, string) + IS(array, array) + IS(object, object) +#undef IS + +#define GET(ctype, var) \ + template <> inline const ctype& value::get() const { \ + assert("type mismatch! call vis() before get()" \ + && is()); \ + return var; \ + } \ + template <> inline ctype& value::get() { \ + assert("type mismatch! call is() before get()" \ + && is()); \ + return var; \ + } + GET(bool, u_.boolean_) + GET(double, u_.number_) + GET(std::string, *u_.string_) + GET(array, *u_.array_) + GET(object, *u_.object_) +#undef GET + + inline bool value::evaluate_as_boolean() const { + switch (type_) { + case null_type: + return false; + case boolean_type: + return u_.boolean_; + case number_type: + return u_.number_ != 0; + case string_type: + return ! u_.string_->empty(); + default: + return true; + } + } + + inline const value& value::get(size_t idx) const { + static value s_null; + assert(is()); + return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null; + } + + inline const value& value::get(const std::string& key) const { + static value s_null; + assert(is()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end() ? i->second : s_null; + } + + inline bool value::contains(size_t idx) const { + assert(is()); + return idx < u_.array_->size(); + } + + inline bool value::contains(const std::string& key) const { + assert(is()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end(); + } + + inline std::string value::to_str() const { + switch (type_) { + case null_type: return "null"; + case boolean_type: return u_.boolean_ ? "true" : "false"; + case number_type: { + char buf[256]; + double tmp; + SNPRINTF(buf, sizeof(buf), fabs(u_.number_) < (1ULL << 53) && modf(u_.number_, &tmp) == 0 ? "%.f" : "%.17g", u_.number_); + return buf; + } + case string_type: return *u_.string_; + case array_type: return "array"; + case object_type: return "object"; + default: assert(0); +#ifdef _MSC_VER + __assume(0); +#endif + } + return std::string(); + } + + template void copy(const std::string& s, Iter oi) { + std::copy(s.begin(), s.end(), oi); + } + + template void serialize_str(const std::string& s, Iter oi) { + *oi++ = '"'; + for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) { + switch (*i) { +#define MAP(val, sym) case val: copy(sym, oi); break + MAP('"', "\\\""); + MAP('\\', "\\\\"); + MAP('/', "\\/"); + MAP('\b', "\\b"); + MAP('\f', "\\f"); + MAP('\n', "\\n"); + MAP('\r', "\\r"); + MAP('\t', "\\t"); +#undef MAP + default: + if ((unsigned char)*i < 0x20 || *i == 0x7f) { + char buf[7]; + SNPRINTF(buf, sizeof(buf), "\\u%04x", *i & 0xff); + copy(buf, buf + 6, oi); + } else { + *oi++ = *i; + } + break; + } + } + *oi++ = '"'; + } + + template void value::serialize(Iter oi) const { + switch (type_) { + case string_type: + serialize_str(*u_.string_, oi); + break; + case array_type: { + *oi++ = '['; + for (array::const_iterator i = u_.array_->begin(); + i != u_.array_->end(); + ++i) { + if (i != u_.array_->begin()) { + *oi++ = ','; + } + i->serialize(oi); + } + *oi++ = ']'; + break; + } + case object_type: { + *oi++ = '{'; + for (object::const_iterator i = u_.object_->begin(); + i != u_.object_->end(); + ++i) { + if (i != u_.object_->begin()) { + *oi++ = ','; + } + serialize_str(i->first, oi); + *oi++ = ':'; + i->second.serialize(oi); + } + *oi++ = '}'; + break; + } + default: + copy(to_str(), oi); + break; + } + } + + inline std::string value::serialize() const { + std::string s; + serialize(std::back_inserter(s)); + return s; + } + + template class input { + protected: + Iter cur_, end_; + int last_ch_; + bool ungot_; + int line_; + public: + input(const Iter& first, const Iter& last) : cur_(first), end_(last), last_ch_(-1), ungot_(false), line_(1) {} + int getc() { + if (ungot_) { + ungot_ = false; + return last_ch_; + } + if (cur_ == end_) { + last_ch_ = -1; + return -1; + } + if (last_ch_ == '\n') { + line_++; + } + last_ch_ = *cur_++ & 0xff; + return last_ch_; + } + void ungetc() { + if (last_ch_ != -1) { + assert(! ungot_); + ungot_ = true; + } + } + Iter cur() const { return cur_; } + int line() const { return line_; } + void skip_ws() { + while (1) { + int ch = getc(); + if (! (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r')) { + ungetc(); + break; + } + } + } + bool expect(int expect) { + skip_ws(); + if (getc() != expect) { + ungetc(); + return false; + } + return true; + } + bool match(const std::string& pattern) { + for (std::string::const_iterator pi(pattern.begin()); + pi != pattern.end(); + ++pi) { + if (getc() != *pi) { + ungetc(); + return false; + } + } + return true; + } + }; + + template inline int _parse_quadhex(input &in) { + int uni_ch = 0, hex; + for (int i = 0; i < 4; i++) { + if ((hex = in.getc()) == -1) { + return -1; + } + if ('0' <= hex && hex <= '9') { + hex -= '0'; + } else if ('A' <= hex && hex <= 'F') { + hex -= 'A' - 0xa; + } else if ('a' <= hex && hex <= 'f') { + hex -= 'a' - 0xa; + } else { + in.ungetc(); + return -1; + } + uni_ch = uni_ch * 16 + hex; + } + return uni_ch; + } + + template inline bool _parse_codepoint(String& out, input& in) { + int uni_ch; + if ((uni_ch = _parse_quadhex(in)) == -1) { + return false; + } + if (0xd800 <= uni_ch && uni_ch <= 0xdfff) { + if (0xdc00 <= uni_ch) { + // a second 16-bit of a surrogate pair appeared + return false; + } + // first 16-bit of surrogate pair, get the next one + if (in.getc() != '\\' || in.getc() != 'u') { + in.ungetc(); + return false; + } + int second = _parse_quadhex(in); + if (! (0xdc00 <= second && second <= 0xdfff)) { + return false; + } + uni_ch = ((uni_ch - 0xd800) << 10) | ((second - 0xdc00) & 0x3ff); + uni_ch += 0x10000; + } + if (uni_ch < 0x80) { + out.push_back(uni_ch); + } else { + if (uni_ch < 0x800) { + out.push_back(0xc0 | (uni_ch >> 6)); + } else { + if (uni_ch < 0x10000) { + out.push_back(0xe0 | (uni_ch >> 12)); + } else { + out.push_back(0xf0 | (uni_ch >> 18)); + out.push_back(0x80 | ((uni_ch >> 12) & 0x3f)); + } + out.push_back(0x80 | ((uni_ch >> 6) & 0x3f)); + } + out.push_back(0x80 | (uni_ch & 0x3f)); + } + return true; + } + + template inline bool _parse_string(String& out, input& in) { + while (1) { + int ch = in.getc(); + if (ch < ' ') { + in.ungetc(); + return false; + } else if (ch == '"') { + return true; + } else if (ch == '\\') { + if ((ch = in.getc()) == -1) { + return false; + } + switch (ch) { +#define MAP(sym, val) case sym: out.push_back(val); break + MAP('"', '\"'); + MAP('\\', '\\'); + MAP('/', '/'); + MAP('b', '\b'); + MAP('f', '\f'); + MAP('n', '\n'); + MAP('r', '\r'); + MAP('t', '\t'); +#undef MAP + case 'u': + if (! _parse_codepoint(out, in)) { + return false; + } + break; + default: + return false; + } + } else { + out.push_back(ch); + } + } + return false; + } + + template inline bool _parse_array(Context& ctx, input& in) { + if (! ctx.parse_array_start()) { + return false; + } + size_t idx = 0; + if (in.expect(']')) { + return ctx.parse_array_stop(idx); + } + do { + if (! ctx.parse_array_item(in, idx)) { + return false; + } + idx++; + } while (in.expect(',')); + return in.expect(']') && ctx.parse_array_stop(idx); + } + + template inline bool _parse_object(Context& ctx, input& in) { + if (! ctx.parse_object_start()) { + return false; + } + if (in.expect('}')) { + return true; + } + do { + std::string key; + if (! in.expect('"') + || ! _parse_string(key, in) + || ! in.expect(':')) { + return false; + } + if (! ctx.parse_object_item(in, key)) { + return false; + } + } while (in.expect(',')); + return in.expect('}'); + } + + template inline bool _parse_number(double& out, input& in) { + std::string num_str; + while (1) { + int ch = in.getc(); + if (('0' <= ch && ch <= '9') || ch == '+' || ch == '-' || ch == '.' + || ch == 'e' || ch == 'E') { + num_str.push_back(ch); + } else { + in.ungetc(); + break; + } + } + char* endp; + out = strtod(num_str.c_str(), &endp); + return endp == num_str.c_str() + num_str.size(); + } + + template inline bool _parse(Context& ctx, input& in) { + in.skip_ws(); + int ch = in.getc(); + switch (ch) { +#define IS(ch, text, op) case ch: \ + if (in.match(text) && op) { \ + return true; \ + } else { \ + return false; \ + } + IS('n', "ull", ctx.set_null()); + IS('f', "alse", ctx.set_bool(false)); + IS('t', "rue", ctx.set_bool(true)); +#undef IS + case '"': + return ctx.parse_string(in); + case '[': + return _parse_array(ctx, in); + case '{': + return _parse_object(ctx, in); + default: + if (('0' <= ch && ch <= '9') || ch == '-') { + in.ungetc(); + double f; + if (_parse_number(f, in)) { + ctx.set_number(f); + return true; + } else { + return false; + } + } + break; + } + in.ungetc(); + return false; + } + + class deny_parse_context { + public: + bool set_null() { return false; } + bool set_bool(bool) { return false; } + bool set_number(double) { return false; } + template bool parse_string(input&) { return false; } + bool parse_array_start() { return false; } + template bool parse_array_item(input&, size_t) { + return false; + } + bool parse_array_stop(size_t) { return false; } + bool parse_object_start() { return false; } + template bool parse_object_item(input&, const std::string&) { + return false; + } + }; + + class default_parse_context { + protected: + value* out_; + public: + default_parse_context(value* out) : out_(out) {} + bool set_null() { + *out_ = value(); + return true; + } + bool set_bool(bool b) { + *out_ = value(b); + return true; + } + bool set_number(double f) { + *out_ = value(f); + return true; + } + template bool parse_string(input& in) { + *out_ = value(string_type, false); + return _parse_string(out_->get(), in); + } + bool parse_array_start() { + *out_ = value(array_type, false); + return true; + } + template bool parse_array_item(input& in, size_t) { + array& a = out_->get(); + a.push_back(value()); + default_parse_context ctx(&a.back()); + return _parse(ctx, in); + } + bool parse_array_stop(size_t) { return true; } + bool parse_object_start() { + *out_ = value(object_type, false); + return true; + } + template bool parse_object_item(input& in, const std::string& key) { + object& o = out_->get(); + default_parse_context ctx(&o[key]); + return _parse(ctx, in); + } + private: + default_parse_context(const default_parse_context&); + default_parse_context& operator=(const default_parse_context&); + }; + + class null_parse_context { + public: + struct dummy_str { + void push_back(int) {} + }; + public: + null_parse_context() {} + bool set_null() { return true; } + bool set_bool(bool) { return true; } + bool set_number(double) { return true; } + template bool parse_string(input& in) { + dummy_str s; + return _parse_string(s, in); + } + bool parse_array_start() { return true; } + template bool parse_array_item(input& in, size_t) { + return _parse(*this, in); + } + bool parse_array_stop(size_t) { return true; } + bool parse_object_start() { return true; } + template bool parse_object_item(input& in, const std::string&) { + return _parse(*this, in); + } + private: + null_parse_context(const null_parse_context&); + null_parse_context& operator=(const null_parse_context&); + }; + + // obsolete, use the version below + template inline std::string parse(value& out, Iter& pos, const Iter& last) { + std::string err; + pos = parse(out, pos, last, &err); + return err; + } + + template inline Iter _parse(Context& ctx, const Iter& first, const Iter& last, std::string* err) { + input in(first, last); + if (! _parse(ctx, in) && err != NULL) { + char buf[64]; + SNPRINTF(buf, sizeof(buf), "syntax error at line %d near: ", in.line()); + *err = buf; + while (1) { + int ch = in.getc(); + if (ch == -1 || ch == '\n') { + break; + } else if (ch >= ' ') { + err->push_back(ch); + } + } + } + return in.cur(); + } + + template inline Iter parse(value& out, const Iter& first, const Iter& last, std::string* err) { + default_parse_context ctx(&out); + return _parse(ctx, first, last, err); + } + + inline std::string parse(value& out, std::istream& is) { + std::string err; + parse(out, std::istreambuf_iterator(is.rdbuf()), + std::istreambuf_iterator(), &err); + return err; + } + + template struct last_error_t { + static std::string s; + }; + template std::string last_error_t::s; + + inline void set_last_error(const std::string& s) { + last_error_t::s = s; + } + + inline const std::string& get_last_error() { + return last_error_t::s; + } + + inline bool operator==(const value& x, const value& y) { + if (x.is()) + return y.is(); +#define PICOJSON_CMP(type) \ + if (x.is()) \ + return y.is() && x.get() == y.get() + PICOJSON_CMP(bool); + PICOJSON_CMP(double); + PICOJSON_CMP(std::string); + PICOJSON_CMP(array); + PICOJSON_CMP(object); +#undef PICOJSON_CMP + assert(0); +#ifdef _MSC_VER + __assume(0); +#endif + return false; + } + + inline bool operator!=(const value& x, const value& y) { + return ! (x == y); + } +} + +namespace std { + template<> inline void swap(picojson::value& x, picojson::value& y) + { + x.swap(y); + } +} + +inline std::istream& operator>>(std::istream& is, picojson::value& x) +{ + picojson::set_last_error(std::string()); + std::string err = picojson::parse(x, is); + if (! err.empty()) { + picojson::set_last_error(err); + is.setstate(std::ios::failbit); + } + return is; +} + +inline std::ostream& operator<<(std::ostream& os, const picojson::value& x) +{ + x.serialize(std::ostream_iterator(os)); + return os; +} +#ifdef _MSC_VER + #pragma warning(pop) +#endif + +#endif +#ifdef TEST_PICOJSON +#ifdef _MSC_VER + #pragma warning(disable : 4127) // conditional expression is constant +#endif + +using namespace std; + +static void plan(int num) +{ + printf("1..%d\n", num); +} + +static bool success = true; + +static void ok(bool b, const char* name = "") +{ + static int n = 1; + if (! b) + success = false; + printf("%s %d - %s\n", b ? "ok" : "ng", n++, name); +} + +template void is(const T& x, const T& y, const char* name = "") +{ + if (x == y) { + ok(true, name); + } else { + ok(false, name); + } +} + +#include +#include +#include +#include + +int main(void) +{ + plan(85); + + // constructors +#define TEST(expr, expected) \ + is(picojson::value expr .serialize(), string(expected), "picojson::value" #expr) + + TEST( (true), "true"); + TEST( (false), "false"); + TEST( (42.0), "42"); + TEST( (string("hello")), "\"hello\""); + TEST( ("hello"), "\"hello\""); + TEST( ("hello", 4), "\"hell\""); + + { + double a = 1; + for (int i = 0; i < 1024; i++) { + picojson::value vi(a); + std::stringstream ss; + ss << vi; + picojson::value vo; + ss >> vo; + double b = vo.get(); + if ((i < 53 && a != b) || fabs(a - b) / b > 1e-8) { + printf("ng i=%d a=%.18e b=%.18e\n", i, a, b); + } + a *= 2; + } + } + +#undef TEST + +#define TEST(in, type, cmp, serialize_test) { \ + picojson::value v; \ + const char* s = in; \ + string err = picojson::parse(v, s, s + strlen(s)); \ + ok(err.empty(), in " no error"); \ + ok(v.is(), in " check type"); \ + is(v.get(), cmp, in " correct output"); \ + is(*s, '\0', in " read to eof"); \ + if (serialize_test) { \ + is(v.serialize(), string(in), in " serialize"); \ + } \ + } + TEST("false", bool, false, true); + TEST("true", bool, true, true); + TEST("90.5", double, 90.5, false); + TEST("1.7976931348623157e+308", double, DBL_MAX, false); + TEST("\"hello\"", string, string("hello"), true); + TEST("\"\\\"\\\\\\/\\b\\f\\n\\r\\t\"", string, string("\"\\/\b\f\n\r\t"), + true); + TEST("\"\\u0061\\u30af\\u30ea\\u30b9\"", string, + string("a\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xb9"), false); + TEST("\"\\ud840\\udc0b\"", string, string("\xf0\xa0\x80\x8b"), false); +#undef TEST + +#define TEST(type, expr) { \ + picojson::value v; \ + const char *s = expr; \ + string err = picojson::parse(v, s, s + strlen(s)); \ + ok(err.empty(), "empty " #type " no error"); \ + ok(v.is(), "empty " #type " check type"); \ + ok(v.get().empty(), "check " #type " array size"); \ + } + TEST(array, "[]"); + TEST(object, "{}"); +#undef TEST + + { + picojson::value v; + const char *s = "[1,true,\"hello\"]"; + string err = picojson::parse(v, s, s + strlen(s)); + ok(err.empty(), "array no error"); + ok(v.is(), "array check type"); + is(v.get().size(), size_t(3), "check array size"); + ok(v.contains(0), "check contains array[0]"); + ok(v.get(0).is(), "check array[0] type"); + is(v.get(0).get(), 1.0, "check array[0] value"); + ok(v.contains(1), "check contains array[1]"); + ok(v.get(1).is(), "check array[1] type"); + ok(v.get(1).get(), "check array[1] value"); + ok(v.contains(2), "check contains array[2]"); + ok(v.get(2).is(), "check array[2] type"); + is(v.get(2).get(), string("hello"), "check array[2] value"); + ok(!v.contains(3), "check not contains array[3]"); + } + + { + picojson::value v; + const char *s = "{ \"a\": true }"; + string err = picojson::parse(v, s, s + strlen(s)); + ok(err.empty(), "object no error"); + ok(v.is(), "object check type"); + is(v.get().size(), size_t(1), "check object size"); + ok(v.contains("a"), "check contains property"); + ok(v.get("a").is(), "check bool property exists"); + is(v.get("a").get(), true, "check bool property value"); + is(v.serialize(), string("{\"a\":true}"), "serialize object"); + ok(!v.contains("z"), "check not contains property"); + } + +#define TEST(json, msg) do { \ + picojson::value v; \ + const char *s = json; \ + string err = picojson::parse(v, s, s + strlen(s)); \ + is(err, string("syntax error at line " msg), msg); \ + } while (0) + TEST("falsoa", "1 near: oa"); + TEST("{]", "1 near: ]"); + TEST("\n\bbell", "2 near: bell"); + TEST("\"abc\nd\"", "1 near: "); +#undef TEST + + { + picojson::value v1, v2; + const char *s; + string err; + s = "{ \"b\": true, \"a\": [1,2,\"three\"], \"d\": 2 }"; + err = picojson::parse(v1, s, s + strlen(s)); + s = "{ \"d\": 2.0, \"b\": true, \"a\": [1,2,\"three\"] }"; + err = picojson::parse(v2, s, s + strlen(s)); + ok((v1 == v2), "check == operator in deep comparison"); + } + + { + picojson::value v1, v2; + const char *s; + string err; + s = "{ \"b\": true, \"a\": [1,2,\"three\"], \"d\": 2 }"; + err = picojson::parse(v1, s, s + strlen(s)); + s = "{ \"d\": 2.0, \"a\": [1,\"three\"], \"b\": true }"; + err = picojson::parse(v2, s, s + strlen(s)); + ok((v1 != v2), "check != operator for array in deep comparison"); + } + + { + picojson::value v1, v2; + const char *s; + string err; + s = "{ \"b\": true, \"a\": [1,2,\"three\"], \"d\": 2 }"; + err = picojson::parse(v1, s, s + strlen(s)); + s = "{ \"d\": 2.0, \"a\": [1,2,\"three\"], \"b\": false }"; + err = picojson::parse(v2, s, s + strlen(s)); + ok((v1 != v2), "check != operator for object in deep comparison"); + } + + { + picojson::value v1, v2; + const char *s; + string err; + s = "{ \"b\": true, \"a\": [1,2,\"three\"], \"d\": 2 }"; + err = picojson::parse(v1, s, s + strlen(s)); + picojson::object& o = v1.get(); + o.erase("b"); + picojson::array& a = o["a"].get(); + picojson::array::iterator i; + i = std::remove(a.begin(), a.end(), picojson::value(std::string("three"))); + a.erase(i, a.end()); + s = "{ \"a\": [1,2], \"d\": 2 }"; + err = picojson::parse(v2, s, s + strlen(s)); + ok((v1 == v2), "check erase()"); + } + + ok(picojson::value(3.0).serialize() == "3", + "integral number should be serialized as a integer"); + + { + const char* s = "{ \"a\": [1,2], \"d\": 2 }"; + picojson::null_parse_context ctx; + string err; + picojson::_parse(ctx, s, s + strlen(s), &err); + ok(err.empty(), "null_parse_context"); + } + + { + picojson::value v1, v2; + v1 = picojson::value(true); + swap(v1, v2); + ok(v1.is(), "swap (null)"); + ok(v2.get() == true, "swap (bool)"); + + v1 = picojson::value("a"); + v2 = picojson::value(1.0); + swap(v1, v2); + ok(v1.get() == 1.0, "swap (dobule)"); + ok(v2.get() == "a", "swap (string)"); + + v1 = picojson::value(picojson::object()); + v2 = picojson::value(picojson::array()); + swap(v1, v2); + ok(v1.is(), "swap (array)"); + ok(v2.is(), "swap (object)"); + } + + return success ? 0 : 1; +} + +#endif diff --git a/vendor/modernc.org/libc/freebsd/mblocal.h b/vendor/modernc.org/libc/freebsd/mblocal.h new file mode 100644 index 000000000..a494b2b65 --- /dev/null +++ b/vendor/modernc.org/libc/freebsd/mblocal.h @@ -0,0 +1,122 @@ +// +build ingore + +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright 2013 Garrett D'Amore + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2004 Tim J. Robbins. + * All rights reserved. + * + * Copyright (c) 2011 The FreeBSD Foundation + * All rights reserved. + * Portions of this software were developed by David Chisnall + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MBLOCAL_H_ +#define _MBLOCAL_H_ + +#include +#include "xlocale_private.h" + +#define SS2 0x008e +#define SS3 0x008f + +/* + * Conversion function pointers for current encoding. + */ +struct xlocale_ctype { + struct xlocale_component header; + _RuneLocale *runes; + size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict, + size_t, mbstate_t * __restrict); + int (*__mbsinit)(const mbstate_t *); + size_t (*__mbsnrtowcs)(wchar_t * __restrict, const char ** __restrict, + size_t, size_t, mbstate_t * __restrict); + size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict); + size_t (*__wcsnrtombs)(char * __restrict, const wchar_t ** __restrict, + size_t, size_t, mbstate_t * __restrict); + int __mb_cur_max; + int __mb_sb_limit; + /** Persistent state used by mblen() calls. */ + __mbstate_t mblen; + /** Persistent state used by mbrlen() calls. */ + __mbstate_t mbrlen; + /** Persistent state used by mbrtoc16() calls. */ + __mbstate_t mbrtoc16; + /** Persistent state used by mbrtoc32() calls. */ + __mbstate_t mbrtoc32; + /** Persistent state used by mbrtowc() calls. */ + __mbstate_t mbrtowc; + /** Persistent state used by mbsnrtowcs() calls. */ + __mbstate_t mbsnrtowcs; + /** Persistent state used by mbsrtowcs() calls. */ + __mbstate_t mbsrtowcs; + /** Persistent state used by mbtowc() calls. */ + __mbstate_t mbtowc; + /** Persistent state used by c16rtomb() calls. */ + __mbstate_t c16rtomb; + /** Persistent state used by c32rtomb() calls. */ + __mbstate_t c32rtomb; + /** Persistent state used by wcrtomb() calls. */ + __mbstate_t wcrtomb; + /** Persistent state used by wcsnrtombs() calls. */ + __mbstate_t wcsnrtombs; + /** Persistent state used by wcsrtombs() calls. */ + __mbstate_t wcsrtombs; + /** Persistent state used by wctomb() calls. */ + __mbstate_t wctomb; +}; +#define XLOCALE_CTYPE(x) ((struct xlocale_ctype*)(x)->components[XLC_CTYPE]) +extern struct xlocale_ctype __xlocale_global_ctype; + +/* + * Rune initialization function prototypes. + */ +int _none_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _UTF8_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _EUC_CN_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _EUC_JP_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _EUC_KR_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _EUC_TW_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _GB18030_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _GB2312_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _GBK_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _BIG5_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _MSKanji_init(struct xlocale_ctype *, _RuneLocale *) __hidden; +int _ascii_init(struct xlocale_ctype *, _RuneLocale *) __hidden; + +typedef size_t (*mbrtowc_pfn_t)(wchar_t * __restrict, + const char * __restrict, size_t, mbstate_t * __restrict); +typedef size_t (*wcrtomb_pfn_t)(char * __restrict, wchar_t, + mbstate_t * __restrict); +size_t __mbsnrtowcs_std(wchar_t * __restrict, const char ** __restrict, + size_t, size_t, mbstate_t * __restrict, mbrtowc_pfn_t); +size_t __wcsnrtombs_std(char * __restrict, const wchar_t ** __restrict, + size_t, size_t, mbstate_t * __restrict, wcrtomb_pfn_t); + +#endif /* _MBLOCAL_H_ */ diff --git a/vendor/modernc.org/libc/freebsd/setlocale.h b/vendor/modernc.org/libc/freebsd/setlocale.h new file mode 100644 index 000000000..70c6ca4f5 --- /dev/null +++ b/vendor/modernc.org/libc/freebsd/setlocale.h @@ -0,0 +1,13 @@ + +#ifndef _SETLOCALE_H_ +#define _SETLOCALE_H_ + +#define ENCODING_LEN 31 +#define CATEGORY_LEN 11 + +extern char *_PathLocale; + +int __detect_path_locale(void); +int __wrap_setrunelocale(const char *); + +#endif /* !_SETLOCALE_H_ */ diff --git a/vendor/modernc.org/libc/freebsd/table.c b/vendor/modernc.org/libc/freebsd/table.c new file mode 100644 index 000000000..36a1f1ba7 --- /dev/null +++ b/vendor/modernc.org/libc/freebsd/table.c @@ -0,0 +1,267 @@ +// +build ingore + +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Copyright (c) 2011 The FreeBSD Foundation + * All rights reserved. + * Portions of this software were developed by David Chisnall + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)table.c 8.1 (Berkeley) 6/27/93"; +#endif /* LIBC_SCCS and not lint */ +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include "mblocal.h" + +const _RuneLocale _DefaultRuneLocale = { + _RUNE_MAGIC_1, + "NONE", + NULL, + NULL, + 0xFFFD, + + { /*00*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + /*08*/ _CTYPE_C, + _CTYPE_C|_CTYPE_S|_CTYPE_B, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C, + _CTYPE_C, + /*10*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + /*18*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + /*20*/ _CTYPE_S|_CTYPE_B|_CTYPE_R, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + /*28*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + /*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|0, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|1, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|2, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|3, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|4, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|5, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|6, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|7, + /*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|8, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|9, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + /*40*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*48*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*50*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*58*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + /*60*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*68*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*70*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + /*78*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_C, + }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + }, +}; + +#undef _CurrentRuneLocale +const _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale; + +_RuneLocale * +__runes_for_locale(locale_t locale, int *mb_sb_limit) +{ + FIX_LOCALE(locale); + struct xlocale_ctype *c = XLOCALE_CTYPE(locale); + *mb_sb_limit = c->__mb_sb_limit; + return c->runes; +} diff --git a/vendor/modernc.org/libc/freebsd/table.cpp.c b/vendor/modernc.org/libc/freebsd/table.cpp.c new file mode 100644 index 000000000..38e1e4dcd --- /dev/null +++ b/vendor/modernc.org/libc/freebsd/table.cpp.c @@ -0,0 +1,4101 @@ +// +build ingore + +// # @(#)COPYRIGHT 8.2 (Berkeley) 3/21/94 +// +// The compilation of software known as FreeBSD is distributed under the +// following terms: +// +// Copyright (c) 1992-2021 The FreeBSD Project. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +// SUCH DAMAGE. +// +// The 4.4BSD and 4.4BSD-Lite software is distributed under the following +// terms: +// +// All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite +// Releases is copyrighted by The Regents of the University of California. +// +// Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +// The Regents of the University of California. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. All advertising materials mentioning features or use of this software +// must display the following acknowledgement: +// This product includes software developed by the University of +// California, Berkeley and its contributors. +// 4. Neither the name of the University nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +// SUCH DAMAGE. +// +// The Institute of Electrical and Electronics Engineers and the American +// National Standards Committee X3, on Information Processing Systems have +// given us permission to reprint portions of their documentation. +// +// In the following statement, the phrase ``this text'' refers to portions +// of the system documentation. +// +// Portions of this text are reprinted and reproduced in electronic form in +// the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE +// Standard Portable Operating System Interface for Computer Environments +// (POSIX), copyright C 1988 by the Institute of Electrical and Electronics +// Engineers, Inc. In the event of any discrepancy between these versions +// and the original IEEE Standard, the original IEEE Standard is the referee +// document. +// +// In the following statement, the phrase ``This material'' refers to portions +// of the system documentation. +// +// This material is reproduced with permission from American National +// Standards Committee X3, on Information Processing Systems. Computer and +// Business Equipment Manufacturers Association (CBEMA), 311 First St., NW, +// Suite 500, Washington, DC 20001-2178. The developmental work of +// Programming Language C was completed by the X3J11 Technical Committee. +// +// The views and conclusions contained in the software and documentation are +// those of the authors and should not be interpreted as representing official +// policies, either expressed or implied, of the Regents of the University +// of California. +// +// +// NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD") +// source has been updated. The copyright addendum may be found at +// ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is +// included below. +// +// July 22, 1999 +// +// To All Licensees, Distributors of Any Version of BSD: +// +// As you know, certain of the Berkeley Software Distribution ("BSD") source +// code files require that further distributions of products containing all or +// portions of the software, acknowledge within their advertising materials +// that such products contain software developed by UC Berkeley and its +// contributors. +// +// Specifically, the provision reads: +// +// " * 3. All advertising materials mentioning features or use of this software +// * must display the following acknowledgement: +// * This product includes software developed by the University of +// * California, Berkeley and its contributors." +// +// Effective immediately, licensees and distributors are no longer required to +// include the acknowledgement within advertising materials. Accordingly, the +// foregoing paragraph of those BSD Unix files containing it is hereby deleted +// in its entirety. +// +// William Hoskins +// Director, Office of Technology Licensing +// University of California, Berkeley + +// Preprocessed and manualy edited https://github.com/freebsd/freebsd-src/blob/main/lib/libc/locale/table.c + + +/// __asm__(".ident\t\"" +/// "$FreeBSD$" +/// "\""); +/// +/// typedef signed char __int8_t; +/// typedef unsigned char __uint8_t; +/// typedef short __int16_t; +/// typedef unsigned short __uint16_t; +/// typedef int __int32_t; +/// typedef unsigned int __uint32_t; +/// +/// typedef long __int64_t; +typedef unsigned long __uint64_t; +/// +/// typedef __int32_t __clock_t; +/// typedef __int64_t __critical_t; +/// +/// typedef double __double_t; +/// typedef float __float_t; +/// +/// typedef __int64_t __intfptr_t; +/// typedef __int64_t __intptr_t; +/// +/// typedef __int64_t __intmax_t; +/// typedef __int32_t __int_fast8_t; +/// typedef __int32_t __int_fast16_t; +/// typedef __int32_t __int_fast32_t; +/// typedef __int64_t __int_fast64_t; +/// typedef __int8_t __int_least8_t; +/// typedef __int16_t __int_least16_t; +/// typedef __int32_t __int_least32_t; +/// typedef __int64_t __int_least64_t; +/// +/// typedef __int64_t __ptrdiff_t; +/// typedef __int64_t __register_t; +/// typedef __int64_t __segsz_t; +typedef __uint64_t __size_t; +/// typedef __int64_t __ssize_t; +/// typedef __int64_t __time_t; +/// typedef __uint64_t __uintfptr_t; +/// typedef __uint64_t __uintptr_t; +/// +/// typedef __uint64_t __uintmax_t; +/// typedef __uint32_t __uint_fast8_t; +/// typedef __uint32_t __uint_fast16_t; +/// typedef __uint32_t __uint_fast32_t; +/// typedef __uint64_t __uint_fast64_t; +/// typedef __uint8_t __uint_least8_t; +/// typedef __uint16_t __uint_least16_t; +/// typedef __uint32_t __uint_least32_t; +/// typedef __uint64_t __uint_least64_t; +/// +/// typedef __uint64_t __u_register_t; +/// typedef __uint64_t __vm_offset_t; +/// typedef __uint64_t __vm_paddr_t; +/// typedef __uint64_t __vm_size_t; +/// +/// typedef int ___wchar_t; +/// +/// typedef __int32_t __blksize_t; +/// typedef __int64_t __blkcnt_t; +/// typedef __int32_t __clockid_t; +/// typedef __uint32_t __fflags_t; +/// typedef __uint64_t __fsblkcnt_t; +/// typedef __uint64_t __fsfilcnt_t; +/// typedef __uint32_t __gid_t; +/// typedef __int64_t __id_t; +/// typedef __uint64_t __ino_t; +/// typedef long __key_t; +/// typedef __int32_t __lwpid_t; +/// typedef __uint16_t __mode_t; +/// typedef int __accmode_t; +/// typedef int __nl_item; +/// typedef __uint64_t __nlink_t; +/// typedef __int64_t __off_t; +/// typedef __int64_t __off64_t; +/// typedef __int32_t __pid_t; +/// typedef __int64_t __rlim_t; +/// +/// +/// typedef __uint8_t __sa_family_t; +/// typedef __uint32_t __socklen_t; +/// typedef long __suseconds_t; +/// typedef struct __timer *__timer_t; +/// typedef struct __mq *__mqd_t; +/// typedef __uint32_t __uid_t; +/// typedef unsigned int __useconds_t; +/// typedef int __cpuwhich_t; +/// typedef int __cpulevel_t; +/// typedef int __cpusetid_t; +/// typedef __int64_t __daddr_t; +/// +typedef int __ct_rune_t; +typedef __ct_rune_t __rune_t; +/// typedef __ct_rune_t __wint_t; +/// +/// +/// +/// typedef __uint_least16_t __char16_t; +/// typedef __uint_least32_t __char32_t; +/// +/// +/// +/// +/// +/// +/// +/// typedef struct { +/// long long __max_align1 __attribute__((__aligned__(_Alignof(long long)))); +/// +/// long double __max_align2 __attribute__((__aligned__(_Alignof(long double)))); +/// +/// } __max_align_t; +/// +/// typedef __uint64_t __dev_t; +/// +/// typedef __uint32_t __fixpt_t; +/// +/// +/// +/// +/// +/// typedef union { +/// char __mbstate8[128]; +/// __int64_t _mbstateL; +/// } __mbstate_t; +/// +/// typedef __uintmax_t __rman_res_t; +/// +/// +/// +/// +/// +/// +/// typedef __builtin_va_list __va_list; +/// +/// +/// +/// +/// +/// +/// typedef __va_list __gnuc_va_list; +/// +/// +/// +/// +/// unsigned long ___runetype(__ct_rune_t) __attribute__((__pure__)); +/// __ct_rune_t ___tolower(__ct_rune_t) __attribute__((__pure__)); +/// __ct_rune_t ___toupper(__ct_rune_t) __attribute__((__pure__)); +/// +/// +/// extern int __mb_sb_limit; + +typedef struct { + __rune_t __min; + __rune_t __max; + __rune_t __map; + unsigned long *__types; +} _RuneEntry; + +typedef struct { + int __nranges; + _RuneEntry *__ranges; +} _RuneRange; + +typedef struct { + char __magic[8]; + char __encoding[32]; + + __rune_t (*__sgetrune)(const char *, __size_t, char const **); + int (*__sputrune)(__rune_t, char *, __size_t, char **); + __rune_t __invalid_rune; + + unsigned long __runetype[(1 <<8 )]; + __rune_t __maplower[(1 <<8 )]; + __rune_t __mapupper[(1 <<8 )]; + + + + + + + _RuneRange __runetype_ext; + _RuneRange __maplower_ext; + _RuneRange __mapupper_ext; + + void *__variable; + int __variable_len; +} _RuneLocale; +/// +/// extern const _RuneLocale _DefaultRuneLocale; +/// extern const _RuneLocale *_CurrentRuneLocale; +/// +/// +/// +/// extern _Thread_local const _RuneLocale *_ThreadRuneLocale; +/// static __inline const _RuneLocale *__getCurrentRuneLocale(void) +/// { +/// +/// if (_ThreadRuneLocale) +/// return _ThreadRuneLocale; +/// return _CurrentRuneLocale; +/// } +/// +/// +/// +/// +/// +/// static __inline int +/// __maskrune(__ct_rune_t _c, unsigned long _f) +/// { +/// return ((_c < 0 || _c >= (1 <<8 )) ? ___runetype(_c) : +/// (__getCurrentRuneLocale())->__runetype[_c]) & _f; +/// } +/// +/// static __inline int +/// __sbmaskrune(__ct_rune_t _c, unsigned long _f) +/// { +/// return (_c < 0 || _c >= __mb_sb_limit) ? 0 : +/// (__getCurrentRuneLocale())->__runetype[_c] & _f; +/// } +/// +/// static __inline int +/// __istype(__ct_rune_t _c, unsigned long _f) +/// { +/// return (!!__maskrune(_c, _f)); +/// } +/// +/// static __inline int +/// __sbistype(__ct_rune_t _c, unsigned long _f) +/// { +/// return (!!__sbmaskrune(_c, _f)); +/// } +/// +/// static __inline int +/// __isctype(__ct_rune_t _c, unsigned long _f) +/// { +/// return (_c < 0 || _c >= 128) ? 0 : +/// !!(_DefaultRuneLocale.__runetype[_c] & _f); +/// } +/// +/// static __inline __ct_rune_t +/// __toupper(__ct_rune_t _c) +/// { +/// return (_c < 0 || _c >= (1 <<8 )) ? ___toupper(_c) : +/// (__getCurrentRuneLocale())->__mapupper[_c]; +/// } +/// +/// static __inline __ct_rune_t +/// __sbtoupper(__ct_rune_t _c) +/// { +/// return (_c < 0 || _c >= __mb_sb_limit) ? _c : +/// (__getCurrentRuneLocale())->__mapupper[_c]; +/// } +/// +/// static __inline __ct_rune_t +/// __tolower(__ct_rune_t _c) +/// { +/// return (_c < 0 || _c >= (1 <<8 )) ? ___tolower(_c) : +/// (__getCurrentRuneLocale())->__maplower[_c]; +/// } +/// +/// static __inline __ct_rune_t +/// __sbtolower(__ct_rune_t _c) +/// { +/// return (_c < 0 || _c >= __mb_sb_limit) ? _c : +/// (__getCurrentRuneLocale())->__maplower[_c]; +/// } +/// +/// static __inline int +/// __wcwidth(__ct_rune_t _c) +/// { +/// unsigned int _x; +/// +/// if (_c == 0) +/// return (0); +/// _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L); +/// if ((_x & 0xe0000000L) != 0) +/// return ((_x & 0xe0000000L) >> 30); +/// return ((_x & 0x00040000L) != 0 ? 1 : -1); +/// } +/// +/// +/// +/// int isalnum(int); +/// int isalpha(int); +/// int iscntrl(int); +/// int isdigit(int); +/// int isgraph(int); +/// int islower(int); +/// int isprint(int); +/// int ispunct(int); +/// int isspace(int); +/// int isupper(int); +/// int isxdigit(int); +/// int tolower(int); +/// int toupper(int); +/// +/// +/// int isascii(int); +/// int toascii(int); +/// +/// +/// +/// int isblank(int); +/// +/// +/// +/// int digittoint(int); +/// int ishexnumber(int); +/// int isideogram(int); +/// int isnumber(int); +/// int isphonogram(int); +/// int isrune(int); +/// int isspecial(int); +/// +/// +/// +/// +/// +/// typedef struct _xlocale *locale_t; +/// +/// +/// +/// +/// unsigned long ___runetype_l(__ct_rune_t, locale_t) __attribute__((__pure__)); +/// __ct_rune_t ___tolower_l(__ct_rune_t, locale_t) __attribute__((__pure__)); +/// __ct_rune_t ___toupper_l(__ct_rune_t, locale_t) __attribute__((__pure__)); +/// _RuneLocale *__runes_for_locale(locale_t, int*); +/// +/// inline int +/// __sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc); +/// inline int +/// __sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc); +/// +/// inline int +/// __sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc) +/// { +/// int __limit; +/// _RuneLocale *runes = __runes_for_locale(__loc, &__limit); +/// return (__c < 0 || __c >= __limit) ? 0 : +/// runes->__runetype[__c] & __f; +/// } +/// +/// inline int +/// __sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc) +/// { +/// return (!!__sbmaskrune_l(__c, __f, __loc)); +/// } +/// +/// +/// +/// +/// +/// +/// +/// inline int isalnum_l(int, locale_t); inline int isalnum_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000100L|0x00000400L|0x00400000L, __l); } +/// inline int isalpha_l(int, locale_t); inline int isalpha_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000100L, __l); } +/// inline int isblank_l(int, locale_t); inline int isblank_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00020000L, __l); } +/// inline int iscntrl_l(int, locale_t); inline int iscntrl_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000200L, __l); } +/// inline int isdigit_l(int, locale_t); inline int isdigit_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000400L, __l); } +/// inline int isgraph_l(int, locale_t); inline int isgraph_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000800L, __l); } +/// inline int ishexnumber_l(int, locale_t); inline int ishexnumber_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00010000L, __l); } +/// inline int isideogram_l(int, locale_t); inline int isideogram_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00080000L, __l); } +/// inline int islower_l(int, locale_t); inline int islower_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00001000L, __l); } +/// inline int isnumber_l(int, locale_t); inline int isnumber_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000400L|0x00400000L, __l); } +/// inline int isphonogram_l(int, locale_t); inline int isphonogram_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00200000L, __l); } +/// inline int isprint_l(int, locale_t); inline int isprint_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00040000L, __l); } +/// inline int ispunct_l(int, locale_t); inline int ispunct_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00002000L, __l); } +/// inline int isrune_l(int, locale_t); inline int isrune_l(int __c, locale_t __l) { return __sbistype_l(__c, 0xFFFFFF00L, __l); } +/// inline int isspace_l(int, locale_t); inline int isspace_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00004000L, __l); } +/// inline int isspecial_l(int, locale_t); inline int isspecial_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00100000L, __l); } +/// inline int isupper_l(int, locale_t); inline int isupper_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00008000L, __l); } +/// inline int isxdigit_l(int, locale_t); inline int isxdigit_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00010000L, __l); } +/// +/// inline int digittoint_l(int, locale_t); +/// inline int tolower_l(int, locale_t); +/// inline int toupper_l(int, locale_t); +/// +/// inline int digittoint_l(int __c, locale_t __l) +/// { return __sbmaskrune_l((__c), 0xFF, __l); } +/// +/// inline int tolower_l(int __c, locale_t __l) +/// { +/// int __limit; +/// _RuneLocale *__runes = __runes_for_locale(__l, &__limit); +/// return (__c < 0 || __c >= __limit) ? __c : +/// __runes->__maplower[__c]; +/// } +/// inline int toupper_l(int __c, locale_t __l) +/// { +/// int __limit; +/// _RuneLocale *__runes = __runes_for_locale(__l, &__limit); +/// return (__c < 0 || __c >= __limit) ? __c : +/// __runes->__mapupper[__c]; +/// } +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// typedef __mbstate_t mbstate_t; +/// +/// +/// +/// +/// typedef __size_t size_t; +/// +/// +/// +/// +/// +/// typedef __va_list va_list; +/// +/// +/// +/// +/// +/// +/// typedef ___wchar_t wchar_t; +/// +/// +/// +/// +/// +/// typedef __wint_t wint_t; +/// +/// typedef struct __sFILE FILE; +/// +/// struct tm; +/// +/// +/// wint_t btowc(int); +/// wint_t fgetwc(FILE *); +/// wchar_t * +/// fgetws(wchar_t * restrict, int, FILE * restrict); +/// wint_t fputwc(wchar_t, FILE *); +/// int fputws(const wchar_t * restrict, FILE * restrict); +/// int fwide(FILE *, int); +/// int fwprintf(FILE * restrict, const wchar_t * restrict, ...); +/// int fwscanf(FILE * restrict, const wchar_t * restrict, ...); +/// wint_t getwc(FILE *); +/// wint_t getwchar(void); +/// size_t mbrlen(const char * restrict, size_t, mbstate_t * restrict); +/// size_t mbrtowc(wchar_t * restrict, const char * restrict, size_t, +/// mbstate_t * restrict); +/// int mbsinit(const mbstate_t *); +/// size_t mbsrtowcs(wchar_t * restrict, const char ** restrict, size_t, +/// mbstate_t * restrict); +/// wint_t putwc(wchar_t, FILE *); +/// wint_t putwchar(wchar_t); +/// int swprintf(wchar_t * restrict, size_t n, const wchar_t * restrict, +/// ...); +/// int swscanf(const wchar_t * restrict, const wchar_t * restrict, ...); +/// wint_t ungetwc(wint_t, FILE *); +/// int vfwprintf(FILE * restrict, const wchar_t * restrict, +/// __va_list); +/// int vswprintf(wchar_t * restrict, size_t n, const wchar_t * restrict, +/// __va_list); +/// int vwprintf(const wchar_t * restrict, __va_list); +/// size_t wcrtomb(char * restrict, wchar_t, mbstate_t * restrict); +/// wchar_t *wcscat(wchar_t * restrict, const wchar_t * restrict); +/// wchar_t *wcschr(const wchar_t *, wchar_t) __attribute__((__pure__)); +/// int wcscmp(const wchar_t *, const wchar_t *) __attribute__((__pure__)); +/// int wcscoll(const wchar_t *, const wchar_t *); +/// wchar_t *wcscpy(wchar_t * restrict, const wchar_t * restrict); +/// size_t wcscspn(const wchar_t *, const wchar_t *) __attribute__((__pure__)); +/// size_t wcsftime(wchar_t * restrict, size_t, const wchar_t * restrict, +/// const struct tm * restrict); +/// size_t wcslen(const wchar_t *) __attribute__((__pure__)); +/// wchar_t *wcsncat(wchar_t * restrict, const wchar_t * restrict, +/// size_t); +/// int wcsncmp(const wchar_t *, const wchar_t *, size_t) __attribute__((__pure__)); +/// wchar_t *wcsncpy(wchar_t * restrict , const wchar_t * restrict, size_t); +/// wchar_t *wcspbrk(const wchar_t *, const wchar_t *) __attribute__((__pure__)); +/// wchar_t *wcsrchr(const wchar_t *, wchar_t) __attribute__((__pure__)); +/// size_t wcsrtombs(char * restrict, const wchar_t ** restrict, size_t, +/// mbstate_t * restrict); +/// size_t wcsspn(const wchar_t *, const wchar_t *) __attribute__((__pure__)); +/// wchar_t *wcsstr(const wchar_t * restrict, const wchar_t * restrict) +/// __attribute__((__pure__)); +/// size_t wcsxfrm(wchar_t * restrict, const wchar_t * restrict, size_t); +/// int wctob(wint_t); +/// double wcstod(const wchar_t * restrict, wchar_t ** restrict); +/// wchar_t *wcstok(wchar_t * restrict, const wchar_t * restrict, +/// wchar_t ** restrict); +/// long wcstol(const wchar_t * restrict, wchar_t ** restrict, int); +/// unsigned long +/// wcstoul(const wchar_t * restrict, wchar_t ** restrict, int); +/// wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) __attribute__((__pure__)); +/// int wmemcmp(const wchar_t *, const wchar_t *, size_t) __attribute__((__pure__)); +/// wchar_t *wmemcpy(wchar_t * restrict, const wchar_t * restrict, size_t); +/// wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); +/// wchar_t *wmemset(wchar_t *, wchar_t, size_t); +/// int wprintf(const wchar_t * restrict, ...); +/// int wscanf(const wchar_t * restrict, ...); +/// +/// +/// extern FILE *__stdinp; +/// extern FILE *__stdoutp; +/// extern FILE *__stderrp; +/// +/// int vfwscanf(FILE * restrict, const wchar_t * restrict, +/// __va_list); +/// int vswscanf(const wchar_t * restrict, const wchar_t * restrict, +/// __va_list); +/// int vwscanf(const wchar_t * restrict, __va_list); +/// float wcstof(const wchar_t * restrict, wchar_t ** restrict); +/// long double +/// wcstold(const wchar_t * restrict, wchar_t ** restrict); +/// +/// +/// long long +/// wcstoll(const wchar_t * restrict, wchar_t ** restrict, int); +/// +/// unsigned long long +/// wcstoull(const wchar_t * restrict, wchar_t ** restrict, int); +/// +/// +/// +/// +/// int wcswidth(const wchar_t *, size_t); +/// int wcwidth(wchar_t); +/// +/// +/// +/// +/// size_t mbsnrtowcs(wchar_t * restrict, const char ** restrict, size_t, +/// size_t, mbstate_t * restrict); +/// FILE *open_wmemstream(wchar_t **, size_t *); +/// wchar_t *wcpcpy(wchar_t * restrict, const wchar_t * restrict); +/// wchar_t *wcpncpy(wchar_t * restrict, const wchar_t * restrict, size_t); +/// wchar_t *wcsdup(const wchar_t *) __attribute__((__malloc__)); +/// int wcscasecmp(const wchar_t *, const wchar_t *); +/// int wcsncasecmp(const wchar_t *, const wchar_t *, size_t n); +/// size_t wcsnlen(const wchar_t *, size_t) __attribute__((__pure__)); +/// size_t wcsnrtombs(char * restrict, const wchar_t ** restrict, size_t, +/// size_t, mbstate_t * restrict); +/// +/// +/// +/// wchar_t *fgetwln(FILE * restrict, size_t * restrict); +/// size_t wcslcat(wchar_t *, const wchar_t *, size_t); +/// size_t wcslcpy(wchar_t *, const wchar_t *, size_t); +/// +/// +/// +/// +/// +/// int wcscasecmp_l(const wchar_t *, const wchar_t *, +/// locale_t); +/// int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, +/// locale_t); +/// int wcscoll_l(const wchar_t *, const wchar_t *, locale_t); +/// size_t wcsxfrm_l(wchar_t * restrict, +/// const wchar_t * restrict, size_t, locale_t); +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// struct lconv { +/// char *decimal_point; +/// char *thousands_sep; +/// char *grouping; +/// char *int_curr_symbol; +/// char *currency_symbol; +/// char *mon_decimal_point; +/// char *mon_thousands_sep; +/// char *mon_grouping; +/// char *positive_sign; +/// char *negative_sign; +/// char int_frac_digits; +/// char frac_digits; +/// char p_cs_precedes; +/// char p_sep_by_space; +/// char n_cs_precedes; +/// char n_sep_by_space; +/// char p_sign_posn; +/// char n_sign_posn; +/// char int_p_cs_precedes; +/// char int_n_cs_precedes; +/// char int_p_sep_by_space; +/// char int_n_sep_by_space; +/// char int_p_sign_posn; +/// char int_n_sign_posn; +/// }; +/// +/// +/// struct lconv *localeconv(void); +/// char *setlocale(int, const char *); +/// +/// +/// +/// +/// locale_t duplocale(locale_t base); +/// void freelocale(locale_t loc); +/// locale_t newlocale(int mask, const char *locale, locale_t base); +/// const char *querylocale(int mask, locale_t loc); +/// locale_t uselocale(locale_t loc); +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// wint_t btowc_l(int, locale_t); +/// wint_t fgetwc_l(FILE *, locale_t); +/// wchar_t *fgetws_l(wchar_t * restrict, int, FILE * restrict, +/// locale_t); +/// wint_t fputwc_l(wchar_t, FILE *, locale_t); +/// int fputws_l(const wchar_t * restrict, FILE * restrict, +/// locale_t); +/// int fwprintf_l(FILE * restrict, locale_t, +/// const wchar_t * restrict, ...); +/// int fwscanf_l(FILE * restrict, locale_t, +/// const wchar_t * restrict, ...); +/// wint_t getwc_l(FILE *, locale_t); +/// wint_t getwchar_l(locale_t); +/// size_t mbrlen_l(const char * restrict, size_t, +/// mbstate_t * restrict, locale_t); +/// size_t mbrtowc_l(wchar_t * restrict, +/// const char * restrict, size_t, +/// mbstate_t * restrict, locale_t); +/// int mbsinit_l(const mbstate_t *, locale_t); +/// size_t mbsrtowcs_l(wchar_t * restrict, +/// const char ** restrict, size_t, +/// mbstate_t * restrict, locale_t); +/// wint_t putwc_l(wchar_t, FILE *, locale_t); +/// wint_t putwchar_l(wchar_t, locale_t); +/// int swprintf_l(wchar_t * restrict, size_t n, locale_t, +/// const wchar_t * restrict, ...); +/// int swscanf_l(const wchar_t * restrict, locale_t, +/// const wchar_t * restrict, ...); +/// wint_t ungetwc_l(wint_t, FILE *, locale_t); +/// int vfwprintf_l(FILE * restrict, locale_t, +/// const wchar_t * restrict, __va_list); +/// int vswprintf_l(wchar_t * restrict, size_t n, locale_t, +/// const wchar_t * restrict, __va_list); +/// int vwprintf_l(locale_t, const wchar_t * restrict, +/// __va_list); +/// size_t wcrtomb_l(char * restrict, wchar_t, +/// mbstate_t * restrict, locale_t); +/// size_t wcsftime_l(wchar_t * restrict, size_t, +/// const wchar_t * restrict, +/// const struct tm * restrict, locale_t); +/// size_t wcsrtombs_l(char * restrict, +/// const wchar_t ** restrict, size_t, +/// mbstate_t * restrict, locale_t); +/// double wcstod_l(const wchar_t * restrict, +/// wchar_t ** restrict, locale_t); +/// long wcstol_l(const wchar_t * restrict, +/// wchar_t ** restrict, int, locale_t); +/// unsigned long wcstoul_l(const wchar_t * restrict, +/// wchar_t ** restrict, int, locale_t); +/// int wcswidth_l(const wchar_t *, size_t, locale_t); +/// int wctob_l(wint_t, locale_t); +/// int wcwidth_l(wchar_t, locale_t); +/// int wprintf_l(locale_t, const wchar_t * restrict, ...); +/// int wscanf_l(locale_t, const wchar_t * restrict, ...); +/// int vfwscanf_l(FILE * restrict, locale_t, +/// const wchar_t * restrict, __va_list); +/// int vswscanf_l(const wchar_t * restrict, locale_t, +/// const wchar_t *restrict, __va_list); +/// int vwscanf_l(locale_t, const wchar_t * restrict, +/// __va_list); +/// float wcstof_l(const wchar_t * restrict, +/// wchar_t ** restrict, locale_t); +/// long double wcstold_l(const wchar_t * restrict, +/// wchar_t ** restrict, locale_t); +/// long long wcstoll_l(const wchar_t * restrict, +/// wchar_t ** restrict, int, locale_t); +/// unsigned long long wcstoull_l(const wchar_t * restrict, +/// wchar_t ** restrict, int, locale_t); +/// size_t mbsnrtowcs_l(wchar_t * restrict, +/// const char ** restrict, size_t, size_t, +/// mbstate_t * restrict, locale_t); +/// size_t wcsnrtombs_l(char * restrict, +/// const wchar_t ** restrict, size_t, size_t, +/// mbstate_t * restrict, locale_t); +/// +/// +/// +/// +/// +/// struct lconv *localeconv_l(locale_t); +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// typedef __rune_t rune_t; +/// +/// typedef struct { +/// int quot; +/// int rem; +/// } div_t; +/// +/// typedef struct { +/// long quot; +/// long rem; +/// } ldiv_t; +/// +/// +/// +/// +/// +/// double atof_l(const char *, locale_t); +/// int atoi_l(const char *, locale_t); +/// long atol_l(const char *, locale_t); +/// long long atoll_l(const char *, locale_t); +/// int mblen_l(const char *, size_t, locale_t); +/// size_t mbstowcs_l(wchar_t * restrict, +/// const char * restrict, size_t, locale_t); +/// int mbtowc_l(wchar_t * restrict, +/// const char * restrict, size_t, locale_t); +/// double strtod_l(const char *, char **, locale_t); +/// float strtof_l(const char *, char **, locale_t); +/// long strtol_l(const char *, char **, int, locale_t); +/// long double strtold_l(const char *, char **, locale_t); +/// long long strtoll_l(const char *, char **, int, locale_t); +/// unsigned long strtoul_l(const char *, char **, int, locale_t); +/// unsigned long long strtoull_l(const char *, char **, int, locale_t); +/// size_t wcstombs_l(char * restrict, +/// const wchar_t * restrict, size_t, locale_t); +/// int wctomb_l(char *, wchar_t, locale_t); +/// +/// int ___mb_cur_max_l(locale_t); +/// +/// +/// extern int __mb_cur_max; +/// extern int ___mb_cur_max(void); +/// +/// +/// _Noreturn void abort(void); +/// int abs(int) __attribute__((__const__)); +/// int atexit(void (* )(void)); +/// double atof(const char *); +/// int atoi(const char *); +/// long atol(const char *); +/// void *bsearch(const void *, const void *, size_t, +/// size_t, int (*)(const void * , const void *)); +/// void *calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) +/// __attribute__((__alloc_size__(1, 2))); +/// div_t div(int, int) __attribute__((__const__)); +/// _Noreturn void exit(int); +/// void free(void *); +/// char *getenv(const char *); +/// long labs(long) __attribute__((__const__)); +/// ldiv_t ldiv(long, long) __attribute__((__const__)); +/// void *malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1))); +/// int mblen(const char *, size_t); +/// size_t mbstowcs(wchar_t * restrict , const char * restrict, size_t); +/// int mbtowc(wchar_t * restrict, const char * restrict, size_t); +/// void qsort(void *, size_t, size_t, +/// int (* )(const void *, const void *)); +/// int rand(void); +/// void *realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2))); +/// void srand(unsigned); +/// double strtod(const char * restrict, char ** restrict); +/// float strtof(const char * restrict, char ** restrict); +/// long strtol(const char * restrict, char ** restrict, int); +/// long double +/// strtold(const char * restrict, char ** restrict); +/// unsigned long +/// strtoul(const char * restrict, char ** restrict, int); +/// int system(const char *); +/// int wctomb(char *, wchar_t); +/// size_t wcstombs(char * restrict, const wchar_t * restrict, size_t); +/// +/// typedef struct { +/// long long quot; +/// long long rem; +/// } lldiv_t; +/// +/// +/// long long +/// atoll(const char *); +/// +/// long long +/// llabs(long long) __attribute__((__const__)); +/// +/// lldiv_t lldiv(long long, long long) __attribute__((__const__)); +/// +/// long long +/// strtoll(const char * restrict, char ** restrict, int); +/// +/// unsigned long long +/// strtoull(const char * restrict, char ** restrict, int); +/// +/// +/// _Noreturn void _Exit(int); +/// +/// +/// +/// +/// +/// +/// void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1))) +/// __attribute__((__alloc_size__(2))); +/// int at_quick_exit(void (*)(void)); +/// _Noreturn void +/// quick_exit(int); +/// +/// +/// +/// +/// +/// char *realpath(const char * restrict, char * restrict); +/// +/// +/// int rand_r(unsigned *); +/// +/// +/// int posix_memalign(void **, size_t, size_t); +/// int setenv(const char *, const char *, int); +/// int unsetenv(const char *); +/// +/// +/// +/// int getsubopt(char **, char *const *, char **); +/// +/// char *mkdtemp(char *); +/// +/// +/// +/// int mkstemp(char *); +/// +/// long a64l(const char *); +/// double drand48(void); +/// +/// double erand48(unsigned short[3]); +/// +/// +/// char *initstate(unsigned int, char *, size_t); +/// long jrand48(unsigned short[3]); +/// char *l64a(long); +/// void lcong48(unsigned short[7]); +/// long lrand48(void); +/// +/// char *mktemp(char *); +/// +/// +/// long mrand48(void); +/// long nrand48(unsigned short[3]); +/// int putenv(char *); +/// long random(void); +/// unsigned short +/// *seed48(unsigned short[3]); +/// char *setstate( char *); +/// void srand48(long); +/// void srandom(unsigned int); +/// +/// +/// +/// int grantpt(int); +/// int posix_openpt(int); +/// char *ptsname(int); +/// int unlockpt(int); +/// +/// +/// +/// int ptsname_r(int, char *, size_t); +/// +/// +/// +/// extern const char *malloc_conf; +/// extern void (*malloc_message)(void *, const char *); +/// +/// void abort2(const char *, int, void **) __attribute__((__noreturn__)); +/// __uint32_t +/// arc4random(void); +/// void arc4random_buf(void *, size_t); +/// __uint32_t +/// arc4random_uniform(__uint32_t); +/// +/// +/// +/// +/// +/// +/// char *getbsize(int *, long *); +/// +/// char *cgetcap(char *, const char *, int); +/// int cgetclose(void); +/// int cgetent(char **, char **, const char *); +/// int cgetfirst(char **, char **); +/// int cgetmatch(const char *, const char *); +/// int cgetnext(char **, char **); +/// int cgetnum(char *, const char *, long *); +/// int cgetset(const char *); +/// int cgetstr(char *, const char *, char **); +/// int cgetustr(char *, const char *, char **); +/// +/// int daemon(int, int); +/// int daemonfd(int, int); +/// char *devname(__dev_t, __mode_t); +/// char *devname_r(__dev_t, __mode_t, char *, int); +/// char *fdevname(int); +/// char *fdevname_r(int, char *, int); +/// int getloadavg(double [], int); +/// const char * +/// getprogname(void); +/// +/// int heapsort(void *, size_t, size_t, +/// int (* )(const void *, const void *)); +/// +/// +/// +/// +/// +/// +/// int l64a_r(long, char *, int); +/// int mergesort(void *, size_t, size_t, int (*)(const void *, const void *)); +/// +/// +/// +/// int mkostemp(char *, int); +/// int mkostemps(char *, int, int); +/// int mkostempsat(int, char *, int, int); +/// void qsort_r(void *, size_t, size_t, void *, +/// int (*)(void *, const void *, const void *)); +/// int radixsort(const unsigned char **, int, const unsigned char *, +/// unsigned); +/// void *reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) +/// __attribute__((__alloc_size__(2, 3))); +/// void *reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2))); +/// int rpmatch(const char *); +/// void setprogname(const char *); +/// int sradixsort(const unsigned char **, int, const unsigned char *, +/// unsigned); +/// void srandomdev(void); +/// long long +/// strtonum(const char *, long long, long long, const char **); +/// +/// +/// __int64_t +/// strtoq(const char *, char **, int); +/// __uint64_t +/// strtouq(const char *, char **, int); +/// +/// extern char *suboptarg; +/// +/// +/// +/// +/// +/// +/// typedef size_t rsize_t; +/// +/// +/// +/// +/// typedef int errno_t; +/// +/// +/// +/// typedef void (*constraint_handler_t)(const char * restrict, +/// void * restrict, errno_t); +/// +/// constraint_handler_t set_constraint_handler_s(constraint_handler_t handler); +/// +/// _Noreturn void abort_handler_s(const char * restrict, void * restrict, +/// errno_t); +/// +/// void ignore_handler_s(const char * restrict, void * restrict, errno_t); +/// +/// errno_t qsort_s(void *, rsize_t, rsize_t, +/// int (*)(const void *, const void *, void *), void *); +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// typedef __int8_t int8_t; +/// +/// +/// +/// +/// typedef __int16_t int16_t; +/// +/// +/// +/// +/// typedef __int32_t int32_t; +/// +/// +/// +/// +/// typedef __int64_t int64_t; +/// +/// +/// +/// +/// typedef __uint8_t uint8_t; +/// +/// +/// +/// +/// typedef __uint16_t uint16_t; +/// +/// +/// +/// +/// typedef __uint32_t uint32_t; +/// +/// +/// +/// +/// typedef __uint64_t uint64_t; +/// +/// +/// +/// +/// typedef __intptr_t intptr_t; +/// +/// +/// +/// typedef __uintptr_t uintptr_t; +/// +/// +/// +/// typedef __intmax_t intmax_t; +/// +/// +/// +/// typedef __uintmax_t uintmax_t; +/// +/// +/// typedef __int_least8_t int_least8_t; +/// typedef __int_least16_t int_least16_t; +/// typedef __int_least32_t int_least32_t; +/// typedef __int_least64_t int_least64_t; +/// +/// typedef __uint_least8_t uint_least8_t; +/// typedef __uint_least16_t uint_least16_t; +/// typedef __uint_least32_t uint_least32_t; +/// typedef __uint_least64_t uint_least64_t; +/// +/// typedef __int_fast8_t int_fast8_t; +/// typedef __int_fast16_t int_fast16_t; +/// typedef __int_fast32_t int_fast32_t; +/// typedef __int_fast64_t int_fast64_t; +/// +/// typedef __uint_fast8_t uint_fast8_t; +/// typedef __uint_fast16_t uint_fast16_t; +/// typedef __uint_fast32_t uint_fast32_t; +/// typedef __uint_fast64_t uint_fast64_t; +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// struct pthread; +/// struct pthread_attr; +/// struct pthread_cond; +/// struct pthread_cond_attr; +/// struct pthread_mutex; +/// struct pthread_mutex_attr; +/// struct pthread_once; +/// struct pthread_rwlock; +/// struct pthread_rwlockattr; +/// struct pthread_barrier; +/// struct pthread_barrier_attr; +/// struct pthread_spinlock; +/// +/// typedef struct pthread *pthread_t; +/// +/// +/// typedef struct pthread_attr *pthread_attr_t; +/// typedef struct pthread_mutex *pthread_mutex_t; +/// typedef struct pthread_mutex_attr *pthread_mutexattr_t; +/// typedef struct pthread_cond *pthread_cond_t; +/// typedef struct pthread_cond_attr *pthread_condattr_t; +/// typedef int pthread_key_t; +/// typedef struct pthread_once pthread_once_t; +/// typedef struct pthread_rwlock *pthread_rwlock_t; +/// typedef struct pthread_rwlockattr *pthread_rwlockattr_t; +/// typedef struct pthread_barrier *pthread_barrier_t; +/// typedef struct pthread_barrierattr *pthread_barrierattr_t; +/// typedef struct pthread_spinlock *pthread_spinlock_t; +/// +/// +/// +/// +/// +/// +/// +/// typedef void *pthread_addr_t; +/// typedef void *(*pthread_startroutine_t)(void *); +/// +/// +/// +/// +/// struct pthread_once { +/// int state; +/// pthread_mutex_t mutex; +/// }; +/// +/// +/// +/// typedef unsigned char u_char; +/// typedef unsigned short u_short; +/// typedef unsigned int u_int; +/// typedef unsigned long u_long; +/// +/// typedef unsigned short ushort; +/// typedef unsigned int uint; +/// +/// typedef __uint8_t u_int8_t; +/// typedef __uint16_t u_int16_t; +/// typedef __uint32_t u_int32_t; +/// typedef __uint64_t u_int64_t; +/// +/// typedef __uint64_t u_quad_t; +/// typedef __int64_t quad_t; +/// typedef quad_t * qaddr_t; +/// +/// typedef char * caddr_t; +/// typedef const char * c_caddr_t; +/// +/// +/// typedef __blksize_t blksize_t; +/// +/// +/// +/// typedef __cpuwhich_t cpuwhich_t; +/// typedef __cpulevel_t cpulevel_t; +/// typedef __cpusetid_t cpusetid_t; +/// +/// +/// typedef __blkcnt_t blkcnt_t; +/// +/// +/// +/// +/// typedef __clock_t clock_t; +/// +/// +/// +/// +/// typedef __clockid_t clockid_t; +/// +/// +/// +/// typedef __critical_t critical_t; +/// typedef __daddr_t daddr_t; +/// +/// +/// typedef __dev_t dev_t; +/// +/// +/// +/// +/// typedef __fflags_t fflags_t; +/// +/// +/// +/// typedef __fixpt_t fixpt_t; +/// +/// +/// typedef __fsblkcnt_t fsblkcnt_t; +/// typedef __fsfilcnt_t fsfilcnt_t; +/// +/// +/// +/// +/// typedef __gid_t gid_t; +/// +/// +/// +/// +/// typedef __uint32_t in_addr_t; +/// +/// +/// +/// +/// typedef __uint16_t in_port_t; +/// +/// +/// +/// +/// typedef __id_t id_t; +/// +/// +/// +/// +/// typedef __ino_t ino_t; +/// +/// +/// +/// +/// typedef __key_t key_t; +/// +/// +/// +/// +/// typedef __lwpid_t lwpid_t; +/// +/// +/// +/// +/// typedef __mode_t mode_t; +/// +/// +/// +/// +/// typedef __accmode_t accmode_t; +/// +/// +/// +/// +/// typedef __nlink_t nlink_t; +/// +/// +/// +/// +/// typedef __off_t off_t; +/// +/// +/// +/// +/// typedef __off64_t off64_t; +/// +/// +/// +/// +/// typedef __pid_t pid_t; +/// +/// +/// +/// typedef __register_t register_t; +/// +/// +/// typedef __rlim_t rlim_t; +/// +/// +/// +/// typedef __int64_t sbintime_t; +/// +/// typedef __segsz_t segsz_t; +/// +/// +/// +/// +/// +/// +/// +/// typedef __ssize_t ssize_t; +/// +/// +/// +/// +/// typedef __suseconds_t suseconds_t; +/// +/// +/// +/// +/// typedef __time_t time_t; +/// +/// +/// +/// +/// typedef __timer_t timer_t; +/// +/// +/// +/// +/// typedef __mqd_t mqd_t; +/// +/// +/// +/// typedef __u_register_t u_register_t; +/// +/// +/// typedef __uid_t uid_t; +/// +/// +/// +/// +/// typedef __useconds_t useconds_t; +/// +/// +/// +/// +/// +/// typedef unsigned long cap_ioctl_t; +/// +/// +/// +/// +/// struct cap_rights; +/// +/// typedef struct cap_rights cap_rights_t; +/// +/// typedef __uint64_t kpaddr_t; +/// typedef __uint64_t kvaddr_t; +/// typedef __uint64_t ksize_t; +/// typedef __int64_t kssize_t; +/// +/// typedef __vm_offset_t vm_offset_t; +/// typedef __uint64_t vm_ooffset_t; +/// typedef __vm_paddr_t vm_paddr_t; +/// typedef __uint64_t vm_pindex_t; +/// typedef __vm_size_t vm_size_t; +/// +/// typedef __rman_res_t rman_res_t; +/// +/// static __inline __uint16_t +/// __bitcount16(__uint16_t _x) +/// { +/// +/// _x = (_x & 0x5555) + ((_x & 0xaaaa) >> 1); +/// _x = (_x & 0x3333) + ((_x & 0xcccc) >> 2); +/// _x = (_x + (_x >> 4)) & 0x0f0f; +/// _x = (_x + (_x >> 8)) & 0x00ff; +/// return (_x); +/// } +/// +/// static __inline __uint32_t +/// __bitcount32(__uint32_t _x) +/// { +/// +/// _x = (_x & 0x55555555) + ((_x & 0xaaaaaaaa) >> 1); +/// _x = (_x & 0x33333333) + ((_x & 0xcccccccc) >> 2); +/// _x = (_x + (_x >> 4)) & 0x0f0f0f0f; +/// _x = (_x + (_x >> 8)); +/// _x = (_x + (_x >> 16)) & 0x000000ff; +/// return (_x); +/// } +/// +/// +/// static __inline __uint64_t +/// __bitcount64(__uint64_t _x) +/// { +/// +/// _x = (_x & 0x5555555555555555) + ((_x & 0xaaaaaaaaaaaaaaaa) >> 1); +/// _x = (_x & 0x3333333333333333) + ((_x & 0xcccccccccccccccc) >> 2); +/// _x = (_x + (_x >> 4)) & 0x0f0f0f0f0f0f0f0f; +/// _x = (_x + (_x >> 8)); +/// _x = (_x + (_x >> 16)); +/// _x = (_x + (_x >> 32)) & 0x000000ff; +/// return (_x); +/// } +/// +/// +/// +/// +/// +/// typedef struct __sigset { +/// __uint32_t __bits[4]; +/// } __sigset_t; +/// +/// +/// +/// struct timeval { +/// time_t tv_sec; +/// suseconds_t tv_usec; +/// }; +/// +/// +/// +/// +/// +/// struct timespec { +/// time_t tv_sec; +/// long tv_nsec; +/// }; +/// +/// +/// struct itimerspec { +/// struct timespec it_interval; +/// struct timespec it_value; +/// }; +/// +/// +/// typedef unsigned long __fd_mask; +/// +/// typedef __fd_mask fd_mask; +/// +/// +/// +/// +/// typedef __sigset_t sigset_t; +/// +/// typedef struct fd_set { +/// __fd_mask __fds_bits[(((1024) + (((sizeof(__fd_mask) * 8)) - 1)) / ((sizeof(__fd_mask) * 8)))]; +/// } fd_set; +/// +/// +/// int pselect(int, fd_set *restrict, fd_set *restrict, fd_set *restrict, +/// const struct timespec *restrict, const sigset_t *restrict); +/// +/// +/// +/// int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +/// +/// +/// +/// +/// static __inline int +/// __major(dev_t _d) +/// { +/// return (((_d >> 32) & 0xffffff00) | ((_d >> 8) & 0xff)); +/// } +/// +/// static __inline int +/// __minor(dev_t _d) +/// { +/// return (((_d >> 24) & 0xff00) | (_d & 0xffff00ff)); +/// } +/// +/// static __inline dev_t +/// __makedev(int _Major, int _Minor) +/// { +/// return (((dev_t)(_Major & 0xffffff00) << 32) | ((_Major & 0xff) << 8) | +/// ((dev_t)(_Minor & 0xff00) << 24) | (_Minor & 0xffff00ff)); +/// } +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// int ftruncate(int, off_t); +/// +/// +/// +/// off_t lseek(int, off_t, int); +/// +/// +/// +/// void * mmap(void *, size_t, int, int, int, off_t); +/// +/// +/// +/// int truncate(const char *, off_t); +/// +/// +/// +/// +/// +/// +/// +/// +/// static __inline int atomic_cmpset_char(volatile u_char *dst, u_char expect, u_char src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_cmpset_" "char" " " : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_char(volatile u_char *dst, u_char *expect, u_char src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_fcmpset_" "char" " " : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); }; +/// static __inline int atomic_cmpset_short(volatile u_short *dst, u_short expect, u_short src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_cmpset_" "short" " " : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_short(volatile u_short *dst, u_short *expect, u_short src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_fcmpset_" "short" " " : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); }; +/// static __inline int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_cmpset_" "int" " " : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_int(volatile u_int *dst, u_int *expect, u_int src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_fcmpset_" "int" " " : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); }; +/// static __inline int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_cmpset_" "long" " " : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_long(volatile u_long *dst, u_long *expect, u_long src) { u_char res; __asm volatile( " " "lock ; " " " " cmpxchg %3,%1 ; " "# atomic_fcmpset_" "long" " " : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); }; +/// +/// +/// +/// +/// +/// static __inline u_int +/// atomic_fetchadd_int(volatile u_int *p, u_int v) +/// { +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " xaddl %0,%1 ; " +/// "# atomic_fetchadd_int" +/// : "+r" (v), +/// "+m" (*p) +/// : : "cc"); +/// return (v); +/// } +/// +/// +/// +/// +/// +/// static __inline u_long +/// atomic_fetchadd_long(volatile u_long *p, u_long v) +/// { +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " xaddq %0,%1 ; " +/// "# atomic_fetchadd_long" +/// : "+r" (v), +/// "+m" (*p) +/// : : "cc"); +/// return (v); +/// } +/// +/// static __inline int +/// atomic_testandset_int(volatile u_int *p, u_int v) +/// { +/// u_char res; +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " btsl %2,%1 ; " +/// "# atomic_testandset_int" +/// : "=@ccc" (res), +/// "+m" (*p) +/// : "Ir" (v & 0x1f) +/// : "cc"); +/// return (res); +/// } +/// +/// static __inline int +/// atomic_testandset_long(volatile u_long *p, u_int v) +/// { +/// u_char res; +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " btsq %2,%1 ; " +/// "# atomic_testandset_long" +/// : "=@ccc" (res), +/// "+m" (*p) +/// : "Jr" ((u_long)(v & 0x3f)) +/// : "cc"); +/// return (res); +/// } +/// +/// static __inline int +/// atomic_testandclear_int(volatile u_int *p, u_int v) +/// { +/// u_char res; +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " btrl %2,%1 ; " +/// "# atomic_testandclear_int" +/// : "=@ccc" (res), +/// "+m" (*p) +/// : "Ir" (v & 0x1f) +/// : "cc"); +/// return (res); +/// } +/// +/// static __inline int +/// atomic_testandclear_long(volatile u_long *p, u_int v) +/// { +/// u_char res; +/// +/// __asm volatile( +/// " " "lock ; " " " +/// " btrq %2,%1 ; " +/// "# atomic_testandclear_long" +/// : "=@ccc" (res), +/// "+m" (*p) +/// : "Jr" ((u_long)(v & 0x3f)) +/// : "cc"); +/// return (res); +/// } +/// +/// static __inline void +/// __storeload_barrier(void) +/// { +/// +/// __asm volatile("lock; addl $0,-8(%%rsp)" : : : "memory", "cc"); +/// } +/// +/// static __inline void +/// atomic_thread_fence_acq(void) +/// { +/// +/// __asm volatile(" " : : : "memory"); +/// } +/// +/// static __inline void +/// atomic_thread_fence_rel(void) +/// { +/// +/// __asm volatile(" " : : : "memory"); +/// } +/// +/// static __inline void +/// atomic_thread_fence_acq_rel(void) +/// { +/// +/// __asm volatile(" " : : : "memory"); +/// } +/// +/// static __inline void +/// atomic_thread_fence_seq_cst(void) +/// { +/// +/// __storeload_barrier(); +/// } +/// +/// +/// +/// static __inline void atomic_set_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "orb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_set_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "orb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_clear_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "andb %b1,%0" : "+m" (*p) : "iq" (~v) : "cc"); } static __inline void atomic_clear_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "andb %b1,%0" : "+m" (*p) : "iq" (~v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_add_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "addb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_add_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "addb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_subtract_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "subb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_subtract_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "subb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack; +/// +/// static __inline void atomic_set_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "orw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_set_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "orw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_clear_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "andw %w1,%0" : "+m" (*p) : "ir" (~v) : "cc"); } static __inline void atomic_clear_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "andw %w1,%0" : "+m" (*p) : "ir" (~v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_add_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "addw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_add_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "addw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_subtract_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "subw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_subtract_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "subw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// +/// static __inline void atomic_set_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "orl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_set_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "orl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_clear_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "andl %1,%0" : "+m" (*p) : "ir" (~v) : "cc"); } static __inline void atomic_clear_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "andl %1,%0" : "+m" (*p) : "ir" (~v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_add_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "addl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_add_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "addl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_subtract_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "subl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_subtract_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "subl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack; +/// +/// static __inline void atomic_set_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "orq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_set_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "orq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_clear_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "andq %1,%0" : "+m" (*p) : "er" (~v) : "cc"); } static __inline void atomic_clear_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "andq %1,%0" : "+m" (*p) : "er" (~v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_add_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "addq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_add_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "addq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack; +/// static __inline void atomic_subtract_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "subq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_subtract_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "subq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack; +/// +/// +/// +/// +/// +/// static __inline u_char atomic_load_acq_char(volatile u_char *p) { u_char res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_char(volatile u_char *p, u_char v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack; +/// static __inline u_short atomic_load_acq_short(volatile u_short *p) { u_short res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_short(volatile u_short *p, u_short v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack; +/// static __inline u_int atomic_load_acq_int(volatile u_int *p) { u_int res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_int(volatile u_int *p, u_int v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack; +/// static __inline u_long atomic_load_acq_long(volatile u_long *p) { u_long res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_long(volatile u_long *p, u_long v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack; +/// +/// static __inline u_int +/// atomic_swap_int(volatile u_int *p, u_int v) +/// { +/// +/// __asm volatile( +/// " xchgl %1,%0 ; " +/// "# atomic_swap_int" +/// : "+r" (v), +/// "+m" (*p)); +/// return (v); +/// } +/// +/// static __inline u_long +/// atomic_swap_long(volatile u_long *p, u_long v) +/// { +/// +/// __asm volatile( +/// " xchgq %1,%0 ; " +/// "# atomic_swap_long" +/// : "+r" (v), +/// "+m" (*p)); +/// return (v); +/// } +/// +/// +/// +/// +/// +/// extern char *_PathLocale; +/// +/// int __detect_path_locale(void); +/// int __wrap_setrunelocale(const char *); +/// +/// +/// enum { +/// XLC_COLLATE = 0, +/// XLC_CTYPE, +/// XLC_MONETARY, +/// XLC_NUMERIC, +/// XLC_TIME, +/// XLC_MESSAGES, +/// XLC_LAST +/// }; +/// +/// _Static_assert(XLC_LAST - XLC_COLLATE == 6, "XLC values should be contiguous"); +/// _Static_assert(XLC_COLLATE == +/// +/// 1 +/// +/// - 1, +/// "XLC_COLLATE doesn't match the LC_COLLATE value."); +/// _Static_assert(XLC_CTYPE == +/// +/// 2 +/// +/// - 1, +/// "XLC_CTYPE doesn't match the LC_CTYPE value."); +/// _Static_assert(XLC_MONETARY == +/// +/// 3 +/// +/// - 1, +/// "XLC_MONETARY doesn't match the LC_MONETARY value."); +/// _Static_assert(XLC_NUMERIC == +/// +/// 4 +/// +/// - 1, +/// "XLC_NUMERIC doesn't match the LC_NUMERIC value."); +/// _Static_assert(XLC_TIME == +/// +/// 5 +/// +/// - 1, +/// "XLC_TIME doesn't match the LC_TIME value."); +/// _Static_assert(XLC_MESSAGES == +/// +/// 6 +/// +/// - 1, +/// "XLC_MESSAGES doesn't match the LC_MESSAGES value."); +/// +/// struct xlocale_refcounted { +/// +/// long retain_count; +/// +/// void(*destructor)(void*); +/// }; +/// +/// +/// +/// +/// +/// +/// +/// struct xlocale_component { +/// struct xlocale_refcounted header; +/// +/// char locale[31 +1]; +/// +/// char version[12]; +/// }; +/// +/// +/// +/// +/// struct _xlocale { +/// struct xlocale_refcounted header; +/// +/// struct xlocale_component *components[XLC_LAST]; +/// +/// +/// int monetary_locale_changed; +/// +/// +/// int using_monetary_locale; +/// +/// +/// int numeric_locale_changed; +/// +/// +/// int using_numeric_locale; +/// +/// +/// int using_time_locale; +/// +/// +/// int using_messages_locale; +/// +/// struct lconv lconv; +/// +/// char *csym; +/// }; +/// +/// +/// +/// +/// __attribute__((unused)) static void* +/// xlocale_retain(void *val) +/// { +/// struct xlocale_refcounted *obj = val; +/// atomic_add_long(&(obj->retain_count), 1); +/// return (val); +/// } +/// +/// +/// +/// +/// __attribute__((unused)) static void +/// xlocale_release(void *val) +/// { +/// struct xlocale_refcounted *obj = val; +/// long count; +/// +/// count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; +/// if (count < 0 && obj->destructor != +/// +/// ((void *)0) +/// +/// ) +/// obj->destructor(obj); +/// } +/// +/// +/// +/// +/// +/// extern void* __collate_load(const char*, locale_t); +/// extern void* __ctype_load(const char*, locale_t); +/// extern void* __messages_load(const char*, locale_t); +/// extern void* __monetary_load(const char*, locale_t); +/// extern void* __numeric_load(const char*, locale_t); +/// extern void* __time_load(const char*, locale_t); +/// +/// extern struct _xlocale __xlocale_global_locale; +/// extern struct _xlocale __xlocale_C_locale; +/// +/// +/// +/// +/// void __set_thread_rune_locale(locale_t loc); +/// +/// +/// +/// +/// extern int __has_thread_locale; +/// +/// +/// +/// +/// +/// extern _Thread_local locale_t __thread_locale; +/// +/// +/// +/// +/// +/// +/// +/// static inline locale_t __get_locale(void) +/// { +/// +/// if (!__has_thread_locale) { +/// return (&__xlocale_global_locale); +/// } +/// return (__thread_locale ? __thread_locale : &__xlocale_global_locale); +/// } +/// +/// +/// +/// +/// +/// static inline locale_t get_real_locale(locale_t locale) +/// { +/// switch ((intptr_t)locale) { +/// case 0: return (&__xlocale_C_locale); +/// case -1: return (&__xlocale_global_locale); +/// default: return (locale); +/// } +/// } +/// +/// +/// +/// +/// +/// +/// +/// +/// struct xlocale_ctype { +/// struct xlocale_component header; +/// _RuneLocale *runes; +/// size_t (*__mbrtowc)(wchar_t * +/// +/// restrict +/// +/// , const char * +/// +/// restrict +/// +/// , +/// size_t, mbstate_t * +/// +/// restrict +/// +/// ); +/// int (*__mbsinit)(const mbstate_t *); +/// size_t (*__mbsnrtowcs)(wchar_t * +/// +/// restrict +/// +/// , const char ** +/// +/// restrict +/// +/// , +/// size_t, size_t, mbstate_t * +/// +/// restrict +/// +/// ); +/// size_t (*__wcrtomb)(char * +/// +/// restrict +/// +/// , wchar_t, mbstate_t * +/// +/// restrict +/// +/// ); +/// size_t (*__wcsnrtombs)(char * +/// +/// restrict +/// +/// , const wchar_t ** +/// +/// restrict +/// +/// , +/// size_t, size_t, mbstate_t * +/// +/// restrict +/// +/// ); +/// int __mb_cur_max; +/// int __mb_sb_limit; +/// +/// __mbstate_t mblen; +/// +/// __mbstate_t mbrlen; +/// +/// __mbstate_t mbrtoc16; +/// +/// __mbstate_t mbrtoc32; +/// +/// __mbstate_t mbrtowc; +/// +/// __mbstate_t mbsnrtowcs; +/// +/// __mbstate_t mbsrtowcs; +/// +/// __mbstate_t mbtowc; +/// +/// __mbstate_t c16rtomb; +/// +/// __mbstate_t c32rtomb; +/// +/// __mbstate_t wcrtomb; +/// +/// __mbstate_t wcsnrtombs; +/// +/// __mbstate_t wcsrtombs; +/// +/// __mbstate_t wctomb; +/// }; +/// +/// extern struct xlocale_ctype __xlocale_global_ctype; +/// +/// +/// +/// +/// int _none_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _UTF8_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _EUC_CN_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _EUC_JP_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _EUC_KR_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _EUC_TW_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _GB18030_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _GB2312_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _GBK_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _BIG5_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _MSKanji_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// int _ascii_init(struct xlocale_ctype *, _RuneLocale *) +/// +/// __attribute__((__visibility__("hidden"))) +/// +/// ; +/// +/// typedef size_t (*mbrtowc_pfn_t)(wchar_t * +/// +/// restrict +/// +/// , +/// const char * +/// +/// restrict +/// +/// , size_t, mbstate_t * +/// +/// restrict +/// +/// ); +/// typedef size_t (*wcrtomb_pfn_t)(char * +/// +/// restrict +/// +/// , wchar_t, +/// mbstate_t * +/// +/// restrict +/// +/// ); +/// size_t __mbsnrtowcs_std(wchar_t * +/// +/// restrict +/// +/// , const char ** +/// +/// restrict +/// +/// , +/// size_t, size_t, mbstate_t * +/// +/// restrict +/// +/// , mbrtowc_pfn_t); +/// size_t __wcsnrtombs_std(char * +/// +/// restrict +/// +/// , const wchar_t ** +/// +/// restrict +/// +/// , +/// size_t, size_t, mbstate_t * +/// +/// restrict +/// +/// , wcrtomb_pfn_t); +/// + +const _RuneLocale _DefaultRuneLocale = { + + + "RuneMagi" + + , + "NONE", + + + ((void *)0) + + , + + + ((void *)0) + + , + 0xFFFD, + + { + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + | + + 0x00004000L + + | + + 0x00020000L + + , + + + 0x00000200L + + | + + 0x00004000L + + , + + + 0x00000200L + + | + + 0x00004000L + + , + + + 0x00000200L + + | + + 0x00004000L + + , + + + 0x00000200L + + | + + 0x00004000L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00000200L + + , + + + 0x00004000L + + | + + 0x00020000L + + | + + 0x00040000L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |0, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |1, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |2, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |3, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |4, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |5, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |6, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |7, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |8, + + + 0x00000400L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00010000L + + | + + 0x00400000L + + |9, + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |10, + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |11, + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |12, + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |13, + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |14, + + + 0x00008000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |15, + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00008000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |10, + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |11, + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |12, + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |13, + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |14, + + + 0x00001000L + + | + + 0x00010000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + |15, + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00001000L + + | + + 0x00040000L + + | + + 0x00000800L + + | + + 0x00000100L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00002000L + + | + + 0x00040000L + + | + + 0x00000800L + + , + + + 0x00000200L + + , + }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + }, +}; + + +const _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale; + +/// _RuneLocale * +/// __runes_for_locale(locale_t locale, int *mb_sb_limit) +/// { +/// (locale = get_real_locale(locale)); +/// struct xlocale_ctype *c = ((struct xlocale_ctype*)(locale)->components[XLC_CTYPE]); +/// *mb_sb_limit = c->__mb_sb_limit; +/// return c->runes; +/// } diff --git a/vendor/modernc.org/libc/freebsd/xlocale_private.h b/vendor/modernc.org/libc/freebsd/xlocale_private.h new file mode 100644 index 000000000..bc40f28fc --- /dev/null +++ b/vendor/modernc.org/libc/freebsd/xlocale_private.h @@ -0,0 +1,228 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2011 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by David Chisnall under sponsorship from + * the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _XLOCALE_PRIVATE__H_ +#define _XLOCALE_PRIVATE__H_ + +#include +#include +#include +#include +#include +#include +#include "setlocale.h" + +/** + * The XLC_ values are indexes into the components array. They are defined in + * the same order as the LC_ values in locale.h, but without the LC_ALL zero + * value. Translating from LC_X to XLC_X is done by subtracting one. + * + * Any reordering of this enum should ensure that these invariants are not + * violated. + */ +enum { + XLC_COLLATE = 0, + XLC_CTYPE, + XLC_MONETARY, + XLC_NUMERIC, + XLC_TIME, + XLC_MESSAGES, + XLC_LAST +}; + +_Static_assert(XLC_LAST - XLC_COLLATE == 6, "XLC values should be contiguous"); +_Static_assert(XLC_COLLATE == LC_COLLATE - 1, + "XLC_COLLATE doesn't match the LC_COLLATE value."); +_Static_assert(XLC_CTYPE == LC_CTYPE - 1, + "XLC_CTYPE doesn't match the LC_CTYPE value."); +_Static_assert(XLC_MONETARY == LC_MONETARY - 1, + "XLC_MONETARY doesn't match the LC_MONETARY value."); +_Static_assert(XLC_NUMERIC == LC_NUMERIC - 1, + "XLC_NUMERIC doesn't match the LC_NUMERIC value."); +_Static_assert(XLC_TIME == LC_TIME - 1, + "XLC_TIME doesn't match the LC_TIME value."); +_Static_assert(XLC_MESSAGES == LC_MESSAGES - 1, + "XLC_MESSAGES doesn't match the LC_MESSAGES value."); + +/** + * Header used for objects that are reference counted. Objects may optionally + * have a destructor associated, which is responsible for destroying the + * structure. Global / static versions of the structure should have no + * destructor set - they can then have their reference counts manipulated as + * normal, but will not do anything with them. + * + * The header stores a retain count - objects are assumed to have a reference + * count of 1 when they are created, but the retain count is 0. When the + * retain count is less than 0, they are freed. + */ +struct xlocale_refcounted { + /** Number of references to this component. */ + long retain_count; + /** Function used to destroy this component, if one is required*/ + void(*destructor)(void*); +}; + +#define XLOCALE_DEF_VERSION_LEN 12 + +/** + * Header for a locale component. All locale components must begin with this + * header. + */ +struct xlocale_component { + struct xlocale_refcounted header; + /** Name of the locale used for this component. */ + char locale[ENCODING_LEN+1]; + /** Version of the definition for this component. */ + char version[XLOCALE_DEF_VERSION_LEN]; +}; + +/** + * xlocale structure, stores per-thread locale information. + */ +struct _xlocale { + struct xlocale_refcounted header; + /** Components for the locale. */ + struct xlocale_component *components[XLC_LAST]; + /** Flag indicating if components[XLC_MONETARY] has changed since the + * last call to localeconv_l() with this locale. */ + int monetary_locale_changed; + /** Flag indicating whether this locale is actually using a locale for + * LC_MONETARY (1), or if it should use the C default instead (0). */ + int using_monetary_locale; + /** Flag indicating if components[XLC_NUMERIC] has changed since the + * last call to localeconv_l() with this locale. */ + int numeric_locale_changed; + /** Flag indicating whether this locale is actually using a locale for + * LC_NUMERIC (1), or if it should use the C default instead (0). */ + int using_numeric_locale; + /** Flag indicating whether this locale is actually using a locale for + * LC_TIME (1), or if it should use the C default instead (0). */ + int using_time_locale; + /** Flag indicating whether this locale is actually using a locale for + * LC_MESSAGES (1), or if it should use the C default instead (0). */ + int using_messages_locale; + /** The structure to be returned from localeconv_l() for this locale. */ + struct lconv lconv; + /** Buffer used by nl_langinfo_l() */ + char *csym; +}; + +/** + * Increments the reference count of a reference-counted structure. + */ +__attribute__((unused)) static void* +xlocale_retain(void *val) +{ + struct xlocale_refcounted *obj = val; + atomic_add_long(&(obj->retain_count), 1); + return (val); +} +/** + * Decrements the reference count of a reference-counted structure, freeing it + * if this is the last reference, calling its destructor if it has one. + */ +__attribute__((unused)) static void +xlocale_release(void *val) +{ + struct xlocale_refcounted *obj = val; + long count; + + count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; + if (count < 0 && obj->destructor != NULL) + obj->destructor(obj); +} + +/** + * Load functions. Each takes the name of a locale and a pointer to the data + * to be initialised as arguments. Two special values are allowed for the + */ +extern void* __collate_load(const char*, locale_t); +extern void* __ctype_load(const char*, locale_t); +extern void* __messages_load(const char*, locale_t); +extern void* __monetary_load(const char*, locale_t); +extern void* __numeric_load(const char*, locale_t); +extern void* __time_load(const char*, locale_t); + +extern struct _xlocale __xlocale_global_locale; +extern struct _xlocale __xlocale_C_locale; + +/** + * Caches the rune table in TLS for fast access. + */ +void __set_thread_rune_locale(locale_t loc); +/** + * Flag indicating whether a per-thread locale has been set. If no per-thread + * locale has ever been set, then we always use the global locale. + */ +extern int __has_thread_locale; + +/** + * The per-thread locale. Avoids the need to use pthread lookup functions when + * getting the per-thread locale. + */ +extern _Thread_local locale_t __thread_locale; + +/** + * Returns the current locale for this thread, or the global locale if none is + * set. The caller does not have to free the locale. The return value from + * this call is not guaranteed to remain valid after the locale changes. As + * such, this should only be called within libc functions. + */ +static inline locale_t __get_locale(void) +{ + + if (!__has_thread_locale) { + return (&__xlocale_global_locale); + } + return (__thread_locale ? __thread_locale : &__xlocale_global_locale); +} + +/** + * Two magic values are allowed for locale_t objects. NULL and -1. This + * function maps those to the real locales that they represent. + */ +static inline locale_t get_real_locale(locale_t locale) +{ + switch ((intptr_t)locale) { + case 0: return (&__xlocale_C_locale); + case -1: return (&__xlocale_global_locale); + default: return (locale); + } +} + +/** + * Replace a placeholder locale with the real global or thread-local locale_t. + */ +#define FIX_LOCALE(l) (l = get_real_locale(l)) + +#endif diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/aarch64/atomic_arch.h new file mode 100644 index 000000000..40fefc25b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/atomic_arch.h @@ -0,0 +1,82 @@ +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ("ldaxr %w0,%1" : "=r"(v) : "Q"(*p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ("stlxr %w0,%w2,%1" : "=&r"(r), "=Q"(*p) : "r"(v) : "memory"); + return !r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("dmb ish" : : : "memory"); +} + +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + int old; + do { + old = a_ll(p); + if (old != t) { + a_barrier(); + break; + } + } while (!a_sc(p, s)); + return old; +} + +#define a_ll_p a_ll_p +static inline void *a_ll_p(volatile void *p) +{ + void *v; + __asm__ __volatile__ ("ldaxr %0, %1" : "=r"(v) : "Q"(*(void *volatile *)p)); + return v; +} + +#define a_sc_p a_sc_p +static inline int a_sc_p(volatile int *p, void *v) +{ + int r; + __asm__ __volatile__ ("stlxr %w0,%2,%1" : "=&r"(r), "=Q"(*(void *volatile *)p) : "r"(v) : "memory"); + return !r; +} + +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + void *old; + do { + old = a_ll_p(p); + if (old != t) { + a_barrier(); + break; + } + } while (!a_sc_p(p, s)); + return old; +} + +#define a_ctz_64 a_ctz_64 +static inline int a_ctz_64(uint64_t x) +{ + __asm__( + " rbit %0, %1\n" + " clz %0, %0\n" + : "=r"(x) : "r"(x)); + return x; +} + +#define a_clz_64 a_clz_64 +static inline int a_clz_64(uint64_t x) +{ + __asm__("clz %0, %1" : "=r"(x) : "r"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/fcntl.h new file mode 100644 index 000000000..927879760 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/fcntl.h @@ -0,0 +1,38 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 0200000 +#define O_LARGEFILE 0400000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020040000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/fenv.h new file mode 100644 index 000000000..2f3279abc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/fenv.h @@ -0,0 +1,19 @@ +#define FE_INVALID 1 +#define FE_DIVBYZERO 2 +#define FE_OVERFLOW 4 +#define FE_UNDERFLOW 8 +#define FE_INEXACT 16 +#define FE_ALL_EXCEPT 31 +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x800000 +#define FE_UPWARD 0x400000 +#define FE_TOWARDZERO 0xc00000 + +typedef unsigned int fexcept_t; + +typedef struct { + unsigned int __fpcr; + unsigned int __fpsr; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/float.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/float.h new file mode 100644 index 000000000..6ac22336f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/float.h @@ -0,0 +1,31 @@ +#define FLT_EVAL_METHOD 0 + +// #define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +// #define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +// #define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +// #define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L +// +// #define LDBL_MANT_DIG 113 +// #define LDBL_MIN_EXP (-16381) +// #define LDBL_MAX_EXP 16384 +// +// #define LDBL_DIG 33 +// #define LDBL_MIN_10_EXP (-4931) +// #define LDBL_MAX_10_EXP 4932 +// +// #define DECIMAL_DIG 36 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/hwcap.h new file mode 100644 index 000000000..a7484028e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/hwcap.h @@ -0,0 +1,40 @@ +#define HWCAP_FP (1 << 0) +#define HWCAP_ASIMD (1 << 1) +#define HWCAP_EVTSTRM (1 << 2) +#define HWCAP_AES (1 << 3) +#define HWCAP_PMULL (1 << 4) +#define HWCAP_SHA1 (1 << 5) +#define HWCAP_SHA2 (1 << 6) +#define HWCAP_CRC32 (1 << 7) +#define HWCAP_ATOMICS (1 << 8) +#define HWCAP_FPHP (1 << 9) +#define HWCAP_ASIMDHP (1 << 10) +#define HWCAP_CPUID (1 << 11) +#define HWCAP_ASIMDRDM (1 << 12) +#define HWCAP_JSCVT (1 << 13) +#define HWCAP_FCMA (1 << 14) +#define HWCAP_LRCPC (1 << 15) +#define HWCAP_DCPOP (1 << 16) +#define HWCAP_SHA3 (1 << 17) +#define HWCAP_SM3 (1 << 18) +#define HWCAP_SM4 (1 << 19) +#define HWCAP_ASIMDDP (1 << 20) +#define HWCAP_SHA512 (1 << 21) +#define HWCAP_SVE (1 << 22) +#define HWCAP_ASIMDFHM (1 << 23) +#define HWCAP_DIT (1 << 24) +#define HWCAP_USCAT (1 << 25) +#define HWCAP_ILRCPC (1 << 26) +#define HWCAP_FLAGM (1 << 27) +#define HWCAP_SSBS (1 << 28) +#define HWCAP_SB (1 << 29) +#define HWCAP_PACA (1 << 30) +#define HWCAP_PACG (1UL << 31) + +#define HWCAP2_DCPODP (1 << 0) +#define HWCAP2_SVE2 (1 << 1) +#define HWCAP2_SVEAES (1 << 2) +#define HWCAP2_SVEPMULL (1 << 3) +#define HWCAP2_SVEBITPERM (1 << 4) +#define HWCAP2_SVESHA3 (1 << 5) +#define HWCAP2_SVESM4 (1 << 6) diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/posix.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/posix.h new file mode 100644 index 000000000..c37b94c14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/reg.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/reg.h new file mode 100644 index 000000000..2633f39d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/reg.h @@ -0,0 +1,2 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/setjmp.h new file mode 100644 index 000000000..54bc2610c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[22]; diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/signal.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/signal.h new file mode 100644 index 000000000..b71261f56 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/signal.h @@ -0,0 +1,153 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 6144 +#define SIGSTKSZ 12288 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t; +typedef unsigned long gregset_t[34]; + +typedef struct { + long double vregs[32]; + unsigned int fpsr; + unsigned int fpcr; +} fpregset_t; +typedef struct sigcontext { + unsigned long fault_address; + unsigned long regs[31]; + unsigned long sp, pc, pstate; + long double __reserved[256]; +} mcontext_t; + +#define FPSIMD_MAGIC 0x46508001 +#define ESR_MAGIC 0x45535201 +#define EXTRA_MAGIC 0x45585401 +#define SVE_MAGIC 0x53564501 +struct _aarch64_ctx { + unsigned int magic; + unsigned int size; +}; +struct fpsimd_context { + struct _aarch64_ctx head; + unsigned int fpsr; + unsigned int fpcr; + long double vregs[32]; +}; +struct esr_context { + struct _aarch64_ctx head; + unsigned long esr; +}; +struct extra_context { + struct _aarch64_ctx head; + unsigned long datap; + unsigned int size; + unsigned int __reserved[3]; +}; +struct sve_context { + struct _aarch64_ctx head; + unsigned short vl; + unsigned short __reserved[3]; +}; +#define SVE_VQ_BYTES 16 +#define SVE_VQ_MIN 1 +#define SVE_VQ_MAX 512 +#define SVE_VL_MIN (SVE_VQ_MIN * SVE_VQ_BYTES) +#define SVE_VL_MAX (SVE_VQ_MAX * SVE_VQ_BYTES) +#define SVE_NUM_ZREGS 32 +#define SVE_NUM_PREGS 16 +#define sve_vl_valid(vl) \ + ((vl) % SVE_VQ_BYTES == 0 && (vl) >= SVE_VL_MIN && (vl) <= SVE_VL_MAX) +#define sve_vq_from_vl(vl) ((vl) / SVE_VQ_BYTES) +#define sve_vl_from_vq(vq) ((vq) * SVE_VQ_BYTES) +#define SVE_SIG_ZREG_SIZE(vq) ((unsigned)(vq) * SVE_VQ_BYTES) +#define SVE_SIG_PREG_SIZE(vq) ((unsigned)(vq) * (SVE_VQ_BYTES / 8)) +#define SVE_SIG_FFR_SIZE(vq) SVE_SIG_PREG_SIZE(vq) +#define SVE_SIG_REGS_OFFSET \ + ((sizeof(struct sve_context) + (SVE_VQ_BYTES - 1)) \ + / SVE_VQ_BYTES * SVE_VQ_BYTES) +#define SVE_SIG_ZREGS_OFFSET SVE_SIG_REGS_OFFSET +#define SVE_SIG_ZREG_OFFSET(vq, n) \ + (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREG_SIZE(vq) * (n)) +#define SVE_SIG_ZREGS_SIZE(vq) \ + (SVE_SIG_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_SIG_ZREGS_OFFSET) +#define SVE_SIG_PREGS_OFFSET(vq) \ + (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREGS_SIZE(vq)) +#define SVE_SIG_PREG_OFFSET(vq, n) \ + (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREG_SIZE(vq) * (n)) +#define SVE_SIG_PREGS_SIZE(vq) \ + (SVE_SIG_PREG_OFFSET(vq, SVE_NUM_PREGS) - SVE_SIG_PREGS_OFFSET(vq)) +#define SVE_SIG_FFR_OFFSET(vq) \ + (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREGS_SIZE(vq)) +#define SVE_SIG_REGS_SIZE(vq) \ + (SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET) +#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq)) +#else +typedef struct { + long double __regs[18+256]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/stat.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/stat.h new file mode 100644 index 000000000..b7f4221be --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/stat.h @@ -0,0 +1,18 @@ +struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + unsigned long __pad; + off_t st_size; + blksize_t st_blksize; + int __pad2; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/bits/user.h b/vendor/modernc.org/libc/musl/arch/aarch64/bits/user.h new file mode 100644 index 000000000..d12cdf7fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/bits/user.h @@ -0,0 +1,16 @@ +struct user_regs_struct { + unsigned long long regs[31]; + unsigned long long sp; + unsigned long long pc; + unsigned long long pstate; +}; + +struct user_fpsimd_struct { + long double vregs[32]; + unsigned int fpsr; + unsigned int fpcr; +}; + +#define ELF_NREG 34 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NREG]; +typedef struct user_fpsimd_struct elf_fpregset_t; diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/crt_arch.h b/vendor/modernc.org/libc/musl/arch/aarch64/crt_arch.h new file mode 100644 index 000000000..b64fb3dd6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/crt_arch.h @@ -0,0 +1,15 @@ +__asm__( +".text \n" +".global " START "\n" +".type " START ",%function\n" +START ":\n" +" mov x29, #0\n" +" mov x30, #0\n" +" mov x0, sp\n" +".weak _DYNAMIC\n" +".hidden _DYNAMIC\n" +" adrp x1, _DYNAMIC\n" +" add x1, x1, #:lo12:_DYNAMIC\n" +" and sp, x0, #-16\n" +" b " START "_c\n" +); diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/fp_arch.h b/vendor/modernc.org/libc/musl/arch/aarch64/fp_arch.h new file mode 100644 index 000000000..f3d445b95 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/fp_arch.h @@ -0,0 +1,25 @@ +#define fp_barrierf fp_barrierf +static inline float fp_barrierf(float x) +{ + __asm__ __volatile__ ("" : "+w"(x)); + return x; +} + +#define fp_barrier fp_barrier +static inline double fp_barrier(double x) +{ + __asm__ __volatile__ ("" : "+w"(x)); + return x; +} + +#define fp_force_evalf fp_force_evalf +static inline void fp_force_evalf(float x) +{ + __asm__ __volatile__ ("" : "+w"(x)); +} + +#define fp_force_eval fp_force_eval +static inline void fp_force_eval(double x) +{ + __asm__ __volatile__ ("" : "+w"(x)); +} diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/kstat.h b/vendor/modernc.org/libc/musl/arch/aarch64/kstat.h new file mode 100644 index 000000000..92625f363 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + unsigned long __pad; + off_t st_size; + blksize_t st_blksize; + int __pad2; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/aarch64/pthread_arch.h new file mode 100644 index 000000000..e64b126d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/pthread_arch.h @@ -0,0 +1,12 @@ +static inline struct pthread *__pthread_self() +{ + char *self; + __asm__ ("mrs %0,tpidr_el0" : "=r"(self)); + return (void*)(self - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 16 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) + +#define MC_PC pc diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/reloc.h b/vendor/modernc.org/libc/musl/arch/aarch64/reloc.h new file mode 100644 index 000000000..b1b68c725 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/reloc.h @@ -0,0 +1,24 @@ +#if __BYTE_ORDER == __BIG_ENDIAN +#define ENDIAN_SUFFIX "_be" +#else +#define ENDIAN_SUFFIX "" +#endif + +#define LDSO_ARCH "aarch64" ENDIAN_SUFFIX + +#define NO_LEGACY_INITFINI + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_AARCH64_ABS64 +#define REL_GOT R_AARCH64_GLOB_DAT +#define REL_PLT R_AARCH64_JUMP_SLOT +#define REL_RELATIVE R_AARCH64_RELATIVE +#define REL_COPY R_AARCH64_COPY +#define REL_DTPMOD R_AARCH64_TLS_DTPMOD64 +#define REL_DTPOFF R_AARCH64_TLS_DTPREL64 +#define REL_TPOFF R_AARCH64_TLS_TPREL64 +#define REL_TLSDESC R_AARCH64_TLSDESC + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov sp,%1 ; br %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/aarch64/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/aarch64/syscall_arch.h new file mode 100644 index 000000000..8019a6958 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/aarch64/syscall_arch.h @@ -0,0 +1,78 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define __asm_syscall(...) do { \ + __asm__ __volatile__ ( "svc 0" \ + : "=r"(x0) : __VA_ARGS__ : "memory", "cc"); \ + return x0; \ + } while (0) + +inline long __syscall0(long n) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0"); + __asm_syscall("r"(x8)); +} + +inline long __syscall1(long n, long a) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + __asm_syscall("r"(x8), "0"(x0)); +} + +inline long __syscall2(long n, long a, long b) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + register long x1 __asm__("x1") = b; + __asm_syscall("r"(x8), "0"(x0), "r"(x1)); +} + +inline long __syscall3(long n, long a, long b, long c) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + register long x1 __asm__("x1") = b; + register long x2 __asm__("x2") = c; + __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2)); +} + +inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + register long x1 __asm__("x1") = b; + register long x2 __asm__("x2") = c; + register long x3 __asm__("x3") = d; + __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3)); +} + +inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + register long x1 __asm__("x1") = b; + register long x2 __asm__("x2") = c; + register long x3 __asm__("x3") = d; + register long x4 __asm__("x4") = e; + __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4)); +} + +inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long x8 __asm__("x8") = n; + register long x0 __asm__("x0") = a; + register long x1 __asm__("x1") = b; + register long x2 __asm__("x2") = c; + register long x3 __asm__("x3") = d; + register long x4 __asm__("x4") = e; + register long x5 __asm__("x5") = f; + __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4), "r"(x5)); +} + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__kernel_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6.39" + +#define IPC_64 0 diff --git a/vendor/modernc.org/libc/musl/arch/arm/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/arm/atomic_arch.h new file mode 100644 index 000000000..a322618c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/atomic_arch.h @@ -0,0 +1,109 @@ +#include "libc.h" + +#if __ARM_ARCH_4__ || __ARM_ARCH_4T__ || __ARM_ARCH == 4 +#define BLX "mov lr,pc\n\tbx" +#else +#define BLX "blx" +#endif + +extern hidden uintptr_t __a_cas_ptr, __a_barrier_ptr; + +#if ((__ARM_ARCH_6__ || __ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ + || __ARM_ARCH_6T2__ || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 + +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ("ldrex %0, %1" : "=r"(v) : "Q"(*p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ("strex %0,%2,%1" : "=&r"(r), "=Q"(*p) : "r"(v) : "memory"); + return !r; +} + +#if __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("dmb ish" : : : "memory"); +} + +#endif + +#define a_pre_llsc a_barrier +#define a_post_llsc a_barrier + +#else + +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ("TODO"); + //TODO for (;;) { + //TODO register int r0 __asm__("r0") = t; + //TODO register int r1 __asm__("r1") = s; + //TODO register volatile int *r2 __asm__("r2") = p; + //TODO register uintptr_t r3 __asm__("r3") = __a_cas_ptr; + //TODO int old; + //TODO __asm__ __volatile__ ( + //TODO BLX " r3" + //TODO : "+r"(r0), "+r"(r3) : "r"(r1), "r"(r2) + //TODO : "memory", "lr", "ip", "cc" ); + //TODO if (!r0) return t; + //TODO if ((old=*p)!=t) return old; + //TODO } +} + +#endif + +#ifndef a_barrier +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("TODO"); + //TODO register uintptr_t ip __asm__("ip") = __a_barrier_ptr; + //TODO __asm__ __volatile__( BLX " ip" : "+r"(ip) : : "memory", "cc", "lr" ); +} +#endif + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__( +#ifndef __thumb__ + ".word 0xe7f000f0" +#else + ".short 0xdeff" +#endif + : : : "memory"); +} + +#if __ARM_ARCH >= 5 && (!__thumb__ || __thumb2__) + +#define a_clz_32 a_clz_32 +static inline int a_clz_32(uint32_t x) +{ + __asm__ ("clz %0, %1" : "=r"(x) : "r"(x)); + return x; +} + +#if __ARM_ARCH_6T2__ || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 + +#define a_ctz_32 a_ctz_32 +static inline int a_ctz_32(uint32_t x) +{ + uint32_t xr; + __asm__ ("rbit %0, %1" : "=r"(xr) : "r"(x)); + return a_clz_32(xr); +} + +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/arm/bits/fcntl.h new file mode 100644 index 000000000..4cb1753b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 0200000 +#define O_LARGEFILE 0400000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020040000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/arm/bits/fenv.h new file mode 100644 index 000000000..d85fc86d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/fenv.h @@ -0,0 +1,23 @@ +#ifndef __ARM_PCS_VFP +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else +#define FE_INVALID 1 +#define FE_DIVBYZERO 2 +#define FE_OVERFLOW 4 +#define FE_UNDERFLOW 8 +#define FE_INEXACT 16 +#define FE_ALL_EXCEPT 31 +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x800000 +#define FE_UPWARD 0x400000 +#define FE_TOWARDZERO 0xc00000 +#endif + +typedef unsigned long fexcept_t; + +typedef struct { + unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/float.h b/vendor/modernc.org/libc/musl/arch/arm/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/arm/bits/hwcap.h new file mode 100644 index 000000000..a3d87312d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/hwcap.h @@ -0,0 +1,53 @@ +#define HWCAP_SWP (1 << 0) +#define HWCAP_HALF (1 << 1) +#define HWCAP_THUMB (1 << 2) +#define HWCAP_26BIT (1 << 3) +#define HWCAP_FAST_MULT (1 << 4) +#define HWCAP_FPA (1 << 5) +#define HWCAP_VFP (1 << 6) +#define HWCAP_EDSP (1 << 7) +#define HWCAP_JAVA (1 << 8) +#define HWCAP_IWMMXT (1 << 9) +#define HWCAP_CRUNCH (1 << 10) +#define HWCAP_THUMBEE (1 << 11) +#define HWCAP_NEON (1 << 12) +#define HWCAP_VFPv3 (1 << 13) +#define HWCAP_VFPv3D16 (1 << 14) +#define HWCAP_TLS (1 << 15) +#define HWCAP_VFPv4 (1 << 16) +#define HWCAP_IDIVA (1 << 17) +#define HWCAP_IDIVT (1 << 18) +#define HWCAP_VFPD32 (1 << 19) +#define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) +#define HWCAP_LPAE (1 << 20) +#define HWCAP_EVTSTRM (1 << 21) + +#define HWCAP2_AES (1 << 0) +#define HWCAP2_PMULL (1 << 1) +#define HWCAP2_SHA1 (1 << 2) +#define HWCAP2_SHA2 (1 << 3) +#define HWCAP2_CRC32 (1 << 4) + +#define HWCAP_ARM_SWP (1 << 0) +#define HWCAP_ARM_HALF (1 << 1) +#define HWCAP_ARM_THUMB (1 << 2) +#define HWCAP_ARM_26BIT (1 << 3) +#define HWCAP_ARM_FAST_MULT (1 << 4) +#define HWCAP_ARM_FPA (1 << 5) +#define HWCAP_ARM_VFP (1 << 6) +#define HWCAP_ARM_EDSP (1 << 7) +#define HWCAP_ARM_JAVA (1 << 8) +#define HWCAP_ARM_IWMMXT (1 << 9) +#define HWCAP_ARM_CRUNCH (1 << 10) +#define HWCAP_ARM_THUMBEE (1 << 11) +#define HWCAP_ARM_NEON (1 << 12) +#define HWCAP_ARM_VFPv3 (1 << 13) +#define HWCAP_ARM_VFPv3D16 (1 << 14) +#define HWCAP_ARM_TLS (1 << 15) +#define HWCAP_ARM_VFPv4 (1 << 16) +#define HWCAP_ARM_IDIVA (1 << 17) +#define HWCAP_ARM_IDIVT (1 << 18) +#define HWCAP_ARM_VFPD32 (1 << 19) +#define HWCAP_ARM_IDIV (HWCAP_ARM_IDIVA | HWCAP_ARM_IDIVT) +#define HWCAP_ARM_LPAE (1 << 20) +#define HWCAP_ARM_EVTSTRM (1 << 21) diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/ioctl_fix.h b/vendor/modernc.org/libc/musl/arch/arm/bits/ioctl_fix.h new file mode 100644 index 000000000..ebb383daf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/ioctl_fix.h @@ -0,0 +1,2 @@ +#undef FIOQSIZE +#define FIOQSIZE 0x545e diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/arm/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/msg.h b/vendor/modernc.org/libc/musl/arch/arm/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/posix.h b/vendor/modernc.org/libc/musl/arch/arm/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/arm/bits/ptrace.h new file mode 100644 index 000000000..9556ef4b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/ptrace.h @@ -0,0 +1,25 @@ +#define PTRACE_GETWMMXREGS 18 +#define PTRACE_SETWMMXREGS 19 +#define PTRACE_GET_THREAD_AREA 22 +#define PTRACE_SET_SYSCALL 23 +#define PTRACE_GETCRUNCHREGS 25 +#define PTRACE_SETCRUNCHREGS 26 +#define PTRACE_GETVFPREGS 27 +#define PTRACE_SETVFPREGS 28 +#define PTRACE_GETHBPREGS 29 +#define PTRACE_SETHBPREGS 30 +#define PTRACE_GETFDPIC 31 +#define PTRACE_GETFDPIC_EXEC 0 +#define PTRACE_GETFDPIC_INTERP 1 + +#define PT_GETWMMXREGS PTRACE_GETWMMXREGS +#define PT_SETWMMXREGS PTRACE_SETWMMXREGS +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA +#define PT_SET_SYSCALL PTRACE_SET_SYSCALL +#define PT_GETCRUNCHREGS PTRACE_GETCRUNCHREGS +#define PT_SETCRUNCHREGS PTRACE_SETCRUNCHREGS +#define PT_GETVFPREGS PTRACE_GETVFPREGS +#define PT_SETVFPREGS PTRACE_SETVFPREGS +#define PT_GETHBPREGS PTRACE_GETHBPREGS +#define PT_SETHBPREGS PTRACE_SETHBPREGS +#define PT_GETFDPIC PTRACE_GETFDPIC diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/reg.h b/vendor/modernc.org/libc/musl/arch/arm/bits/reg.h new file mode 100644 index 000000000..0c7bffca0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +/* FIXME */ diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/sem.h b/vendor/modernc.org/libc/musl/arch/arm/bits/sem.h new file mode 100644 index 000000000..544e3d2a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/sem.h @@ -0,0 +1,18 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/arm/bits/setjmp.h new file mode 100644 index 000000000..55e3a95bb --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[32]; diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/shm.h b/vendor/modernc.org/libc/musl/arch/arm/bits/shm.h new file mode 100644 index 000000000..725fb4696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/signal.h b/vendor/modernc.org/libc/musl/arch/arm/bits/signal.h new file mode 100644 index 000000000..3c7898567 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/signal.h @@ -0,0 +1,86 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef int greg_t, gregset_t[18]; +typedef struct sigcontext { + unsigned long trap_no, error_code, oldmask; + unsigned long arm_r0, arm_r1, arm_r2, arm_r3; + unsigned long arm_r4, arm_r5, arm_r6, arm_r7; + unsigned long arm_r8, arm_r9, arm_r10, arm_fp; + unsigned long arm_ip, arm_sp, arm_lr, arm_pc; + unsigned long arm_cpsr, fault_address; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[21]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long long uc_regspace[64]; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/stat.h b/vendor/modernc.org/libc/musl/arch/arm/bits/stat.h new file mode 100644 index 000000000..5d7828cf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + ino_t st_ino; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/arm/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/arm/bits/user.h b/vendor/modernc.org/libc/musl/arch/arm/bits/user.h new file mode 100644 index 000000000..3e5a4d21d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/bits/user.h @@ -0,0 +1,36 @@ +typedef struct user_fpregs { + struct fp_reg { + unsigned sign1:1; + unsigned unused:15; + unsigned sign2:1; + unsigned exponent:14; + unsigned j:1; + unsigned mantissa1:31; + unsigned mantissa0:32; + } fpregs[8]; + unsigned fpsr:32; + unsigned fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; +} elf_fpregset_t; + +struct user_regs { + unsigned long uregs[18]; +}; +#define ELF_NGREG 18 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct user { + struct user_regs regs; + int u_fpvalid; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long start_code, start_stack; + long signal; + int reserved; + struct user_regs *u_ar0; + unsigned long magic; + char u_comm[32]; + int u_debugreg[8]; + struct user_fpregs u_fp; + struct user_fpregs *u_fp0; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/crt_arch.h b/vendor/modernc.org/libc/musl/arch/arm/crt_arch.h new file mode 100644 index 000000000..99508b1db --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/crt_arch.h @@ -0,0 +1,18 @@ +__asm__( +".text \n" +".global " START " \n" +".type " START ",%function \n" +START ": \n" +" mov fp, #0 \n" +" mov lr, #0 \n" +" ldr a2, 1f \n" +" add a2, pc, a2 \n" +" mov a1, sp \n" +"2: and ip, a1, #-16 \n" +" mov sp, ip \n" +" bl " START "_c \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +".align 2 \n" +"1: .word _DYNAMIC-2b \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/arm/kstat.h b/vendor/modernc.org/libc/musl/arch/arm/kstat.h new file mode 100644 index 000000000..af449c950 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + ino_t st_ino; +}; diff --git a/vendor/modernc.org/libc/musl/arch/arm/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/arm/pthread_arch.h new file mode 100644 index 000000000..e689ea212 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/pthread_arch.h @@ -0,0 +1,33 @@ +#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ + || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 + +static inline pthread_t __pthread_self() +{ + char *p; + __asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) ); + return (void *)(p-sizeof(struct pthread)); +} + +#else + +#if __ARM_ARCH_4__ || __ARM_ARCH_4T__ || __ARM_ARCH == 4 +#define BLX "mov lr,pc\n\tbx" +#else +#define BLX "blx" +#endif + +static inline pthread_t __pthread_self() +{ + extern hidden uintptr_t __a_gettp_ptr; + register uintptr_t p __asm__("r0"); + __asm__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" ); + return (void *)(p-sizeof(struct pthread)); +} + +#endif + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 8 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) + +#define MC_PC arm_pc diff --git a/vendor/modernc.org/libc/musl/arch/arm/reloc.h b/vendor/modernc.org/libc/musl/arch/arm/reloc.h new file mode 100644 index 000000000..d091d2ad9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/reloc.h @@ -0,0 +1,32 @@ +#if __BYTE_ORDER == __BIG_ENDIAN +#define ENDIAN_SUFFIX "eb" +#else +#define ENDIAN_SUFFIX "" +#endif + +#if __ARM_PCS_VFP +#define FP_SUFFIX "hf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "arm" ENDIAN_SUFFIX FP_SUFFIX + +#define NO_LEGACY_INITFINI + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_ARM_ABS32 +#define REL_GOT R_ARM_GLOB_DAT +#define REL_PLT R_ARM_JUMP_SLOT +#define REL_RELATIVE R_ARM_RELATIVE +#define REL_COPY R_ARM_COPY +#define REL_DTPMOD R_ARM_TLS_DTPMOD32 +#define REL_DTPOFF R_ARM_TLS_DTPOFF32 +#define REL_TPOFF R_ARM_TLS_TPOFF32 +#define REL_TLSDESC R_ARM_TLS_DESC + +#define TLSDESC_BACKWARDS + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/arm/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/arm/syscall_arch.h new file mode 100644 index 000000000..66edac247 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/arm/syscall_arch.h @@ -0,0 +1,103 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + +#ifdef __thumb__ + +/* Avoid use of r7 in asm constraints when producing thumb code, + * since it's reserved as frame pointer and might not be supported. */ +#define __ASM____R7__ +#define __asm_syscall(...) do { \ + __asm__ __volatile__ ( "mov %1,r7 ; mov r7,%2 ; svc 0 ; mov r7,%1" \ + : "=r"(r0), "=&r"((int){0}) : __VA_ARGS__ : "memory"); \ + return r0; \ + } while (0) + +#else + +#define __ASM____R7__ __asm__("r7") +#define __asm_syscall(...) do { \ + __asm__ __volatile__ ( "svc 0" \ + : "=r"(r0) : __VA_ARGS__ : "memory"); \ + return r0; \ + } while (0) +#endif + +/* For thumb2, we can allow 8-bit immediate syscall numbers, saving a + * register in the above dance around r7. Does not work for thumb1 where + * only movs, not mov, supports immediates, and we can't use movs because + * it doesn't support high regs. */ +#ifdef __thumb2__ +#define R7_OPERAND "rI"(r7) +#else +#define R7_OPERAND "r"(r7) +#endif + +inline long __syscall0(long n) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0"); + __asm_syscall(R7_OPERAND); +} + +inline long __syscall1(long n, long a) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + __asm_syscall(R7_OPERAND, "0"(r0)); +} + +inline long __syscall2(long n, long a, long b) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1)); +} + +inline long __syscall3(long n, long a, long b, long c) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2)); +} + +inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + register long r3 __asm__("r3") = d; + __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3)); +} + +inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + register long r3 __asm__("r3") = d; + register long r4 __asm__("r4") = e; + __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4)); +} + +inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r7 __ASM____R7__ = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + register long r3 __asm__("r3") = d; + register long r4 __asm__("r4") = e; + register long r5 __asm__("r5") = f; + __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5)); +} + +#define SYSCALL_FADVISE_6_ARG + +#define SYSCALL_IPC_BROKEN_MODE diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/dirent.h b/vendor/modernc.org/libc/musl/arch/generic/bits/dirent.h new file mode 100644 index 000000000..c845fe82d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/dirent.h @@ -0,0 +1,11 @@ +#define _DIRENT_HAVE_D_RECLEN +#define _DIRENT_HAVE_D_OFF +#define _DIRENT_HAVE_D_TYPE + +struct dirent { + ino_t d_ino; + off_t d_off; + unsigned short d_reclen; + unsigned char d_type; + char d_name[256]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/errno.h b/vendor/modernc.org/libc/musl/arch/generic/bits/errno.h new file mode 100644 index 000000000..d2e1eeee0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK EDEADLK +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +#define ERFKILL 132 +#define EHWPOISON 133 diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/generic/bits/fcntl.h new file mode 100644 index 000000000..ae233cc00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0100000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/generic/bits/fenv.h new file mode 100644 index 000000000..edbdea2a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/fenv.h @@ -0,0 +1,10 @@ +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 + +typedef unsigned long fexcept_t; + +typedef struct { + unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/generic/bits/hwcap.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/io.h b/vendor/modernc.org/libc/musl/arch/generic/bits/io.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/generic/bits/ioctl.h new file mode 100644 index 000000000..60ae8b850 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/ioctl.h @@ -0,0 +1,115 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 0U +#define _IOC_WRITE 1U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define TCGETS 0x5401 +#define TCSETS 0x5402 +#define TCSETSW 0x5403 +#define TCSETSF 0x5404 +#define TCGETA 0x5405 +#define TCSETA 0x5406 +#define TCSETAW 0x5407 +#define TCSETAF 0x5408 +#define TCSBRK 0x5409 +#define TCXONC 0x540A +#define TCFLSH 0x540B +#define TIOCEXCL 0x540C +#define TIOCNXCL 0x540D +#define TIOCSCTTY 0x540E +#define TIOCGPGRP 0x540F +#define TIOCSPGRP 0x5410 +#define TIOCOUTQ 0x5411 +#define TIOCSTI 0x5412 +#define TIOCGWINSZ 0x5413 +#define TIOCSWINSZ 0x5414 +#define TIOCMGET 0x5415 +#define TIOCMBIS 0x5416 +#define TIOCMBIC 0x5417 +#define TIOCMSET 0x5418 +#define TIOCGSOFTCAR 0x5419 +#define TIOCSSOFTCAR 0x541A +#define FIONREAD 0x541B +#define TIOCINQ FIONREAD +#define TIOCLINUX 0x541C +#define TIOCCONS 0x541D +#define TIOCGSERIAL 0x541E +#define TIOCSSERIAL 0x541F +#define TIOCPKT 0x5420 +#define FIONBIO 0x5421 +#define TIOCNOTTY 0x5422 +#define TIOCSETD 0x5423 +#define TIOCGETD 0x5424 +#define TCSBRKP 0x5425 +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x5429 +#define TIOCGRS485 0x542E +#define TIOCSRS485 0x542F +#define TIOCGPTN 0x80045430 +#define TIOCSPTLCK 0x40045431 +#define TIOCGDEV 0x80045432 +#define TCGETX 0x5432 +#define TCSETX 0x5433 +#define TCSETXF 0x5434 +#define TCSETXW 0x5435 +#define TIOCSIG 0x40045436 +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT 0x80045438 +#define TIOCGPTLCK 0x80045439 +#define TIOCGEXCL 0x80045440 +#define TIOCGPTPEER 0x5441 +#define TIOCGISO7816 0x80285442 +#define TIOCSISO7816 0xc0285443 + +#define FIONCLEX 0x5450 +#define FIOCLEX 0x5451 +#define FIOASYNC 0x5452 +#define TIOCSERCONFIG 0x5453 +#define TIOCSERGWILD 0x5454 +#define TIOCSERSWILD 0x5455 +#define TIOCGLCKTRMIOS 0x5456 +#define TIOCSLCKTRMIOS 0x5457 +#define TIOCSERGSTRUCT 0x5458 +#define TIOCSERGETLSR 0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT 0x545C +#define TIOCGICOUNT 0x545D +#define FIOQSIZE 0x5460 + +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define FIOSETOWN 0x8901 +#define SIOCSPGRP 0x8902 +#define FIOGETOWN 0x8903 +#define SIOCGPGRP 0x8904 +#define SIOCATMARK 0x8905 +#if __LONG_MAX == 0x7fffffff +#define SIOCGSTAMP _IOR(0x89, 6, char[16]) +#define SIOCGSTAMPNS _IOR(0x89, 7, char[16]) +#else +#define SIOCGSTAMP 0x8906 +#define SIOCGSTAMPNS 0x8907 +#endif + +#include diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/ioctl_fix.h b/vendor/modernc.org/libc/musl/arch/generic/bits/ioctl_fix.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/ipc.h b/vendor/modernc.org/libc/musl/arch/generic/bits/ipc.h new file mode 100644 index 000000000..40d6f3a25 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/ipc.h @@ -0,0 +1,11 @@ +struct ipc_perm { + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + long __pad1; + long __pad2; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/generic/bits/ipcstat.h new file mode 100644 index 000000000..0018ad1e2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 2 diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/kd.h b/vendor/modernc.org/libc/musl/arch/generic/bits/kd.h new file mode 100644 index 000000000..33b873f49 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/kd.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/limits.h b/vendor/modernc.org/libc/musl/arch/generic/bits/limits.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/link.h b/vendor/modernc.org/libc/musl/arch/generic/bits/link.h new file mode 100644 index 000000000..4a94d8f89 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/link.h @@ -0,0 +1 @@ +typedef uint32_t Elf_Symndx; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/mman.h b/vendor/modernc.org/libc/musl/arch/generic/bits/mman.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/msg.h b/vendor/modernc.org/libc/musl/arch/generic/bits/msg.h new file mode 100644 index 000000000..2e23ca27f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/msg.h @@ -0,0 +1,12 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/poll.h b/vendor/modernc.org/libc/musl/arch/generic/bits/poll.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/generic/bits/ptrace.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/resource.h b/vendor/modernc.org/libc/musl/arch/generic/bits/resource.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/sem.h b/vendor/modernc.org/libc/musl/arch/generic/bits/sem.h new file mode 100644 index 000000000..5184eb597 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/sem.h @@ -0,0 +1,14 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t sem_ctime; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + long __unused3; + long __unused4; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/shm.h b/vendor/modernc.org/libc/musl/arch/generic/bits/shm.h new file mode 100644 index 000000000..8d1937819 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/shm.h @@ -0,0 +1,24 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/socket.h b/vendor/modernc.org/libc/musl/arch/generic/bits/socket.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/soundcard.h b/vendor/modernc.org/libc/musl/arch/generic/bits/soundcard.h new file mode 100644 index 000000000..fade986fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/soundcard.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/generic/bits/statfs.h new file mode 100644 index 000000000..f103f4e4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/statfs.h @@ -0,0 +1,7 @@ +struct statfs { + unsigned long f_type, f_bsize; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree; + fsid_t f_fsid; + unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/termios.h b/vendor/modernc.org/libc/musl/arch/generic/bits/termios.h new file mode 100644 index 000000000..124f71d20 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/termios.h @@ -0,0 +1,166 @@ +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +#define VTIME 5 +#define VMIN 6 +#define VSWTC 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VEOL 11 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOL2 16 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 +#endif + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 0010017 +#define CBAUDEX 0010000 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0000004 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 +#define EXTPROC 0200000 + +#define XTABS 0014000 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/generic/bits/vt.h b/vendor/modernc.org/libc/musl/arch/generic/bits/vt.h new file mode 100644 index 000000000..834abfbc8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/generic/bits/vt.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/arch/generic/fp_arch.h b/vendor/modernc.org/libc/musl/arch/generic/fp_arch.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/i386/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/i386/atomic_arch.h new file mode 100644 index 000000000..047fb68dd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/atomic_arch.h @@ -0,0 +1,108 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ( + "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +#define a_swap a_swap +static inline int a_swap(volatile int *p, int v) +{ + __asm__ __volatile__( + "xchg %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; xadd %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_and a_and +static inline void a_and(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_or a_or +static inline void a_or(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_inc a_inc +static inline void a_inc(volatile int *p) +{ + __asm__ __volatile__( + "lock ; incl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_dec a_dec +static inline void a_dec(volatile int *p) +{ + __asm__ __volatile__( + "lock ; decl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_store a_store +static inline void a_store(volatile int *p, int x) +{ + __asm__ __volatile__( + "mov %1, %0 ; lock ; orl $0,(%%esp)" + : "=m"(*p) : "r"(x) : "memory" ); +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__( "" : : : "memory" ); +} + +#define a_spin a_spin +static inline void a_spin() +{ + __asm__ __volatile__( "pause" : : : "memory" ); +} + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__( "hlt" : : : "memory" ); +} + +#define a_ctz_64 a_ctz_64 +static inline int a_ctz_64(uint64_t x) +{ + int r; + __asm__( "bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; add $32,%0\n1:" + : "=&r"(r) : "r"((unsigned)x), "r"((unsigned)(x>>32)) ); + return r; +} + +#define a_ctz_32 a_ctz_32 +static inline int a_ctz_32(uint32_t x) +{ + int r; + __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); + return r; +} + +#define a_clz_32 a_clz_32 +static inline int a_clz_32(uint32_t x) +{ + __asm__( "bsr %1,%0 ; xor $31,%0" : "=r"(x) : "r"(x) ); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/i386/bits/fenv.h new file mode 100644 index 000000000..4430009e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/fenv.h @@ -0,0 +1,33 @@ +#define FE_INVALID 1 +#define __FE_DENORM 2 +#define FE_DIVBYZERO 4 +#define FE_OVERFLOW 8 +#define FE_UNDERFLOW 16 +#define FE_INEXACT 32 + +#define FE_ALL_EXCEPT 63 + +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x400 +#define FE_UPWARD 0x800 +#define FE_TOWARDZERO 0xc00 + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned short __control_word; + unsigned short __unused1; + unsigned short __status_word; + unsigned short __unused2; + unsigned short __tags; + unsigned short __unused3; + unsigned int __eip; + unsigned short __cs_selector; + unsigned int __opcode:11; + unsigned int __unused4:5; + unsigned int __data_offset; + unsigned short __data_selector; + unsigned short __unused5; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/float.h b/vendor/modernc.org/libc/musl/arch/i386/bits/float.h new file mode 100644 index 000000000..d78ec34d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/float.h @@ -0,0 +1,35 @@ +#ifdef __FLT_EVAL_METHOD__ +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#else +#define FLT_EVAL_METHOD 2 +#endif + +// #define LDBL_TRUE_MIN 3.6451995318824746025e-4951L +// #define LDBL_MIN 3.3621031431120935063e-4932L +// #define LDBL_MAX 1.1897314953572317650e+4932L +// #define LDBL_EPSILON 1.0842021724855044340e-19L +// +// #define LDBL_MANT_DIG 64 +// #define LDBL_MIN_EXP (-16381) +// #define LDBL_MAX_EXP 16384 +// +// #define LDBL_DIG 18 +// #define LDBL_MIN_10_EXP (-4931) +// #define LDBL_MAX_10_EXP 4932 +// +// #define DECIMAL_DIG 21 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/io.h b/vendor/modernc.org/libc/musl/arch/i386/bits/io.h new file mode 100644 index 000000000..dd5bddc96 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/io.h @@ -0,0 +1,77 @@ +static __inline void outb(unsigned char __val, unsigned short __port) +{ + __asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outw(unsigned short __val, unsigned short __port) +{ + __asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outl(unsigned int __val, unsigned short __port) +{ + __asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline unsigned char inb(unsigned short __port) +{ + unsigned char __val; + __asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned short inw(unsigned short __port) +{ + unsigned short __val; + __asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned int inl(unsigned short __port) +{ + unsigned int __val; + __asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsb" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsw" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsl" + : "+S" (__buf), "+c"(__n) + : "d" (__port)); +} + +static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insb" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insw" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insl" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/i386/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/limits.h b/vendor/modernc.org/libc/musl/arch/i386/bits/limits.h new file mode 100644 index 000000000..07743b6fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 4096 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/mman.h b/vendor/modernc.org/libc/musl/arch/i386/bits/mman.h new file mode 100644 index 000000000..ba2d6f7a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/mman.h @@ -0,0 +1 @@ +#define MAP_32BIT 0x40 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/msg.h b/vendor/modernc.org/libc/musl/arch/i386/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/posix.h b/vendor/modernc.org/libc/musl/arch/i386/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/i386/bits/ptrace.h new file mode 100644 index 000000000..7d0efbf34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/ptrace.h @@ -0,0 +1,11 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_SYSEMU 31 +#define PTRACE_SYSEMU_SINGLESTEP 32 +#define PTRACE_SINGLEBLOCK 33 + +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA +#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA +#define PT_SYSEMU PTRACE_SYSEMU +#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/reg.h b/vendor/modernc.org/libc/musl/arch/i386/bits/reg.h new file mode 100644 index 000000000..8bc2582d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/reg.h @@ -0,0 +1,19 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +#define EBX 0 +#define ECX 1 +#define EDX 2 +#define ESI 3 +#define EDI 4 +#define EBP 5 +#define EAX 6 +#define DS 7 +#define ES 8 +#define FS 9 +#define GS 10 +#define ORIG_EAX 11 +#define EIP 12 +#define CS 13 +#define EFL 14 +#define UESP 15 +#define SS 16 diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/sem.h b/vendor/modernc.org/libc/musl/arch/i386/bits/sem.h new file mode 100644 index 000000000..65661542a --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/sem.h @@ -0,0 +1,13 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/i386/bits/setjmp.h new file mode 100644 index 000000000..decd26dca --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[6]; diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/shm.h b/vendor/modernc.org/libc/musl/arch/i386/bits/shm.h new file mode 100644 index 000000000..725fb4696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/signal.h b/vendor/modernc.org/libc/musl/arch/i386/bits/signal.h new file mode 100644 index 000000000..9931ee93e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/signal.h @@ -0,0 +1,142 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#ifdef _GNU_SOURCE +enum { REG_GS = 0 }; +#define REG_GS REG_GS +enum { REG_FS = 1 }; +#define REG_FS REG_FS +enum { REG_ES = 2 }; +#define REG_ES REG_ES +enum { REG_DS = 3 }; +#define REG_DS REG_DS +enum { REG_EDI = 4 }; +#define REG_EDI REG_EDI +enum { REG_ESI = 5 }; +#define REG_ESI REG_ESI +enum { REG_EBP = 6 }; +#define REG_EBP REG_EBP +enum { REG_ESP = 7 }; +#define REG_ESP REG_ESP +enum { REG_EBX = 8 }; +#define REG_EBX REG_EBX +enum { REG_EDX = 9 }; +#define REG_EDX REG_EDX +enum { REG_ECX = 10 }; +#define REG_ECX REG_ECX +enum { REG_EAX = 11 }; +#define REG_EAX REG_EAX +enum { REG_TRAPNO = 12 }; +#define REG_TRAPNO REG_TRAPNO +enum { REG_ERR = 13 }; +#define REG_ERR REG_ERR +enum { REG_EIP = 14 }; +#define REG_EIP REG_EIP +enum { REG_CS = 15 }; +#define REG_CS REG_CS +enum { REG_EFL = 16 }; +#define REG_EFL REG_EFL +enum { REG_UESP = 17 }; +#define REG_UESP REG_UESP +enum { REG_SS = 18 }; +#define REG_SS REG_SS +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef int greg_t, gregset_t[19]; +typedef struct _fpstate { + unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel; + struct { + unsigned short significand[4], exponent; + } _st[8]; + unsigned long status; +} *fpregset_t; +struct sigcontext { + unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh; + unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax; + unsigned long trapno, err, eip; + unsigned short cs, __csh; + unsigned long eflags, esp_at_signal; + unsigned short ss, __ssh; + struct _fpstate *fpstate; + unsigned long oldmask, cr2; +}; +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long oldmask, cr2; +} mcontext_t; +#else +typedef struct { + unsigned __space[22]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long __fpregs_mem[28]; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 + diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/stat.h b/vendor/modernc.org/libc/musl/arch/i386/bits/stat.h new file mode 100644 index 000000000..5d7828cf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + ino_t st_ino; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/i386/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/i386/bits/user.h b/vendor/modernc.org/libc/musl/arch/i386/bits/user.h new file mode 100644 index 000000000..33fea9861 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/bits/user.h @@ -0,0 +1,44 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +typedef struct user_fpregs_struct { + long cwd, swd, twd, fip, fcs, foo, fos, st_space[20]; +} elf_fpregset_t; + +typedef struct user_fpxregs_struct { + unsigned short cwd, swd, twd, fop; + long fip, fcs, foo, fos, mxcsr, reserved; + long st_space[32], xmm_space[32], padding[56]; +} elf_fpxregset_t; + +struct user_regs_struct { + long ebx, ecx, edx, esi, edi, ebp, eax, xds, xes, xfs, xgs; + long orig_eax, eip, xcs, eflags, esp, xss; +}; + +#define ELF_NGREG 17 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct user { + struct user_regs_struct regs; + int u_fpvalid; + struct user_fpregs_struct i387; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_stack; + long signal; + int reserved; + struct user_regs_struct *u_ar0; + struct user_fpregs_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; + int u_debugreg[8]; +}; + +#define PAGE_MASK (~(PAGESIZE-1)) +#define NBPG PAGESIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) diff --git a/vendor/modernc.org/libc/musl/arch/i386/crt_arch.h b/vendor/modernc.org/libc/musl/arch/i386/crt_arch.h new file mode 100644 index 000000000..43c8477a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/crt_arch.h @@ -0,0 +1,16 @@ +__asm__( +".text\n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +".global " START "\n" +START ":\n" +" xor %ebp,%ebp \n" +" mov %esp,%eax \n" +" and $-16,%esp \n" +" push %eax \n" +" push %eax \n" +" call 1f \n" +"1: addl $_DYNAMIC-1b,(%esp) \n" +" push %eax \n" +" call " START "_c \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/i386/kstat.h b/vendor/modernc.org/libc/musl/arch/i386/kstat.h new file mode 100644 index 000000000..af449c950 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + ino_t st_ino; +}; diff --git a/vendor/modernc.org/libc/musl/arch/i386/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/i386/pthread_arch.h new file mode 100644 index 000000000..6f600b9e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/pthread_arch.h @@ -0,0 +1,10 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ ("movl %%gs:0,%0" : "=r" (self) ); + return self; +} + +#define TP_ADJ(p) (p) + +#define MC_PC gregs[REG_EIP] diff --git a/vendor/modernc.org/libc/musl/arch/i386/reloc.h b/vendor/modernc.org/libc/musl/arch/i386/reloc.h new file mode 100644 index 000000000..032f454bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/reloc.h @@ -0,0 +1,23 @@ +#define LDSO_ARCH "i386" + +#define REL_SYMBOLIC R_386_32 +#define REL_OFFSET R_386_PC32 +#define REL_GOT R_386_GLOB_DAT +#define REL_PLT R_386_JMP_SLOT +#define REL_RELATIVE R_386_RELATIVE +#define REL_COPY R_386_COPY +#define REL_DTPMOD R_386_TLS_DTPMOD32 +#define REL_DTPOFF R_386_TLS_DTPOFF32 +#define REL_TPOFF R_386_TLS_TPOFF +#define REL_TPOFF_NEG R_386_TLS_TPOFF32 +#define REL_TLSDESC R_386_TLS_DESC + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov %1,%%esp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + " call 1f\n" \ + "1: addl $" #sym "-.,(%%esp)\n" \ + " pop %0" \ + : "=r"(*fp) : : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/i386/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/i386/syscall_arch.h new file mode 100644 index 000000000..1c7577585 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/i386/syscall_arch.h @@ -0,0 +1,91 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) + +#if SYSCALL_NO_TLS +#define SYSCALL_INSNS "int $128" +#else +#define SYSCALL_INSNS "call *%%gs:16" +#endif + +#define SYSCALL_INSNS_12 "xchg %%ebx,%%edx ; " SYSCALL_INSNS " ; xchg %%ebx,%%edx" +#define SYSCALL_INSNS_34 "xchg %%ebx,%%edi ; " SYSCALL_INSNS " ; xchg %%ebx,%%edi" + +inline long __syscall0(long n) +{ + unsigned long __ret; + __asm__ __volatile__ (SYSCALL_INSNS : "=a"(__ret) : "a"(n) : "memory"); + return __ret; +} + +inline long __syscall1(long n, long a1) +{ + unsigned long __ret; + __asm__ __volatile__ (SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1) : "memory"); + return __ret; +} + +inline long __syscall2(long n, long a1, long a2) +{ + unsigned long __ret; + __asm__ __volatile__ (SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2) : "memory"); + return __ret; +} + +inline long __syscall3(long n, long a1, long a2, long a3) +{ + unsigned long __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + __asm__ __volatile__ (SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3) : "memory"); +#else + __asm__ __volatile__ (SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3) : "memory"); +#endif + return __ret; +} + +inline long __syscall4(long n, long a1, long a2, long a3, long a4) +{ + unsigned long __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + __asm__ __volatile__ (SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +#else + __asm__ __volatile__ (SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +#endif + return __ret; +} + +inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5) +{ + unsigned long __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + __asm__ __volatile__ (SYSCALL_INSNS + : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#else + __asm__ __volatile__ ("pushl %2 ; push %%ebx ; mov 4(%%esp),%%ebx ; " SYSCALL_INSNS " ; pop %%ebx ; add $4,%%esp" + : "=a"(__ret) : "a"(n), "g"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#endif + return __ret; +} + +inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) +{ + unsigned long __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + __asm__ __volatile__ ("pushl %7 ; push %%ebp ; mov 4(%%esp),%%ebp ; " SYSCALL_INSNS " ; pop %%ebp ; add $4,%%esp" + : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "g"(a6) : "memory"); +#else + unsigned long a1a6[2] = { a1, a6 }; + __asm__ __volatile__ ("pushl %1 ; push %%ebx ; push %%ebp ; mov 8(%%esp),%%ebx ; mov 4(%%ebx),%%ebp ; mov (%%ebx),%%ebx ; " SYSCALL_INSNS " ; pop %%ebp ; pop %%ebx ; add $4,%%esp" + : "=a"(__ret) : "g"(&a1a6), "a"(n), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#endif + return __ret; +} + +#define VDSO_USEFUL +#define VDSO_CGT32_SYM "__vdso_clock_gettime" +#define VDSO_CGT32_VER "LINUX_2.6" +#define VDSO_CGT_SYM "__vdso_clock_gettime64" +#define VDSO_CGT_VER "LINUX_2.6" + +#define SYSCALL_USE_SOCKETCALL diff --git a/vendor/modernc.org/libc/musl/arch/m68k/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/m68k/atomic_arch.h new file mode 100644 index 000000000..b369649a1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/atomic_arch.h @@ -0,0 +1,8 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ( + "cas.l %0, %2, (%1)" + : "+d"(t) : "a"(p), "d"(s) : "memory", "cc"); + return t; +} diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/fcntl.h new file mode 100644 index 000000000..f1c8400ff --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 0200000 +#define O_LARGEFILE 0400000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/fenv.h new file mode 100644 index 000000000..c90a4a58a --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/fenv.h @@ -0,0 +1,29 @@ +#if __HAVE_68881__ || __mcffpu__ + +#define FE_INEXACT 8 +#define FE_DIVBYZERO 16 +#define FE_UNDERFLOW 32 +#define FE_OVERFLOW 64 +#define FE_INVALID 128 + +#define FE_ALL_EXCEPT 0xf8 + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 16 +#define FE_DOWNWARD 32 +#define FE_UPWARD 48 + +#else + +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 + +#endif + +typedef unsigned fexcept_t; + +typedef struct { + unsigned __control_register, __status_register, __instruction_address; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/float.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/float.h new file mode 100644 index 000000000..0e6899d58 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/float.h @@ -0,0 +1,39 @@ +#if !__mcffpu__ + +#define FLT_EVAL_METHOD 2 + +#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L +#define LDBL_MIN 1.68105157155604675313e-4932L +#define LDBL_MAX 1.1897314953572317650e+4932L +#define LDBL_EPSILON 1.0842021724855044340e-19L + +#define LDBL_MANT_DIG 64 +#define LDBL_MIN_EXP (-16382) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 18 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 21 + +#else + +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 + +#endif diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/msg.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/posix.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/ptrace.h new file mode 100644 index 000000000..da93e7a72 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/ptrace.h @@ -0,0 +1,2 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SINGLEBLOCK 33 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/reg.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/reg.h new file mode 100644 index 000000000..99201f709 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/reg.h @@ -0,0 +1,45 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +#define PT_D1 0 +#define PT_D2 1 +#define PT_D3 2 +#define PT_D4 3 +#define PT_D5 4 +#define PT_D6 5 +#define PT_D7 6 +#define PT_A0 7 +#define PT_A1 8 +#define PT_A2 9 +#define PT_A3 10 +#define PT_A4 11 +#define PT_A5 12 +#define PT_A6 13 +#define PT_D0 14 +#define PT_USP 15 +#define PT_ORIG_D0 16 +#define PT_SR 17 +#define PT_PC 18 + +#if __mcffpu__ +#define PT_FP0 21 +#define PT_FP1 23 +#define PT_FP2 25 +#define PT_FP3 27 +#define PT_FP4 29 +#define PT_FP5 31 +#define PT_FP6 33 +#define PT_FP7 35 +#else +#define PT_FP0 21 +#define PT_FP1 24 +#define PT_FP2 27 +#define PT_FP3 30 +#define PT_FP4 33 +#define PT_FP5 36 +#define PT_FP6 39 +#define PT_FP7 42 +#endif + +#define PT_FPCR 45 +#define PT_FPSR 46 +#define PT_FPIAR 47 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/sem.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/sem.h new file mode 100644 index 000000000..d88338e69 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/sem.h @@ -0,0 +1,13 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/setjmp.h new file mode 100644 index 000000000..5e091fb49 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[39]; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/shm.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/shm.h new file mode 100644 index 000000000..725fb4696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/signal.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/signal.h new file mode 100644 index 000000000..2c369ca35 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/signal.h @@ -0,0 +1,140 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#ifdef _GNU_SOURCE +enum { R_D0 = 0 }; +#define R_D0 R_D0 +enum { R_D1 = 1 }; +#define R_D1 R_D1 +enum { R_D2 = 2 }; +#define R_D2 R_D2 +enum { R_D3 = 3 }; +#define R_D3 R_D3 +enum { R_D4 = 4 }; +#define R_D4 R_D4 +enum { R_D5 = 5 }; +#define R_D5 R_D5 +enum { R_D6 = 6 }; +#define R_D6 R_D6 +enum { R_D7 = 7 }; +#define R_D7 R_D7 +enum { R_A0 = 8 }; +#define R_A0 R_A0 +enum { R_A1 = 9 }; +#define R_A1 R_A1 +enum { R_A2 = 10 }; +#define R_A2 R_A2 +enum { R_A3 = 11 }; +#define R_A3 R_A3 +enum { R_A4 = 12 }; +#define R_A4 R_A4 +enum { R_A5 = 13 }; +#define R_A5 R_A5 +enum { R_A6 = 14 }; +#define R_A6 R_A6 +enum { R_A7 = 15 }; +#define R_A7 R_A7 +enum { R_SP = 15 }; +#define R_SP R_SP +enum { R_PC = 16 }; +#define R_PC R_PC +enum { R_PS = 17 }; +#define R_PS R_PS +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +struct sigcontext { + unsigned long sc_mask, sc_usp, sc_d0, sc_d1, sc_a0, sc_a1; + unsigned short sc_sr; + unsigned long sc_pc; + unsigned short sc_formatvec; + unsigned long sc_fpregs[6], sc_fpcntl[3]; + unsigned char sc_fpstate[216]; +}; + +typedef int greg_t, gregset_t[18]; +typedef struct { + int f_pcr, f_psr, f_fpiaddr, f_fpregs[8][3]; +} fpregset_t; + +typedef struct { + int version; + gregset_t gregs; + fpregset_t fpregs; +} mcontext_t; +#else +typedef struct { + int __version; + int __gregs[18]; + int __fpregs[27]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + long __reserved[80]; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/stat.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/stat.h new file mode 100644 index 000000000..f87681471 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + short __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + short __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + ino_t st_ino; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/m68k/bits/user.h b/vendor/modernc.org/libc/musl/arch/m68k/bits/user.h new file mode 100644 index 000000000..6a4439196 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/bits/user.h @@ -0,0 +1,38 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +struct user_m68kfp_struct { + unsigned long fpregs[24], fpcntl[3]; +}; + +struct user_regs_struct { + long d1, d2, d3, d4, d5, d6, d7; + long a0, a1, a2, a3, a4, a5, a6; + long d0, usp, orig_d0; + short stkadj, sr; + long pc; + short fmtvec, __pad; +}; + +struct user { + struct user_regs_struct regs; + int u_fpvalid; + struct user_m68kfp_struct m68kfp; + unsigned long u_tsize, u_dsize, u_ssize, start_code, start_stack; + long signal; + int reserved; + unsigned long u_ar0; + struct user_m68kfp_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; +}; + +#define ELF_NGREG 20 +typedef unsigned long elf_greg_t; +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +typedef struct user_m68kfp_struct elf_fpregset_t; + +#define NBPG 4096 +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) diff --git a/vendor/modernc.org/libc/musl/arch/m68k/crt_arch.h b/vendor/modernc.org/libc/musl/arch/m68k/crt_arch.h new file mode 100644 index 000000000..48a42f29e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/crt_arch.h @@ -0,0 +1,14 @@ +__asm__( +".text\n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +".global " START "\n" +START ":\n" +" suba.l %fp,%fp \n" +" movea.l %sp,%a0 \n" +" lea _DYNAMIC-.-8,%a1 \n" +" pea (%pc,%a1) \n" +" pea (%a0) \n" +" lea " START "_c-.-8,%a1 \n" +" jsr (%pc,%a1) \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/m68k/kstat.h b/vendor/modernc.org/libc/musl/arch/m68k/kstat.h new file mode 100644 index 000000000..ac13e272c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + short __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + short __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + ino_t st_ino; +}; diff --git a/vendor/modernc.org/libc/musl/arch/m68k/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/m68k/pthread_arch.h new file mode 100644 index 000000000..02d5b8a08 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/pthread_arch.h @@ -0,0 +1,13 @@ +static inline struct pthread *__pthread_self() +{ + uintptr_t tp = __syscall(SYS_get_thread_area); + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +#define MC_PC gregs[R_PC] diff --git a/vendor/modernc.org/libc/musl/arch/m68k/reloc.h b/vendor/modernc.org/libc/musl/arch/m68k/reloc.h new file mode 100644 index 000000000..f920b39e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/reloc.h @@ -0,0 +1,30 @@ +#if __HAVE_68881__ +#define FP_SUFFIX "" +#elif __mcffpu__ +#define FP_SUFFIX "-fp64" +#else +#define FP_SUFFIX "-sf" +#endif + +#define LDSO_ARCH "m68k" FP_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYMBOLIC R_68K_32 +#define REL_OFFSET R_68K_PC32 +#define REL_GOT R_68K_GLOB_DAT +#define REL_PLT R_68K_JMP_SLOT +#define REL_RELATIVE R_68K_RELATIVE +#define REL_COPY R_68K_COPY +#define REL_DTPMOD R_68K_TLS_DTPMOD32 +#define REL_DTPOFF R_68K_TLS_DTPREL32 +#define REL_TPOFF R_68K_TLS_TPREL32 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "move.l %1,%%sp ; jmp (%0)" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + "lea " #sym "-.-8,%0 \n" \ + "lea (%%pc,%0),%0 \n" \ + : "=a"(*fp) : : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/m68k/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/m68k/syscall_arch.h new file mode 100644 index 000000000..af79c3069 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/m68k/syscall_arch.h @@ -0,0 +1,91 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) + +static __inline long __syscall0(long n) +{ + register unsigned long d0 __asm__("d0") = n; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : + : "memory"); + return d0; +} + +static inline long __syscall1(long n, long a) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1) + : "memory"); + return d0; +} + +static inline long __syscall2(long n, long a, long b) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + register unsigned long d2 __asm__("d2") = b; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1), "r"(d2) + : "memory"); + return d0; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + register unsigned long d2 __asm__("d2") = b; + register unsigned long d3 __asm__("d3") = c; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1), "r"(d2), "r"(d3) + : "memory"); + return d0; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + register unsigned long d2 __asm__("d2") = b; + register unsigned long d3 __asm__("d3") = c; + register unsigned long d4 __asm__("d4") = d; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1), "r"(d2), "r"(d3), "r"(d4) + : "memory"); + return d0; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + register unsigned long d2 __asm__("d2") = b; + register unsigned long d3 __asm__("d3") = c; + register unsigned long d4 __asm__("d4") = d; + register unsigned long d5 __asm__("d5") = e; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1), "r"(d2), "r"(d3), "r"(d4), "r"(d5) + : "memory"); + return d0; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register unsigned long d0 __asm__("d0") = n; + register unsigned long d1 __asm__("d1") = a; + register unsigned long d2 __asm__("d2") = b; + register unsigned long d3 __asm__("d3") = c; + register unsigned long d4 __asm__("d4") = d; + register unsigned long d5 __asm__("d5") = e; + register unsigned long a0 __asm__("a0") = f; + __asm__ __volatile__ ("trap #0" : "+r"(d0) + : "r"(d1), "r"(d2), "r"(d3), "r"(d4), "r"(d5), "r"(a0) + : "memory"); + return d0; +} + +#define SYSCALL_USE_SOCKETCALL +#define SYSCALL_IPC_BROKEN_MODE diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/microblaze/atomic_arch.h new file mode 100644 index 000000000..1152e8cdc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/atomic_arch.h @@ -0,0 +1,53 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + register int old, tmp; + __asm__ __volatile__ ( + " addi %0, r0, 0\n" + "1: lwx %0, %2, r0\n" + " rsubk %1, %0, %3\n" + " bnei %1, 1f\n" + " swx %4, %2, r0\n" + " addic %1, r0, 0\n" + " bnei %1, 1b\n" + "1: " + : "=&r"(old), "=&r"(tmp) + : "r"(p), "r"(t), "r"(s) + : "cc", "memory" ); + return old; +} + +#define a_swap a_swap +static inline int a_swap(volatile int *x, int v) +{ + register int old, tmp; + __asm__ __volatile__ ( + " addi %0, r0, 0\n" + "1: lwx %0, %2, r0\n" + " swx %3, %2, r0\n" + " addic %1, r0, 0\n" + " bnei %1, 1b\n" + "1: " + : "=&r"(old), "=&r"(tmp) + : "r"(x), "r"(v) + : "cc", "memory" ); + return old; +} + +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *x, int v) +{ + register int new, tmp; + __asm__ __volatile__ ( + " addi %0, r0, 0\n" + "1: lwx %0, %2, r0\n" + " addk %0, %0, %3\n" + " swx %0, %2, r0\n" + " addic %1, r0, 0\n" + " bnei %1, 1b\n" + "1: " + : "=&r"(new), "=&r"(tmp) + : "r"(x), "r"(v) + : "cc", "memory" ); + return new-v; +} diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/float.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/msg.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/posix.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/reg.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/reg.h new file mode 100644 index 000000000..0c7bffca0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +/* FIXME */ diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/sem.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/sem.h new file mode 100644 index 000000000..544e3d2a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/sem.h @@ -0,0 +1,18 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/setjmp.h new file mode 100644 index 000000000..b2bd9748c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[18]; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/shm.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/shm.h new file mode 100644 index 000000000..725fb4696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/signal.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/signal.h new file mode 100644 index 000000000..490f83bfd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/signal.h @@ -0,0 +1,88 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t, gregset_t[38]; +typedef struct sigcontext { + struct { + unsigned long r0, r1, r2, r3, r4, r5, r6, r7; + unsigned long r8, r9, r10, r11, r12, r13, r14, r15; + unsigned long r16, r17, r18, r19, r20, r21, r22, r23; + unsigned long r24, r25, r26, r27, r28, r29, r30, r31; + unsigned long pc, msr, ear, esr, fsr; + int pt_mode; + } regs; + unsigned long oldmask; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[39]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/stat.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/stat.h new file mode 100644 index 000000000..8a4d509a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long long __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + int __st_blksize_padding; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + unsigned __unused[2]; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/bits/user.h b/vendor/modernc.org/libc/musl/arch/microblaze/bits/user.h new file mode 100644 index 000000000..dbc25e045 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/bits/user.h @@ -0,0 +1,25 @@ +struct user_fpregs_struct { + long cwd, swd, twd, fip, fcs, foo, fos, st_space[20]; +}; + +struct user_regs_struct { + unsigned grp[32], pc, msr, ear, esr, fsr, btr, pvr[12]; +}; + +struct user { + struct user_regs_struct regs; + int u_fpvalid; + struct user_fpregs_struct elf_fpregset_t; + unsigned long u_tsize, u_dsize, u_ssize, start_code, start_stack; + long signal; + int reserved; + struct user_regs_struct *u_ar0; + struct user_fpregs_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; + int u_debugreg[8]; +}; + +#define ELF_NGREG 50 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef struct user_fpregs_struct elf_fpregset_t; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/crt_arch.h b/vendor/modernc.org/libc/musl/arch/microblaze/crt_arch.h new file mode 100644 index 000000000..bca78bf94 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/crt_arch.h @@ -0,0 +1,17 @@ +__asm__( +".text \n" +".global " START " \n" +".align 2 \n" +START ": \n" +" add r19, r0, r0 \n" +" ori r5, r1, 0 \n" +"1: mfs r6, rpc \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" addik r6, r6, _GLOBAL_OFFSET_TABLE_+8 \n" +" addik r6, r6, _DYNAMIC@GOTOFF \n" +" andi r1, r1, -8 \n" +" addik r1, r1, -8 \n" +" bri " START "_c \n" +" nop \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/kstat.h b/vendor/modernc.org/libc/musl/arch/microblaze/kstat.h new file mode 100644 index 000000000..c14495796 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long long __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + int __st_blksize_padding; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/microblaze/pthread_arch.h new file mode 100644 index 000000000..f6ba8de98 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/pthread_arch.h @@ -0,0 +1,10 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ ("ori %0, r21, 0" : "=r" (self) ); + return self; +} + +#define TP_ADJ(p) (p) + +#define MC_PC regs.pc diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/reloc.h b/vendor/modernc.org/libc/musl/arch/microblaze/reloc.h new file mode 100644 index 000000000..6302c6eea --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/reloc.h @@ -0,0 +1,27 @@ +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "el" +#else +#define ENDIAN_SUFFIX "" +#endif + +#define LDSO_ARCH "microblaze" ENDIAN_SUFFIX + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_MICROBLAZE_32 +#define REL_GOT R_MICROBLAZE_GLOB_DAT +#define REL_PLT R_MICROBLAZE_JUMP_SLOT +#define REL_RELATIVE R_MICROBLAZE_REL +#define REL_COPY R_MICROBLAZE_COPY +#define REL_DTPMOD R_MICROBLAZE_TLSDTPMOD32 +#define REL_DTPOFF R_MICROBLAZE_TLSDTPREL32 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "addik r1,%1,0 ; bra %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym " \n" \ + " mfs %0, rpc \n" \ + " addik %0, %0, _GLOBAL_OFFSET_TABLE_+8 \n" \ + " addik %0, %0, " #sym "@GOTOFF \n" \ + : "=r"(*(fp)) : : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/microblaze/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/microblaze/syscall_arch.h new file mode 100644 index 000000000..169013f80 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/microblaze/syscall_arch.h @@ -0,0 +1,97 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) + +static __inline long __syscall0(long n) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12) + : "memory", "r4"); + return r3; +} + +static inline long __syscall1(long n, long a) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5) + : "memory", "r4"); + return r3; +} + +static inline long __syscall2(long n, long a, long b) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + register unsigned long r6 __asm__("r6") = b; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5), "r"(r6) + : "memory", "r4"); + return r3; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + register unsigned long r6 __asm__("r6") = b; + register unsigned long r7 __asm__("r7") = c; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5), "r"(r6), "r"(r7) + : "memory", "r4"); + return r3; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + register unsigned long r6 __asm__("r6") = b; + register unsigned long r7 __asm__("r7") = c; + register unsigned long r8 __asm__("r8") = d; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8) + : "memory", "r4"); + return r3; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + register unsigned long r6 __asm__("r6") = b; + register unsigned long r7 __asm__("r7") = c; + register unsigned long r8 __asm__("r8") = d; + register unsigned long r9 __asm__("r9") = e; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9) + : "memory", "r4"); + return r3; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register unsigned long r12 __asm__("r12") = n; + register unsigned long r3 __asm__("r3"); + register unsigned long r5 __asm__("r5") = a; + register unsigned long r6 __asm__("r6") = b; + register unsigned long r7 __asm__("r7") = c; + register unsigned long r8 __asm__("r8") = d; + register unsigned long r9 __asm__("r9") = e; + register unsigned long r10 __asm__("r10") = f; + __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) + : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9), "r"(r10) + : "memory", "r4"); + return r3; +} + +#define SYSCALL_IPC_BROKEN_MODE diff --git a/vendor/modernc.org/libc/musl/arch/mips/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/mips/atomic_arch.h new file mode 100644 index 000000000..1248d1770 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/atomic_arch.h @@ -0,0 +1,58 @@ +#if __mips_isa_rev < 6 +#define LLSC_M "m" +#else +#define LLSC_M "ZC" +#endif + +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; +#if __mips < 2 + __asm__ __volatile__ ( + ".set push ; .set mips2\n\t" + "ll %0, %1" + "\n\t.set pop" + : "=r"(v) : "m"(*p)); +#else + __asm__ __volatile__ ( + "ll %0, %1" + : "=r"(v) : LLSC_M(*p)); +#endif + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; +#if __mips < 2 + __asm__ __volatile__ ( + ".set push ; .set mips2\n\t" + "sc %0, %1" + "\n\t.set pop" + : "=r"(r), "=m"(*p) : "0"(v) : "memory"); +#else + __asm__ __volatile__ ( + "sc %0, %1" + : "=r"(r), "="LLSC_M(*p) : "0"(v) : "memory"); +#endif + return r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ +#if __mips < 2 + /* mips2 sync, but using too many directives causes + * gcc not to inline it, so encode with .long instead. */ + __asm__ __volatile__ (".long 0xf" : : : "memory"); +#else + __asm__ __volatile__ ("sync" : : : "memory"); +#endif +} + +#define a_pre_llsc a_barrier +#define a_post_llsc a_barrier + +#undef LLSC_M diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/errno.h b/vendor/modernc.org/libc/musl/arch/mips/bits/errno.h new file mode 100644 index 000000000..1bb91e3d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define ENOMSG 35 +#define EIDRM 36 +#define ECHRNG 37 +#define EL2NSYNC 38 +#define EL3HLT 39 +#define EL3RST 40 +#define ELNRNG 41 +#define EUNATCH 42 +#define ENOCSI 43 +#define EL2HLT 44 +#define EDEADLK 45 +#define ENOLCK 46 +#define EBADE 50 +#define EBADR 51 +#define EXFULL 52 +#define ENOANO 53 +#define EBADRQC 54 +#define EBADSLT 55 +#define EDEADLOCK 56 +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EDOTDOT 73 +#define EMULTIHOP 74 +#define EBADMSG 77 +#define ENAMETOOLONG 78 +#define EOVERFLOW 79 +#define ENOTUNIQ 80 +#define EBADFD 81 +#define EREMCHG 82 +#define ELIBACC 83 +#define ELIBBAD 84 +#define ELIBSCN 85 +#define ELIBMAX 86 +#define ELIBEXEC 87 +#define EILSEQ 88 +#define ENOSYS 89 +#define ELOOP 90 +#define ERESTART 91 +#define ESTRPIPE 92 +#define ENOTEMPTY 93 +#define EUSERS 94 +#define ENOTSOCK 95 +#define EDESTADDRREQ 96 +#define EMSGSIZE 97 +#define EPROTOTYPE 98 +#define ENOPROTOOPT 99 +#define EPROTONOSUPPORT 120 +#define ESOCKTNOSUPPORT 121 +#define EOPNOTSUPP 122 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 123 +#define EAFNOSUPPORT 124 +#define EADDRINUSE 125 +#define EADDRNOTAVAIL 126 +#define ENETDOWN 127 +#define ENETUNREACH 128 +#define ENETRESET 129 +#define ECONNABORTED 130 +#define ECONNRESET 131 +#define ENOBUFS 132 +#define EISCONN 133 +#define ENOTCONN 134 +#define EUCLEAN 135 +#define ENOTNAM 137 +#define ENAVAIL 138 +#define EISNAM 139 +#define EREMOTEIO 140 +#define ESHUTDOWN 143 +#define ETOOMANYREFS 144 +#define ETIMEDOUT 145 +#define ECONNREFUSED 146 +#define EHOSTDOWN 147 +#define EHOSTUNREACH 148 +#define EWOULDBLOCK EAGAIN +#define EALREADY 149 +#define EINPROGRESS 150 +#define ESTALE 151 +#define ECANCELED 158 +#define ENOMEDIUM 159 +#define EMEDIUMTYPE 160 +#define ENOKEY 161 +#define EKEYEXPIRED 162 +#define EKEYREVOKED 163 +#define EKEYREJECTED 164 +#define EOWNERDEAD 165 +#define ENOTRECOVERABLE 166 +#define ERFKILL 167 +#define EHWPOISON 168 +#define EDQUOT 1133 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/mips/bits/fcntl.h new file mode 100644 index 000000000..9fd8c23e2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0400 +#define O_EXCL 02000 +#define O_NOCTTY 04000 +#define O_TRUNC 01000 +#define O_APPEND 0010 +#define O_NONBLOCK 0200 +#define O_DSYNC 0020 +#define O_SYNC 040020 +#define O_RSYNC 040020 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 010000 +#define O_DIRECT 0100000 +#define O_LARGEFILE 020000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 24 +#define F_GETOWN 23 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 33 +#define F_SETLK 34 +#define F_SETLKW 35 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/mips/bits/fenv.h new file mode 100644 index 000000000..589e71c1b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/fenv.h @@ -0,0 +1,25 @@ +#ifdef __mips_soft_float +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else +#define FE_INEXACT 4 +#define FE_UNDERFLOW 8 +#define FE_OVERFLOW 16 +#define FE_DIVBYZERO 32 +#define FE_INVALID 64 + +#define FE_ALL_EXCEPT 124 + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 +#endif + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/float.h b/vendor/modernc.org/libc/musl/arch/mips/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/mips/bits/hwcap.h new file mode 100644 index 000000000..7986deb7f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/hwcap.h @@ -0,0 +1,14 @@ +#define HWCAP_MIPS_R6 (1 << 0) +#define HWCAP_MIPS_MSA (1 << 1) +#define HWCAP_MIPS_CRC32 (1 << 2) +#define HWCAP_MIPS_MIPS16 (1 << 3) +#define HWCAP_MIPS_MDMX (1 << 4) +#define HWCAP_MIPS_MIPS3D (1 << 5) +#define HWCAP_MIPS_SMARTMIPS (1 << 6) +#define HWCAP_MIPS_DSP (1 << 7) +#define HWCAP_MIPS_DSP2 (1 << 8) +#define HWCAP_MIPS_DSP3 (1 << 9) +#define HWCAP_MIPS_MIPS16E2 (1 << 10) +#define HWCAP_LOONGSON_MMI (1 << 11) +#define HWCAP_LOONGSON_EXT (1 << 12) +#define HWCAP_LOONGSON_EXT2 (1 << 13) diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/mips/bits/ioctl.h new file mode 100644 index 000000000..e20bf19ea --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/ioctl.h @@ -0,0 +1,114 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 1U +#define _IOC_READ 2U +#define _IOC_WRITE 4U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define TCGETA 0x5401 +#define TCSETA 0x5402 +#define TCSETAW 0x5403 +#define TCSETAF 0x5404 +#define TCSBRK 0x5405 +#define TCXONC 0x5406 +#define TCFLSH 0x5407 +#define TCGETS 0x540D +#define TCSETS 0x540E +#define TCSETSW 0x540F +#define TCSETSF 0x5410 + +#define TIOCEXCL 0x740D +#define TIOCNXCL 0x740E +#define TIOCOUTQ 0x7472 +#define TIOCSTI 0x5472 +#define TIOCMGET 0x741D +#define TIOCMBIS 0x741B +#define TIOCMBIC 0x741C +#define TIOCMSET 0x741A + +#define TIOCPKT 0x5470 +#define TIOCSWINSZ _IOW('t', 103, struct winsize) +#define TIOCGWINSZ _IOR('t', 104, struct winsize) +#define TIOCNOTTY 0x5471 +#define TIOCSETD 0x7401 +#define TIOCGETD 0x7400 + +#define FIOCLEX 0x6601 +#define FIONCLEX 0x6602 +#define FIOASYNC 0x667D +#define FIONBIO 0x667E +#define FIOQSIZE 0x667F + +#define TIOCGLTC 0x7474 +#define TIOCSLTC 0x7475 +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) +#define TIOCCONS _IOW('t', 120, int) + +#define FIONREAD 0x467F +#define TIOCINQ FIONREAD + +#define TIOCGETP 0x7408 +#define TIOCSETP 0x7409 +#define TIOCSETN 0x740A + +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x7416 +#define TIOCGRS485 _IOR('T', 0x2E, char[32]) +#define TIOCSRS485 _IOWR('T', 0x2F, char[32]) +#define TIOCGPTN _IOR('T', 0x30, unsigned int) +#define TIOCSPTLCK _IOW('T', 0x31, int) +#define TIOCGDEV _IOR('T', 0x32, unsigned int) +#define TIOCSIG _IOW('T', 0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSCTTY 0x5480 +#define TIOCGSOFTCAR 0x5481 +#define TIOCSSOFTCAR 0x5482 +#define TIOCLINUX 0x5483 +#define TIOCGSERIAL 0x5484 +#define TIOCSSERIAL 0x5485 +#define TCSBRKP 0x5486 + +#define TIOCSERCONFIG 0x5488 +#define TIOCSERGWILD 0x5489 +#define TIOCSERSWILD 0x548A +#define TIOCGLCKTRMIOS 0x548B +#define TIOCSLCKTRMIOS 0x548C +#define TIOCSERGSTRUCT 0x548D +#define TIOCSERGETLSR 0x548E +#define TIOCSERGETMULTI 0x548F +#define TIOCSERSETMULTI 0x5490 +#define TIOCMIWAIT 0x5491 +#define TIOCGICOUNT 0x5492 + +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x010 +#define TIOCM_SR 0x020 +#define TIOCM_CTS 0x040 +#define TIOCM_CAR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RNG 0x200 +#define TIOCM_RI TIOCM_RNG +#define TIOCM_DSR 0x400 +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, pid_t) +#define SIOCGPGRP _IOR('s', 9, pid_t) +#define SIOCGSTAMP _IOR(0x89, 6, char[16]) +#define SIOCGSTAMPNS _IOR(0x89, 7, char[16]) diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/mips/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/mman.h b/vendor/modernc.org/libc/musl/arch/mips/bits/mman.h new file mode 100644 index 000000000..9027bb637 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/mman.h @@ -0,0 +1,25 @@ +#undef MAP_ANON +#define MAP_ANON 0x800 +#undef MAP_NORESERVE +#define MAP_NORESERVE 0x0400 +#undef MAP_GROWSDOWN +#define MAP_GROWSDOWN 0x1000 +#undef MAP_DENYWRITE +#define MAP_DENYWRITE 0x2000 +#undef MAP_EXECUTABLE +#define MAP_EXECUTABLE 0x4000 +#undef MAP_LOCKED +#define MAP_LOCKED 0x8000 +#undef MAP_POPULATE +#define MAP_POPULATE 0x10000 +#undef MAP_NONBLOCK +#define MAP_NONBLOCK 0x20000 +#undef MAP_STACK +#define MAP_STACK 0x40000 +#undef MAP_HUGETLB +#define MAP_HUGETLB 0x80000 +#undef MAP_SYNC + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#undef MADV_SOFT_OFFLINE +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/msg.h b/vendor/modernc.org/libc/musl/arch/mips/bits/msg.h new file mode 100644 index 000000000..c734dbb57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/msg.h @@ -0,0 +1,27 @@ +struct msqid_ds { + struct ipc_perm msg_perm; +#if _MIPSEL || __MIPSEL || __MIPSEL__ + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; +#else + unsigned long __msg_stime_hi; + unsigned long __msg_stime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_ctime_hi; + unsigned long __msg_ctime_lo; +#endif + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/poll.h b/vendor/modernc.org/libc/musl/arch/mips/bits/poll.h new file mode 100644 index 000000000..b0b1ed621 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/poll.h @@ -0,0 +1,2 @@ +#define POLLWRNORM POLLOUT +#define POLLWRBAND 0x100 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/posix.h b/vendor/modernc.org/libc/musl/arch/mips/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/mips/bits/ptrace.h new file mode 100644 index 000000000..77a01c064 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/ptrace.h @@ -0,0 +1,9 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_PEEKTEXT_3264 0xc0 +#define PTRACE_PEEKDATA_3264 0xc1 +#define PTRACE_POKETEXT_3264 0xc2 +#define PTRACE_POKEDATA_3264 0xc3 +#define PTRACE_GET_THREAD_AREA_3264 0xc4 +#define PTRACE_GET_WATCH_REGS 0xd0 +#define PTRACE_SET_WATCH_REGS 0xd1 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/reg.h b/vendor/modernc.org/libc/musl/arch/mips/bits/reg.h new file mode 100644 index 000000000..0c3709877 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/reg.h @@ -0,0 +1,47 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +#define EF_R0 6 +#define EF_R1 7 +#define EF_R2 8 +#define EF_R3 9 +#define EF_R4 10 +#define EF_R5 11 +#define EF_R6 12 +#define EF_R7 13 +#define EF_R8 14 +#define EF_R9 15 +#define EF_R10 16 +#define EF_R11 17 +#define EF_R12 18 +#define EF_R13 19 +#define EF_R14 20 +#define EF_R15 21 +#define EF_R16 22 +#define EF_R17 23 +#define EF_R18 24 +#define EF_R19 25 +#define EF_R20 26 +#define EF_R21 27 +#define EF_R22 28 +#define EF_R23 29 +#define EF_R24 30 +#define EF_R25 31 + +#define EF_R26 32 +#define EF_R27 33 +#define EF_R28 34 +#define EF_R29 35 +#define EF_R30 36 +#define EF_R31 37 + +#define EF_LO 38 +#define EF_HI 39 + +#define EF_CP0_EPC 40 +#define EF_CP0_BADVADDR 41 +#define EF_CP0_STATUS 42 +#define EF_CP0_CAUSE 43 +#define EF_UNUSED0 44 + +#define EF_SIZE 180 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/resource.h b/vendor/modernc.org/libc/musl/arch/mips/bits/resource.h new file mode 100644 index 000000000..414a40541 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/resource.h @@ -0,0 +1,5 @@ +#define RLIMIT_NOFILE 5 +#define RLIMIT_AS 6 +#define RLIMIT_RSS 7 +#define RLIMIT_NPROC 8 +#define RLIMIT_MEMLOCK 9 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/sem.h b/vendor/modernc.org/libc/musl/arch/mips/bits/sem.h new file mode 100644 index 000000000..fe6f09485 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_ctime_lo; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_hi; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/mips/bits/setjmp.h new file mode 100644 index 000000000..30229a0b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[13]; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/shm.h b/vendor/modernc.org/libc/musl/arch/mips/bits/shm.h new file mode 100644 index 000000000..ab8c642d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/shm.h @@ -0,0 +1,29 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_dtime_lo; + unsigned long __shm_ctime_lo; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned short __shm_atime_hi; + unsigned short __shm_dtime_hi; + unsigned short __shm_ctime_hi; + unsigned short __pad1; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/signal.h b/vendor/modernc.org/libc/musl/arch/mips/bits/signal.h new file mode 100644 index 000000000..1b69e7625 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/signal.h @@ -0,0 +1,124 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long long greg_t, gregset_t[32]; +typedef struct { + union { + double fp_dregs[32]; + struct { + float _fp_fregs; + unsigned _fp_pad; + } fp_fregs[32]; + } fp_r; +} fpregset_t; +struct sigcontext { + unsigned sc_regmask, sc_status; + unsigned long long sc_pc; + gregset_t sc_regs; + fpregset_t sc_fpregs; + unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp; + unsigned long long sc_mdhi, sc_mdlo; + unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3; +}; +typedef struct { + unsigned regmask, status; + unsigned long long pc; + gregset_t gregs; + fpregset_t fpregs; + unsigned ownedfp, fpc_csr, fpc_eir, used_math, dsp; + unsigned long long mdhi, mdlo; + unsigned long hi1, lo1, hi2, lo2, hi3, lo3; +} mcontext_t; +#else +typedef struct { + unsigned __mc1[2]; + unsigned long long __mc2[65]; + unsigned __mc3[5]; + unsigned long long __mc4[2]; + unsigned __mc5[6]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + size_t ss_size; + int ss_flags; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 0x10000 +#define SA_SIGINFO 8 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#undef SIG_BLOCK +#undef SIG_UNBLOCK +#undef SIG_SETMASK +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +#undef SI_ASYNCIO +#undef SI_MESGQ +#undef SI_TIMER +#define SI_ASYNCIO (-2) +#define SI_MESGQ (-4) +#define SI_TIMER (-3) + +#define __SI_SWAP_ERRNO_CODE + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGEMT 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGBUS 10 +#define SIGSEGV 11 +#define SIGSYS 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGUSR1 16 +#define SIGUSR2 17 +#define SIGCHLD 18 +#define SIGPWR 19 +#define SIGWINCH 20 +#define SIGURG 21 +#define SIGIO 22 +#define SIGPOLL SIGIO +#define SIGSTOP 23 +#define SIGTSTP 24 +#define SIGCONT 25 +#define SIGTTIN 26 +#define SIGTTOU 27 +#define SIGVTALRM 28 +#define SIGPROF 29 +#define SIGXCPU 30 +#define SIGXFSZ 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 128 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/socket.h b/vendor/modernc.org/libc/musl/arch/mips/bits/socket.h new file mode 100644 index 000000000..02fbb88b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/socket.h @@ -0,0 +1,35 @@ +#define SOCK_STREAM 2 +#define SOCK_DGRAM 1 + +#define SOL_SOCKET 65535 + +#define SO_DEBUG 1 + +#define SO_REUSEADDR 0x0004 +#define SO_KEEPALIVE 0x0008 +#define SO_DONTROUTE 0x0010 +#define SO_BROADCAST 0x0020 +#define SO_LINGER 0x0080 +#define SO_OOBINLINE 0x0100 +#define SO_REUSEPORT 0x0200 +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#define SO_ACCEPTCONN 0x1009 +#define SO_PROTOCOL 0x1028 +#define SO_DOMAIN 0x1029 + +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_BSDCOMPAT 14 +#define SO_PASSCRED 17 +#define SO_PEERCRED 18 +#define SO_PEERSEC 30 +#define SO_SNDBUFFORCE 31 +#define SO_RCVBUFFORCE 33 + +#define SOCK_NONBLOCK 0200 +#define SOCK_CLOEXEC 02000000 diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/stat.h b/vendor/modernc.org/libc/musl/arch/mips/bits/stat.h new file mode 100644 index 000000000..48d4ac804 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/stat.h @@ -0,0 +1,26 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + long __st_padding1[2]; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long __st_padding2[2]; + off_t st_size; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + blksize_t st_blksize; + long __st_padding3; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long __st_padding4[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/mips/bits/statfs.h new file mode 100644 index 000000000..a73bd547c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/statfs.h @@ -0,0 +1,8 @@ +struct statfs { + unsigned long f_type, f_bsize, f_frsize; + fsblkcnt_t f_blocks, f_bfree; + fsfilcnt_t f_files, f_ffree; + fsblkcnt_t f_bavail; + fsid_t f_fsid; + unsigned long f_namelen, f_flags, f_spare[5]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/mips/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/termios.h b/vendor/modernc.org/libc/musl/arch/mips/bits/termios.h new file mode 100644 index 000000000..9d571f78f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/termios.h @@ -0,0 +1,169 @@ +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VMIN 4 +#define VTIME 5 +#define VEOL2 6 +#define VSWTC 7 +#define VSWTCH 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOF 16 +#define VEOL 17 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 +#endif + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define IEXTEN 0000400 +#define TOSTOP 0100000 +#define ITOSTOP 0100000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 0010017 +#define CBAUDEX 0010000 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0000004 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0020000 +#define PENDIN 0040000 +#define EXTPROC 0200000 + +#define XTABS 0014000 +#define TIOCSER_TEMT 1 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mips/bits/user.h b/vendor/modernc.org/libc/musl/arch/mips/bits/user.h new file mode 100644 index 000000000..3e26249d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/bits/user.h @@ -0,0 +1,13 @@ +struct user { + unsigned long regs[45+64]; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long start_code, start_data, start_stack; + long signal; + void *u_ar0; + unsigned long magic; + char u_comm[32]; +}; +#define ELF_NGREG 45 +#define ELF_NFPREG 33 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; diff --git a/vendor/modernc.org/libc/musl/arch/mips/crt_arch.h b/vendor/modernc.org/libc/musl/arch/mips/crt_arch.h new file mode 100644 index 000000000..9fc50d7ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/crt_arch.h @@ -0,0 +1,29 @@ +__asm__( +".set push\n" +".set noreorder\n" +".text \n" +".global _" START "\n" +".global " START "\n" +".type _" START ", @function\n" +".type " START ", @function\n" +"_" START ":\n" +"" START ":\n" +" bal 1f \n" +" move $fp, $0 \n" +" .gpword . \n" +" .gpword " START "_c \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" .gpword _DYNAMIC \n" +"1: lw $gp, 0($ra) \n" +" subu $gp, $ra, $gp \n" +" move $4, $sp \n" +" lw $5, 8($ra) \n" +" addu $5, $5, $gp \n" +" lw $25, 4($ra) \n" +" addu $25, $25, $gp \n" +" and $sp, $sp, -8 \n" +" jalr $25 \n" +" subu $sp, $sp, 16 \n" +".set pop \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/mips/ksigaction.h b/vendor/modernc.org/libc/musl/arch/mips/ksigaction.h new file mode 100644 index 000000000..63fdfab00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/ksigaction.h @@ -0,0 +1,13 @@ +#include + +struct k_sigaction { + unsigned flags; + void (*handler)(int); + unsigned long mask[4]; + /* The following field is past the end of the structure the + * kernel will read or write, and exists only to avoid having + * mips-specific preprocessor conditionals in sigaction.c. */ + void (*restorer)(); +}; + +hidden void __restore(), __restore_rt(); diff --git a/vendor/modernc.org/libc/musl/arch/mips/kstat.h b/vendor/modernc.org/libc/musl/arch/mips/kstat.h new file mode 100644 index 000000000..5e637eabf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/kstat.h @@ -0,0 +1,22 @@ +struct kstat { + unsigned st_dev; + long __st_padding1[3]; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + unsigned st_rdev; + long __st_padding2[3]; + off_t st_size; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + blksize_t st_blksize; + long __st_padding3; + blkcnt_t st_blocks; + long __st_padding4[14]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/mips/pthread_arch.h new file mode 100644 index 000000000..1e7839ea6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/pthread_arch.h @@ -0,0 +1,19 @@ +static inline struct pthread *__pthread_self() +{ +#if __mips_isa_rev < 2 + register char *tp __asm__("$3"); + __asm__ (".word 0x7c03e83b" : "=r" (tp) ); +#else + char *tp; + __asm__ ("rdhwr %0, $29" : "=r" (tp) ); +#endif + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +#define MC_PC pc diff --git a/vendor/modernc.org/libc/musl/arch/mips/reloc.h b/vendor/modernc.org/libc/musl/arch/mips/reloc.h new file mode 100644 index 000000000..88d236390 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/reloc.h @@ -0,0 +1,50 @@ +#if __mips_isa_rev >= 6 +#define ISA_SUFFIX "r6" +#else +#define ISA_SUFFIX "" +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "el" +#else +#define ENDIAN_SUFFIX "" +#endif + +#ifdef __mips_soft_float +#define FP_SUFFIX "-sf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "mips" ISA_SUFFIX ENDIAN_SUFFIX FP_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYM_OR_REL R_MIPS_REL32 +#define REL_PLT R_MIPS_JUMP_SLOT +#define REL_COPY R_MIPS_COPY +#define REL_DTPMOD R_MIPS_TLS_DTPMOD32 +#define REL_DTPOFF R_MIPS_TLS_DTPREL32 +#define REL_TPOFF R_MIPS_TLS_TPREL32 + +#define NEED_MIPS_GOT_RELOCS 1 +#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT)) + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + ".set push \n" \ + ".set noreorder \n" \ + " bal 1f \n" \ + " nop \n" \ + " .gpword . \n" \ + " .gpword " #sym " \n" \ + "1: lw %0, ($ra) \n" \ + " subu %0, $ra, %0 \n" \ + " lw $ra, 4($ra) \n" \ + " addu %0, %0, $ra \n" \ + ".set pop \n" \ + : "=r"(*(fp)) : : "memory", "ra" ) diff --git a/vendor/modernc.org/libc/musl/arch/mips/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/mips/syscall_arch.h new file mode 100644 index 000000000..380a94b36 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips/syscall_arch.h @@ -0,0 +1,151 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + +#define SYSCALL_RLIM_INFINITY (-1UL/2) + +#if __mips_isa_rev >= 6 +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "memory" +#else +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "hi", "lo", "memory" +#endif + +static inline long __syscall0(long n) +{ + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "addu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2) + : SYSCALL_CLOBBERLIST, "$8", "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall1(long n, long a) +{ + register long r4 __asm__("$4") = a; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "addu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4) + : SYSCALL_CLOBBERLIST, "$8", "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "addu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5) + : SYSCALL_CLOBBERLIST, "$8", "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "addu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST, "$8", "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "addu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST, "$8", "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "subu $sp,$sp,32 ; sw $8,16($sp) ; " + "addu $2,$0,%3 ; syscall ;" + "addu $sp,$sp,32" + : "=&r"(r2), "+r"(r7), "+r"(r8) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST, "$9", "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r9 __asm__("$9") = f; + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "subu $sp,$sp,32 ; sw $8,16($sp) ; sw $9,20($sp) ; " + "addu $2,$0,%4 ; syscall ;" + "addu $sp,$sp,32" + : "=&r"(r2), "+r"(r7), "+r"(r8), "+r"(r9) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST, "$10"); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall7(long n, long a, long b, long c, long d, long e, long f, long g) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r9 __asm__("$9") = f; + register long r10 __asm__("$10") = g; + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "subu $sp,$sp,32 ; sw $8,16($sp) ; sw $9,20($sp) ; sw $10,24($sp) ; " + "addu $2,$0,%5 ; syscall ;" + "addu $sp,$sp,32" + : "=&r"(r2), "+r"(r7), "+r"(r8), "+r"(r9), "+r"(r10) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +#define VDSO_USEFUL +#define VDSO_CGT32_SYM "__vdso_clock_gettime" +#define VDSO_CGT32_VER "LINUX_2.6" +#define VDSO_CGT_SYM "__vdso_clock_gettime64" +#define VDSO_CGT_VER "LINUX_2.6" + +#define SO_SNDTIMEO_OLD 0x1005 +#define SO_RCVTIMEO_OLD 0x1006 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/mips64/atomic_arch.h new file mode 100644 index 000000000..d0f8b4ad2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/atomic_arch.h @@ -0,0 +1,56 @@ +#if __mips_isa_rev < 6 +#define LLSC_M "m" +#else +#define LLSC_M "ZC" +#endif + +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ( + "ll %0, %1" + : "=r"(v) : LLSC_M(*p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ( + "sc %0, %1" + : "=r"(r), "="LLSC_M(*p) : "0"(v) : "memory"); + return r; +} + +#define a_ll_p a_ll_p +static inline void *a_ll_p(volatile void *p) +{ + void *v; + __asm__ __volatile__ ( + "lld %0, %1" + : "=r"(v) : LLSC_M(*(void *volatile *)p)); + return v; +} + +#define a_sc_p a_sc_p +static inline int a_sc_p(volatile void *p, void *v) +{ + long r; + __asm__ __volatile__ ( + "scd %0, %1" + : "=r"(r), "="LLSC_M(*(void *volatile *)p) : "0"(v) : "memory"); + return r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("sync" : : : "memory"); +} + +#define a_pre_llsc a_barrier +#define a_post_llsc a_barrier + +#undef LLSC_M diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/errno.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/errno.h new file mode 100644 index 000000000..1bb91e3d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define ENOMSG 35 +#define EIDRM 36 +#define ECHRNG 37 +#define EL2NSYNC 38 +#define EL3HLT 39 +#define EL3RST 40 +#define ELNRNG 41 +#define EUNATCH 42 +#define ENOCSI 43 +#define EL2HLT 44 +#define EDEADLK 45 +#define ENOLCK 46 +#define EBADE 50 +#define EBADR 51 +#define EXFULL 52 +#define ENOANO 53 +#define EBADRQC 54 +#define EBADSLT 55 +#define EDEADLOCK 56 +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EDOTDOT 73 +#define EMULTIHOP 74 +#define EBADMSG 77 +#define ENAMETOOLONG 78 +#define EOVERFLOW 79 +#define ENOTUNIQ 80 +#define EBADFD 81 +#define EREMCHG 82 +#define ELIBACC 83 +#define ELIBBAD 84 +#define ELIBSCN 85 +#define ELIBMAX 86 +#define ELIBEXEC 87 +#define EILSEQ 88 +#define ENOSYS 89 +#define ELOOP 90 +#define ERESTART 91 +#define ESTRPIPE 92 +#define ENOTEMPTY 93 +#define EUSERS 94 +#define ENOTSOCK 95 +#define EDESTADDRREQ 96 +#define EMSGSIZE 97 +#define EPROTOTYPE 98 +#define ENOPROTOOPT 99 +#define EPROTONOSUPPORT 120 +#define ESOCKTNOSUPPORT 121 +#define EOPNOTSUPP 122 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 123 +#define EAFNOSUPPORT 124 +#define EADDRINUSE 125 +#define EADDRNOTAVAIL 126 +#define ENETDOWN 127 +#define ENETUNREACH 128 +#define ENETRESET 129 +#define ECONNABORTED 130 +#define ECONNRESET 131 +#define ENOBUFS 132 +#define EISCONN 133 +#define ENOTCONN 134 +#define EUCLEAN 135 +#define ENOTNAM 137 +#define ENAVAIL 138 +#define EISNAM 139 +#define EREMOTEIO 140 +#define ESHUTDOWN 143 +#define ETOOMANYREFS 144 +#define ETIMEDOUT 145 +#define ECONNREFUSED 146 +#define EHOSTDOWN 147 +#define EHOSTUNREACH 148 +#define EWOULDBLOCK EAGAIN +#define EALREADY 149 +#define EINPROGRESS 150 +#define ESTALE 151 +#define ECANCELED 158 +#define ENOMEDIUM 159 +#define EMEDIUMTYPE 160 +#define ENOKEY 161 +#define EKEYEXPIRED 162 +#define EKEYREVOKED 163 +#define EKEYREJECTED 164 +#define EOWNERDEAD 165 +#define ENOTRECOVERABLE 166 +#define ERFKILL 167 +#define EHWPOISON 168 +#define EDQUOT 1133 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/fcntl.h new file mode 100644 index 000000000..3bcec15e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0400 +#define O_EXCL 02000 +#define O_NOCTTY 04000 +#define O_TRUNC 01000 +#define O_APPEND 0010 +#define O_NONBLOCK 0200 +#define O_DSYNC 0020 +#define O_SYNC 040020 +#define O_RSYNC 040020 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 010000 +#define O_DIRECT 0100000 +#define O_LARGEFILE 0 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 24 +#define F_GETOWN 23 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 14 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/fenv.h new file mode 100644 index 000000000..276208969 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/fenv.h @@ -0,0 +1,25 @@ +#ifdef __mips_soft_float +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else +#define FE_INEXACT 4 +#define FE_UNDERFLOW 8 +#define FE_OVERFLOW 16 +#define FE_DIVBYZERO 32 +#define FE_INVALID 64 + +#define FE_ALL_EXCEPT 124 + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 +#endif + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/float.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/float.h new file mode 100644 index 000000000..719c79085 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L + +#define LDBL_MANT_DIG 113 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 33 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 36 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/hwcap.h new file mode 100644 index 000000000..13e86fe70 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/hwcap.h @@ -0,0 +1,3 @@ +#define HWCAP_MIPS_R6 (1 << 0) +#define HWCAP_MIPS_MSA (1 << 1) +#define HWCAP_MIPS_CRC32 (1 << 2) diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/ioctl.h new file mode 100644 index 000000000..e277c3f05 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/ioctl.h @@ -0,0 +1,114 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 1U +#define _IOC_READ 2U +#define _IOC_WRITE 4U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define TCGETA 0x5401 +#define TCSETA 0x5402 +#define TCSETAW 0x5403 +#define TCSETAF 0x5404 +#define TCSBRK 0x5405 +#define TCXONC 0x5406 +#define TCFLSH 0x5407 +#define TCGETS 0x540D +#define TCSETS 0x540E +#define TCSETSW 0x540F +#define TCSETSF 0x5410 + +#define TIOCEXCL 0x740D +#define TIOCNXCL 0x740E +#define TIOCOUTQ 0x7472 +#define TIOCSTI 0x5472 +#define TIOCMGET 0x741D +#define TIOCMBIS 0x741B +#define TIOCMBIC 0x741C +#define TIOCMSET 0x741A + +#define TIOCPKT 0x5470 +#define TIOCSWINSZ _IOW('t', 103, struct winsize) +#define TIOCGWINSZ _IOR('t', 104, struct winsize) +#define TIOCNOTTY 0x5471 +#define TIOCSETD 0x7401 +#define TIOCGETD 0x7400 + +#define FIOCLEX 0x6601 +#define FIONCLEX 0x6602 +#define FIOASYNC 0x667D +#define FIONBIO 0x667E +#define FIOQSIZE 0x667F + +#define TIOCGLTC 0x7474 +#define TIOCSLTC 0x7475 +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) +#define TIOCCONS _IOW('t', 120, int) + +#define FIONREAD 0x467F +#define TIOCINQ FIONREAD + +#define TIOCGETP 0x7408 +#define TIOCSETP 0x7409 +#define TIOCSETN 0x740A + +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x7416 +#define TIOCGRS485 _IOR('T', 0x2E, char[32]) +#define TIOCSRS485 _IOWR('T', 0x2F, char[32]) +#define TIOCGPTN _IOR('T', 0x30, unsigned int) +#define TIOCSPTLCK _IOW('T', 0x31, int) +#define TIOCGDEV _IOR('T', 0x32, unsigned int) +#define TIOCSIG _IOW('T', 0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSCTTY 0x5480 +#define TIOCGSOFTCAR 0x5481 +#define TIOCSSOFTCAR 0x5482 +#define TIOCLINUX 0x5483 +#define TIOCGSERIAL 0x5484 +#define TIOCSSERIAL 0x5485 +#define TCSBRKP 0x5486 + +#define TIOCSERCONFIG 0x5488 +#define TIOCSERGWILD 0x5489 +#define TIOCSERSWILD 0x548A +#define TIOCGLCKTRMIOS 0x548B +#define TIOCSLCKTRMIOS 0x548C +#define TIOCSERGSTRUCT 0x548D +#define TIOCSERGETLSR 0x548E +#define TIOCSERGETMULTI 0x548F +#define TIOCSERSETMULTI 0x5490 +#define TIOCMIWAIT 0x5491 +#define TIOCGICOUNT 0x5492 + +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x010 +#define TIOCM_SR 0x020 +#define TIOCM_CTS 0x040 +#define TIOCM_CAR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RNG 0x200 +#define TIOCM_RI TIOCM_RNG +#define TIOCM_DSR 0x400 +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, pid_t) +#define SIOCGPGRP _IOR('s', 9, pid_t) +#define SIOCGSTAMP 0x8906 +#define SIOCGSTAMPNS 0x8907 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/ipc.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/ipc.h new file mode 100644 index 000000000..df2271686 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/ipc.h @@ -0,0 +1,12 @@ +struct ipc_perm { + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + int __pad1; + unsigned long __unused1; + unsigned long __unused2; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/mman.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/mman.h new file mode 100644 index 000000000..9027bb637 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/mman.h @@ -0,0 +1,25 @@ +#undef MAP_ANON +#define MAP_ANON 0x800 +#undef MAP_NORESERVE +#define MAP_NORESERVE 0x0400 +#undef MAP_GROWSDOWN +#define MAP_GROWSDOWN 0x1000 +#undef MAP_DENYWRITE +#define MAP_DENYWRITE 0x2000 +#undef MAP_EXECUTABLE +#define MAP_EXECUTABLE 0x4000 +#undef MAP_LOCKED +#define MAP_LOCKED 0x8000 +#undef MAP_POPULATE +#define MAP_POPULATE 0x10000 +#undef MAP_NONBLOCK +#define MAP_NONBLOCK 0x20000 +#undef MAP_STACK +#define MAP_STACK 0x40000 +#undef MAP_HUGETLB +#define MAP_HUGETLB 0x80000 +#undef MAP_SYNC + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#undef MADV_SOFT_OFFLINE +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/poll.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/poll.h new file mode 100644 index 000000000..b0b1ed621 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/poll.h @@ -0,0 +1,2 @@ +#define POLLWRNORM POLLOUT +#define POLLWRBAND 0x100 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/posix.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/posix.h new file mode 100644 index 000000000..acf429449 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFFBIG 1 +#define _POSIX_V7_LP64_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/ptrace.h new file mode 100644 index 000000000..77a01c064 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/ptrace.h @@ -0,0 +1,9 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_PEEKTEXT_3264 0xc0 +#define PTRACE_PEEKDATA_3264 0xc1 +#define PTRACE_POKETEXT_3264 0xc2 +#define PTRACE_POKEDATA_3264 0xc3 +#define PTRACE_GET_THREAD_AREA_3264 0xc4 +#define PTRACE_GET_WATCH_REGS 0xd0 +#define PTRACE_SET_WATCH_REGS 0xd1 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/reg.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/reg.h new file mode 100644 index 000000000..a3f63accf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/reg.h @@ -0,0 +1,47 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +#define EF_R0 0 +#define EF_R1 1 +#define EF_R2 2 +#define EF_R3 3 +#define EF_R4 4 +#define EF_R5 5 +#define EF_R6 6 +#define EF_R7 7 +#define EF_R8 8 +#define EF_R9 9 +#define EF_R10 10 +#define EF_R11 11 +#define EF_R12 12 +#define EF_R13 13 +#define EF_R14 14 +#define EF_R15 15 +#define EF_R16 16 +#define EF_R17 17 +#define EF_R18 18 +#define EF_R19 19 +#define EF_R20 20 +#define EF_R21 21 +#define EF_R22 22 +#define EF_R23 23 +#define EF_R24 24 +#define EF_R25 25 + +#define EF_R26 26 +#define EF_R27 27 +#define EF_R28 28 +#define EF_R29 29 +#define EF_R30 30 +#define EF_R31 31 + +#define EF_LO 32 +#define EF_HI 33 + +#define EF_CP0_EPC 34 +#define EF_CP0_BADVADDR 35 +#define EF_CP0_STATUS 36 +#define EF_CP0_CAUSE 37 +#define EF_UNUSED0 38 + +#define EF_SIZE 304 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/resource.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/resource.h new file mode 100644 index 000000000..414a40541 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/resource.h @@ -0,0 +1,5 @@ +#define RLIMIT_NOFILE 5 +#define RLIMIT_AS 6 +#define RLIMIT_RSS 7 +#define RLIMIT_NPROC 8 +#define RLIMIT_MEMLOCK 9 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/setjmp.h new file mode 100644 index 000000000..4d93267e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[23]; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/signal.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/signal.h new file mode 100644 index 000000000..4f91c9fc8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/signal.h @@ -0,0 +1,143 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long long greg_t, gregset_t[32]; + +typedef struct { + union { + double fp_dregs[32]; + struct { + float _fp_fregs; + unsigned _fp_pad; + } fp_fregs[32]; + } fp_r; +} fpregset_t; + +struct sigcontext { + unsigned long long sc_regs[32]; + unsigned long long sc_fpregs[32]; + unsigned long long sc_mdhi; + unsigned long long sc_hi1; + unsigned long long sc_hi2; + unsigned long long sc_hi3; + unsigned long long sc_mdlo; + unsigned long long sc_lo1; + unsigned long long sc_lo2; + unsigned long long sc_lo3; + unsigned long long sc_pc; + unsigned int sc_fpc_csr; + unsigned int sc_used_math; + unsigned int sc_dsp; + unsigned int sc_reserved; +}; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + greg_t mdhi; + greg_t hi1; + greg_t hi2; + greg_t hi3; + greg_t mdlo; + greg_t lo1; + greg_t lo2; + greg_t lo3; + greg_t pc; + unsigned int fpc_csr; + unsigned int used_math; + unsigned int dsp; + unsigned int reserved; +} mcontext_t; + +#else +typedef struct { + unsigned long long __mc1[32]; + double __mc2[32]; + unsigned long long __mc3[9]; + unsigned __mc4[4]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + size_t ss_size; + int ss_flags; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 0x10000 +#define SA_SIGINFO 8 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#undef SIG_BLOCK +#undef SIG_UNBLOCK +#undef SIG_SETMASK +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +#undef SI_ASYNCIO +#undef SI_MESGQ +#undef SI_TIMER +#define SI_ASYNCIO (-2) +#define SI_MESGQ (-4) +#define SI_TIMER (-3) + +#define __SI_SWAP_ERRNO_CODE + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGEMT 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGBUS 10 +#define SIGSEGV 11 +#define SIGSYS 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGUSR1 16 +#define SIGUSR2 17 +#define SIGCHLD 18 +#define SIGPWR 19 +#define SIGWINCH 20 +#define SIGURG 21 +#define SIGIO 22 +#define SIGPOLL SIGIO +#define SIGSTOP 23 +#define SIGTSTP 24 +#define SIGCONT 25 +#define SIGTTIN 26 +#define SIGTTOU 27 +#define SIGVTALRM 28 +#define SIGPROF 29 +#define SIGXCPU 30 +#define SIGXFSZ 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 128 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/socket.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/socket.h new file mode 100644 index 000000000..519b9c8ea --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/socket.h @@ -0,0 +1,35 @@ +#define SOCK_STREAM 2 +#define SOCK_DGRAM 1 +#define SOL_SOCKET 65535 +#define SO_DEBUG 1 + +#define SO_REUSEADDR 0x0004 +#define SO_KEEPALIVE 0x0008 +#define SO_DONTROUTE 0x0010 +#define SO_BROADCAST 0x0020 +#define SO_LINGER 0x0080 +#define SO_OOBINLINE 0x0100 +#define SO_REUSEPORT 0x0200 +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_RCVTIMEO 0x1006 +#define SO_SNDTIMEO 0x1005 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#define SO_ACCEPTCONN 0x1009 +#define SO_PROTOCOL 0x1028 +#define SO_DOMAIN 0x1029 + +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_BSDCOMPAT 14 +#define SO_PASSCRED 17 +#define SO_PEERCRED 18 +#define SO_PEERSEC 30 +#define SO_SNDBUFFORCE 31 +#define SO_RCVBUFFORCE 33 + +#define SOCK_NONBLOCK 0200 +#define SOCK_CLOEXEC 02000000 diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/stat.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/stat.h new file mode 100644 index 000000000..b620e142d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/stat.h @@ -0,0 +1,20 @@ +struct stat { + dev_t st_dev; + int __pad1[3]; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + unsigned int __pad2[2]; + off_t st_size; + int __pad3; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + unsigned int __pad4; + blkcnt_t st_blocks; + int __pad5[14]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/statfs.h new file mode 100644 index 000000000..a73bd547c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/statfs.h @@ -0,0 +1,8 @@ +struct statfs { + unsigned long f_type, f_bsize, f_frsize; + fsblkcnt_t f_blocks, f_bfree; + fsfilcnt_t f_files, f_ffree; + fsblkcnt_t f_bavail; + fsid_t f_fsid; + unsigned long f_namelen, f_flags, f_spare[5]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/termios.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/termios.h new file mode 100644 index 000000000..9d571f78f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/termios.h @@ -0,0 +1,169 @@ +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VMIN 4 +#define VTIME 5 +#define VEOL2 6 +#define VSWTC 7 +#define VSWTCH 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOF 16 +#define VEOL 17 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 +#endif + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define IEXTEN 0000400 +#define TOSTOP 0100000 +#define ITOSTOP 0100000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 0010017 +#define CBAUDEX 0010000 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0000004 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0020000 +#define PENDIN 0040000 +#define EXTPROC 0200000 + +#define XTABS 0014000 +#define TIOCSER_TEMT 1 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mips64/bits/user.h b/vendor/modernc.org/libc/musl/arch/mips64/bits/user.h new file mode 100644 index 000000000..60fa1fda9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/bits/user.h @@ -0,0 +1,15 @@ +struct user { + unsigned long regs[102]; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long long start_code, start_data, start_stack; + long long signal; + unsigned long long *u_ar0; + unsigned long long magic; + char u_comm[32]; +}; + +#define ELF_NGREG 45 +#define ELF_NFPREG 33 + +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/crt_arch.h b/vendor/modernc.org/libc/musl/arch/mips64/crt_arch.h new file mode 100644 index 000000000..d148f9773 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/crt_arch.h @@ -0,0 +1,33 @@ +__asm__( +".set push\n" +".set noreorder\n" +".text \n" +".global _" START "\n" +".global " START "\n" +".global " START "_data\n" +".type _" START ", @function\n" +".type " START ", @function\n" +".type " START "_data, @function\n" +"_" START ":\n" +"" START ":\n" +".align 8 \n" +" bal 1f \n" +" move $fp, $0 \n" +"" START "_data: \n" +" .gpdword " START "_data \n" +" .gpdword " START "_c \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" .gpdword _DYNAMIC \n" +"1: ld $gp, 0($ra) \n" +" dsubu $gp, $ra, $gp \n" +" move $4, $sp \n" +" ld $5, 16($ra) \n" +" daddu $5, $5, $gp \n" +" ld $25, 8($ra) \n" +" daddu $25, $25, $gp \n" +" and $sp, $sp, -16 \n" +" jalr $25 \n" +" nop \n" +".set pop \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/mips64/ksigaction.h b/vendor/modernc.org/libc/musl/arch/mips64/ksigaction.h new file mode 100644 index 000000000..c16e4731d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/ksigaction.h @@ -0,0 +1,10 @@ +#include + +struct k_sigaction { + unsigned flags; + void (*handler)(int); + unsigned long mask[2]; + void (*restorer)(); +}; + +hidden void __restore(), __restore_rt(); diff --git a/vendor/modernc.org/libc/musl/arch/mips64/kstat.h b/vendor/modernc.org/libc/musl/arch/mips64/kstat.h new file mode 100644 index 000000000..9a4468b4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + unsigned st_dev; + int __pad1[3]; + ino_t st_ino; + mode_t st_mode; + unsigned st_nlink; + uid_t st_uid; + gid_t st_gid; + unsigned st_rdev; + int __pad2[3]; + off_t st_size; + int st_atime_sec; + int st_atime_nsec; + int st_mtime_sec; + int st_mtime_nsec; + int st_ctime_sec; + int st_ctime_nsec; + unsigned st_blksize; + unsigned __pad3; + blkcnt_t st_blocks; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mips64/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/mips64/pthread_arch.h new file mode 100644 index 000000000..1e7839ea6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/pthread_arch.h @@ -0,0 +1,19 @@ +static inline struct pthread *__pthread_self() +{ +#if __mips_isa_rev < 2 + register char *tp __asm__("$3"); + __asm__ (".word 0x7c03e83b" : "=r" (tp) ); +#else + char *tp; + __asm__ ("rdhwr %0, $29" : "=r" (tp) ); +#endif + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +#define MC_PC pc diff --git a/vendor/modernc.org/libc/musl/arch/mips64/reloc.h b/vendor/modernc.org/libc/musl/arch/mips64/reloc.h new file mode 100644 index 000000000..fdb5edc9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/reloc.h @@ -0,0 +1,60 @@ +#if __mips_isa_rev >= 6 +#define ISA_SUFFIX "r6" +#else +#define ISA_SUFFIX "" +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "el" +#else +#define ENDIAN_SUFFIX "" +#endif + +#ifdef __mips_soft_float +#define FP_SUFFIX "-sf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "mips64" ISA_SUFFIX ENDIAN_SUFFIX FP_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYM_OR_REL 4611 +#define REL_PLT R_MIPS_JUMP_SLOT +#define REL_COPY R_MIPS_COPY +#define REL_DTPMOD R_MIPS_TLS_DTPMOD64 +#define REL_DTPOFF R_MIPS_TLS_DTPREL64 +#define REL_TPOFF R_MIPS_TLS_TPREL64 + +#include + +#undef R_TYPE +#undef R_SYM +#undef R_INFO +#define R_TYPE(x) (be64toh(x)&0x7fffffff) +#define R_SYM(x) (be32toh(be64toh(x)>>32)) +#define R_INFO(s,t) (htobe64((uint64_t)htobe32(s)<<32 | (uint64_t)t)) + +#define NEED_MIPS_GOT_RELOCS 1 +#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT)) + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + ".set push \n" \ + ".set noreorder \n" \ + ".align 8 \n" \ + " bal 1f \n" \ + " nop \n" \ + " .gpdword . \n" \ + " .gpdword " #sym " \n" \ + "1: ld %0, ($ra) \n" \ + " dsubu %0, $ra, %0 \n" \ + " ld $ra, 8($ra) \n" \ + " daddu %0, %0, $ra \n" \ + ".set pop \n" \ + : "=r"(*(fp)) : : "memory", "ra" ) diff --git a/vendor/modernc.org/libc/musl/arch/mips64/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/mips64/syscall_arch.h new file mode 100644 index 000000000..ae6532fcd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mips64/syscall_arch.h @@ -0,0 +1,128 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define SYSCALL_RLIM_INFINITY (-1UL/2) + +#if __mips_isa_rev >= 6 +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$10", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "memory" +#else +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$10", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "hi", "lo", "memory" +#endif + +static inline long __syscall0(long n) +{ + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall1(long n, long a) +{ + register long r4 __asm__("$4") = a; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r9 __asm__("$9") = f; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8), "r"(r9) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__vdso_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6" + +#define SO_SNDTIMEO_OLD 0x1005 +#define SO_RCVTIMEO_OLD 0x1006 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/mipsn32/atomic_arch.h new file mode 100644 index 000000000..ccc3878cc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/atomic_arch.h @@ -0,0 +1,52 @@ +#if __mips_isa_rev < 6 +#define LLSC_M "m" +#else +#define LLSC_M "ZC" +#endif + +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; +#if __mips < 2 + __asm__ __volatile__ ( + ".set push ; .set mips2\n\t" + "ll %0, %1" + "\n\t.set pop" + : "=r"(v) : "m"(*p)); +#else + __asm__ __volatile__ ( + "ll %0, %1" + : "=r"(v) : LLSC_M(*p)); +#endif + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; +#if __mips < 2 + __asm__ __volatile__ ( + ".set push ; .set mips2\n\t" + "sc %0, %1" + "\n\t.set pop" + : "=r"(r), "=m"(*p) : "0"(v) : "memory"); +#else + __asm__ __volatile__ ( + "sc %0, %1" + : "=r"(r), "="LLSC_M(*p) : "0"(v) : "memory"); +#endif + return r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("sync" : : : "memory"); +} + +#define a_pre_llsc a_barrier +#define a_post_llsc a_barrier + +#undef LLSC_M diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/errno.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/errno.h new file mode 100644 index 000000000..1bb91e3d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define ENOMSG 35 +#define EIDRM 36 +#define ECHRNG 37 +#define EL2NSYNC 38 +#define EL3HLT 39 +#define EL3RST 40 +#define ELNRNG 41 +#define EUNATCH 42 +#define ENOCSI 43 +#define EL2HLT 44 +#define EDEADLK 45 +#define ENOLCK 46 +#define EBADE 50 +#define EBADR 51 +#define EXFULL 52 +#define ENOANO 53 +#define EBADRQC 54 +#define EBADSLT 55 +#define EDEADLOCK 56 +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EDOTDOT 73 +#define EMULTIHOP 74 +#define EBADMSG 77 +#define ENAMETOOLONG 78 +#define EOVERFLOW 79 +#define ENOTUNIQ 80 +#define EBADFD 81 +#define EREMCHG 82 +#define ELIBACC 83 +#define ELIBBAD 84 +#define ELIBSCN 85 +#define ELIBMAX 86 +#define ELIBEXEC 87 +#define EILSEQ 88 +#define ENOSYS 89 +#define ELOOP 90 +#define ERESTART 91 +#define ESTRPIPE 92 +#define ENOTEMPTY 93 +#define EUSERS 94 +#define ENOTSOCK 95 +#define EDESTADDRREQ 96 +#define EMSGSIZE 97 +#define EPROTOTYPE 98 +#define ENOPROTOOPT 99 +#define EPROTONOSUPPORT 120 +#define ESOCKTNOSUPPORT 121 +#define EOPNOTSUPP 122 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 123 +#define EAFNOSUPPORT 124 +#define EADDRINUSE 125 +#define EADDRNOTAVAIL 126 +#define ENETDOWN 127 +#define ENETUNREACH 128 +#define ENETRESET 129 +#define ECONNABORTED 130 +#define ECONNRESET 131 +#define ENOBUFS 132 +#define EISCONN 133 +#define ENOTCONN 134 +#define EUCLEAN 135 +#define ENOTNAM 137 +#define ENAVAIL 138 +#define EISNAM 139 +#define EREMOTEIO 140 +#define ESHUTDOWN 143 +#define ETOOMANYREFS 144 +#define ETIMEDOUT 145 +#define ECONNREFUSED 146 +#define EHOSTDOWN 147 +#define EHOSTUNREACH 148 +#define EWOULDBLOCK EAGAIN +#define EALREADY 149 +#define EINPROGRESS 150 +#define ESTALE 151 +#define ECANCELED 158 +#define ENOMEDIUM 159 +#define EMEDIUMTYPE 160 +#define ENOKEY 161 +#define EKEYEXPIRED 162 +#define EKEYREVOKED 163 +#define EKEYREJECTED 164 +#define EOWNERDEAD 165 +#define ENOTRECOVERABLE 166 +#define ERFKILL 167 +#define EHWPOISON 168 +#define EDQUOT 1133 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fcntl.h new file mode 100644 index 000000000..9fd8c23e2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0400 +#define O_EXCL 02000 +#define O_NOCTTY 04000 +#define O_TRUNC 01000 +#define O_APPEND 0010 +#define O_NONBLOCK 0200 +#define O_DSYNC 0020 +#define O_SYNC 040020 +#define O_RSYNC 040020 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 010000 +#define O_DIRECT 0100000 +#define O_LARGEFILE 020000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 24 +#define F_GETOWN 23 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 33 +#define F_SETLK 34 +#define F_SETLKW 35 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fenv.h new file mode 100644 index 000000000..589e71c1b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/fenv.h @@ -0,0 +1,25 @@ +#ifdef __mips_soft_float +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else +#define FE_INEXACT 4 +#define FE_UNDERFLOW 8 +#define FE_OVERFLOW 16 +#define FE_DIVBYZERO 32 +#define FE_INVALID 64 + +#define FE_ALL_EXCEPT 124 + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 +#endif + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/float.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/float.h new file mode 100644 index 000000000..719c79085 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L + +#define LDBL_MANT_DIG 113 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 33 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 36 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/hwcap.h new file mode 100644 index 000000000..13e86fe70 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/hwcap.h @@ -0,0 +1,3 @@ +#define HWCAP_MIPS_R6 (1 << 0) +#define HWCAP_MIPS_MSA (1 << 1) +#define HWCAP_MIPS_CRC32 (1 << 2) diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ioctl.h new file mode 100644 index 000000000..e20bf19ea --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ioctl.h @@ -0,0 +1,114 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 1U +#define _IOC_READ 2U +#define _IOC_WRITE 4U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define TCGETA 0x5401 +#define TCSETA 0x5402 +#define TCSETAW 0x5403 +#define TCSETAF 0x5404 +#define TCSBRK 0x5405 +#define TCXONC 0x5406 +#define TCFLSH 0x5407 +#define TCGETS 0x540D +#define TCSETS 0x540E +#define TCSETSW 0x540F +#define TCSETSF 0x5410 + +#define TIOCEXCL 0x740D +#define TIOCNXCL 0x740E +#define TIOCOUTQ 0x7472 +#define TIOCSTI 0x5472 +#define TIOCMGET 0x741D +#define TIOCMBIS 0x741B +#define TIOCMBIC 0x741C +#define TIOCMSET 0x741A + +#define TIOCPKT 0x5470 +#define TIOCSWINSZ _IOW('t', 103, struct winsize) +#define TIOCGWINSZ _IOR('t', 104, struct winsize) +#define TIOCNOTTY 0x5471 +#define TIOCSETD 0x7401 +#define TIOCGETD 0x7400 + +#define FIOCLEX 0x6601 +#define FIONCLEX 0x6602 +#define FIOASYNC 0x667D +#define FIONBIO 0x667E +#define FIOQSIZE 0x667F + +#define TIOCGLTC 0x7474 +#define TIOCSLTC 0x7475 +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) +#define TIOCCONS _IOW('t', 120, int) + +#define FIONREAD 0x467F +#define TIOCINQ FIONREAD + +#define TIOCGETP 0x7408 +#define TIOCSETP 0x7409 +#define TIOCSETN 0x740A + +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x7416 +#define TIOCGRS485 _IOR('T', 0x2E, char[32]) +#define TIOCSRS485 _IOWR('T', 0x2F, char[32]) +#define TIOCGPTN _IOR('T', 0x30, unsigned int) +#define TIOCSPTLCK _IOW('T', 0x31, int) +#define TIOCGDEV _IOR('T', 0x32, unsigned int) +#define TIOCSIG _IOW('T', 0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSCTTY 0x5480 +#define TIOCGSOFTCAR 0x5481 +#define TIOCSSOFTCAR 0x5482 +#define TIOCLINUX 0x5483 +#define TIOCGSERIAL 0x5484 +#define TIOCSSERIAL 0x5485 +#define TCSBRKP 0x5486 + +#define TIOCSERCONFIG 0x5488 +#define TIOCSERGWILD 0x5489 +#define TIOCSERSWILD 0x548A +#define TIOCGLCKTRMIOS 0x548B +#define TIOCSLCKTRMIOS 0x548C +#define TIOCSERGSTRUCT 0x548D +#define TIOCSERGETLSR 0x548E +#define TIOCSERGETMULTI 0x548F +#define TIOCSERSETMULTI 0x5490 +#define TIOCMIWAIT 0x5491 +#define TIOCGICOUNT 0x5492 + +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x010 +#define TIOCM_SR 0x020 +#define TIOCM_CTS 0x040 +#define TIOCM_CAR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RNG 0x200 +#define TIOCM_RI TIOCM_RNG +#define TIOCM_DSR 0x400 +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, pid_t) +#define SIOCGPGRP _IOR('s', 9, pid_t) +#define SIOCGSTAMP _IOR(0x89, 6, char[16]) +#define SIOCGSTAMPNS _IOR(0x89, 7, char[16]) diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/mman.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/mman.h new file mode 100644 index 000000000..9027bb637 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/mman.h @@ -0,0 +1,25 @@ +#undef MAP_ANON +#define MAP_ANON 0x800 +#undef MAP_NORESERVE +#define MAP_NORESERVE 0x0400 +#undef MAP_GROWSDOWN +#define MAP_GROWSDOWN 0x1000 +#undef MAP_DENYWRITE +#define MAP_DENYWRITE 0x2000 +#undef MAP_EXECUTABLE +#define MAP_EXECUTABLE 0x4000 +#undef MAP_LOCKED +#define MAP_LOCKED 0x8000 +#undef MAP_POPULATE +#define MAP_POPULATE 0x10000 +#undef MAP_NONBLOCK +#define MAP_NONBLOCK 0x20000 +#undef MAP_STACK +#define MAP_STACK 0x40000 +#undef MAP_HUGETLB +#define MAP_HUGETLB 0x80000 +#undef MAP_SYNC + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#undef MADV_SOFT_OFFLINE +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/msg.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/msg.h new file mode 100644 index 000000000..c734dbb57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/msg.h @@ -0,0 +1,27 @@ +struct msqid_ds { + struct ipc_perm msg_perm; +#if _MIPSEL || __MIPSEL || __MIPSEL__ + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; +#else + unsigned long __msg_stime_hi; + unsigned long __msg_stime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_ctime_hi; + unsigned long __msg_ctime_lo; +#endif + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/poll.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/poll.h new file mode 100644 index 000000000..b0b1ed621 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/poll.h @@ -0,0 +1,2 @@ +#define POLLWRNORM POLLOUT +#define POLLWRBAND 0x100 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/posix.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ptrace.h new file mode 100644 index 000000000..77a01c064 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/ptrace.h @@ -0,0 +1,9 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_PEEKTEXT_3264 0xc0 +#define PTRACE_PEEKDATA_3264 0xc1 +#define PTRACE_POKETEXT_3264 0xc2 +#define PTRACE_POKEDATA_3264 0xc3 +#define PTRACE_GET_THREAD_AREA_3264 0xc4 +#define PTRACE_GET_WATCH_REGS 0xd0 +#define PTRACE_SET_WATCH_REGS 0xd1 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/reg.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/reg.h new file mode 100644 index 000000000..a3f63accf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/reg.h @@ -0,0 +1,47 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +#define EF_R0 0 +#define EF_R1 1 +#define EF_R2 2 +#define EF_R3 3 +#define EF_R4 4 +#define EF_R5 5 +#define EF_R6 6 +#define EF_R7 7 +#define EF_R8 8 +#define EF_R9 9 +#define EF_R10 10 +#define EF_R11 11 +#define EF_R12 12 +#define EF_R13 13 +#define EF_R14 14 +#define EF_R15 15 +#define EF_R16 16 +#define EF_R17 17 +#define EF_R18 18 +#define EF_R19 19 +#define EF_R20 20 +#define EF_R21 21 +#define EF_R22 22 +#define EF_R23 23 +#define EF_R24 24 +#define EF_R25 25 + +#define EF_R26 26 +#define EF_R27 27 +#define EF_R28 28 +#define EF_R29 29 +#define EF_R30 30 +#define EF_R31 31 + +#define EF_LO 32 +#define EF_HI 33 + +#define EF_CP0_EPC 34 +#define EF_CP0_BADVADDR 35 +#define EF_CP0_STATUS 36 +#define EF_CP0_CAUSE 37 +#define EF_UNUSED0 38 + +#define EF_SIZE 304 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/resource.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/resource.h new file mode 100644 index 000000000..414a40541 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/resource.h @@ -0,0 +1,5 @@ +#define RLIMIT_NOFILE 5 +#define RLIMIT_AS 6 +#define RLIMIT_RSS 7 +#define RLIMIT_NPROC 8 +#define RLIMIT_MEMLOCK 9 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/sem.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/sem.h new file mode 100644 index 000000000..fe6f09485 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_ctime_lo; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_hi; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/setjmp.h new file mode 100644 index 000000000..4d93267e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[23]; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/shm.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/shm.h new file mode 100644 index 000000000..ab8c642d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/shm.h @@ -0,0 +1,29 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_dtime_lo; + unsigned long __shm_ctime_lo; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned short __shm_atime_hi; + unsigned short __shm_dtime_hi; + unsigned short __shm_ctime_hi; + unsigned short __pad1; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/signal.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/signal.h new file mode 100644 index 000000000..4f91c9fc8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/signal.h @@ -0,0 +1,143 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long long greg_t, gregset_t[32]; + +typedef struct { + union { + double fp_dregs[32]; + struct { + float _fp_fregs; + unsigned _fp_pad; + } fp_fregs[32]; + } fp_r; +} fpregset_t; + +struct sigcontext { + unsigned long long sc_regs[32]; + unsigned long long sc_fpregs[32]; + unsigned long long sc_mdhi; + unsigned long long sc_hi1; + unsigned long long sc_hi2; + unsigned long long sc_hi3; + unsigned long long sc_mdlo; + unsigned long long sc_lo1; + unsigned long long sc_lo2; + unsigned long long sc_lo3; + unsigned long long sc_pc; + unsigned int sc_fpc_csr; + unsigned int sc_used_math; + unsigned int sc_dsp; + unsigned int sc_reserved; +}; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + greg_t mdhi; + greg_t hi1; + greg_t hi2; + greg_t hi3; + greg_t mdlo; + greg_t lo1; + greg_t lo2; + greg_t lo3; + greg_t pc; + unsigned int fpc_csr; + unsigned int used_math; + unsigned int dsp; + unsigned int reserved; +} mcontext_t; + +#else +typedef struct { + unsigned long long __mc1[32]; + double __mc2[32]; + unsigned long long __mc3[9]; + unsigned __mc4[4]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + size_t ss_size; + int ss_flags; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 0x10000 +#define SA_SIGINFO 8 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#undef SIG_BLOCK +#undef SIG_UNBLOCK +#undef SIG_SETMASK +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +#undef SI_ASYNCIO +#undef SI_MESGQ +#undef SI_TIMER +#define SI_ASYNCIO (-2) +#define SI_MESGQ (-4) +#define SI_TIMER (-3) + +#define __SI_SWAP_ERRNO_CODE + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGEMT 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGBUS 10 +#define SIGSEGV 11 +#define SIGSYS 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGUSR1 16 +#define SIGUSR2 17 +#define SIGCHLD 18 +#define SIGPWR 19 +#define SIGWINCH 20 +#define SIGURG 21 +#define SIGIO 22 +#define SIGPOLL SIGIO +#define SIGSTOP 23 +#define SIGTSTP 24 +#define SIGCONT 25 +#define SIGTTIN 26 +#define SIGTTOU 27 +#define SIGVTALRM 28 +#define SIGPROF 29 +#define SIGXCPU 30 +#define SIGXFSZ 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 128 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/socket.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/socket.h new file mode 100644 index 000000000..02fbb88b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/socket.h @@ -0,0 +1,35 @@ +#define SOCK_STREAM 2 +#define SOCK_DGRAM 1 + +#define SOL_SOCKET 65535 + +#define SO_DEBUG 1 + +#define SO_REUSEADDR 0x0004 +#define SO_KEEPALIVE 0x0008 +#define SO_DONTROUTE 0x0010 +#define SO_BROADCAST 0x0020 +#define SO_LINGER 0x0080 +#define SO_OOBINLINE 0x0100 +#define SO_REUSEPORT 0x0200 +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#define SO_ACCEPTCONN 0x1009 +#define SO_PROTOCOL 0x1028 +#define SO_DOMAIN 0x1029 + +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_BSDCOMPAT 14 +#define SO_PASSCRED 17 +#define SO_PEERCRED 18 +#define SO_PEERSEC 30 +#define SO_SNDBUFFORCE 31 +#define SO_RCVBUFFORCE 33 + +#define SOCK_NONBLOCK 0200 +#define SOCK_CLOEXEC 02000000 diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stat.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stat.h new file mode 100644 index 000000000..6e2f28086 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stat.h @@ -0,0 +1,23 @@ +struct stat { + dev_t st_dev; + long __pad1[2]; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long __pad2[2]; + off_t st_size; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + blksize_t st_blksize; + long __pad3; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long __pad4[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/statfs.h new file mode 100644 index 000000000..a73bd547c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/statfs.h @@ -0,0 +1,8 @@ +struct statfs { + unsigned long f_type, f_bsize, f_frsize; + fsblkcnt_t f_blocks, f_bfree; + fsfilcnt_t f_files, f_ffree; + fsblkcnt_t f_bavail; + fsid_t f_fsid; + unsigned long f_namelen, f_flags, f_spare[5]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/termios.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/termios.h new file mode 100644 index 000000000..9d571f78f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/termios.h @@ -0,0 +1,169 @@ +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VMIN 4 +#define VTIME 5 +#define VEOL2 6 +#define VSWTC 7 +#define VSWTCH 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOF 16 +#define VEOL 17 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 +#endif + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define IEXTEN 0000400 +#define TOSTOP 0100000 +#define ITOSTOP 0100000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 0010017 +#define CBAUDEX 0010000 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0000004 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0020000 +#define PENDIN 0040000 +#define EXTPROC 0200000 + +#define XTABS 0014000 +#define TIOCSER_TEMT 1 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/bits/user.h b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/user.h new file mode 100644 index 000000000..60fa1fda9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/bits/user.h @@ -0,0 +1,15 @@ +struct user { + unsigned long regs[102]; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long long start_code, start_data, start_stack; + long long signal; + unsigned long long *u_ar0; + unsigned long long magic; + char u_comm[32]; +}; + +#define ELF_NGREG 45 +#define ELF_NFPREG 33 + +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/crt_arch.h b/vendor/modernc.org/libc/musl/arch/mipsn32/crt_arch.h new file mode 100644 index 000000000..eb5928ccb --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/crt_arch.h @@ -0,0 +1,32 @@ +__asm__( +".set push\n" +".set noreorder\n" +".text \n" +".global _" START "\n" +".global " START "\n" +".global " START "_data\n" +".type _" START ", @function\n" +".type " START ", @function\n" +".type " START "_data, @function\n" +"_" START ":\n" +"" START ":\n" +" bal 1f \n" +" move $fp, $0 \n" +"" START "_data: \n" +" .gpword " START "_data \n" +" .gpword " START "_c \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" .gpword _DYNAMIC \n" +"1: lw $gp, 0($ra) \n" +" subu $gp, $ra, $gp \n" +" move $4, $sp \n" +" lw $5, 8($ra) \n" +" addu $5, $5, $gp \n" +" lw $25, 4($ra) \n" +" addu $25, $25, $gp \n" +" and $sp, $sp, -8 \n" +" jalr $25 \n" +" subu $sp, $sp, 16 \n" +".set pop \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/ksigaction.h b/vendor/modernc.org/libc/musl/arch/mipsn32/ksigaction.h new file mode 100644 index 000000000..b565f1fc9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/ksigaction.h @@ -0,0 +1,10 @@ +#include + +struct k_sigaction { + unsigned flags; + void (*handler)(int); + unsigned long mask[4]; + void (*restorer)(); +}; + +hidden void __restore(), __restore_rt(); diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/kstat.h b/vendor/modernc.org/libc/musl/arch/mipsn32/kstat.h new file mode 100644 index 000000000..3841559c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/kstat.h @@ -0,0 +1,22 @@ +struct kstat { + unsigned st_dev; + long __pad1[3]; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + unsigned st_rdev; + long __pad2[3]; + off_t st_size; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + blksize_t st_blksize; + long __pad3; + blkcnt_t st_blocks; + long __pad4[14]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/mipsn32/pthread_arch.h new file mode 100644 index 000000000..1e7839ea6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/pthread_arch.h @@ -0,0 +1,19 @@ +static inline struct pthread *__pthread_self() +{ +#if __mips_isa_rev < 2 + register char *tp __asm__("$3"); + __asm__ (".word 0x7c03e83b" : "=r" (tp) ); +#else + char *tp; + __asm__ ("rdhwr %0, $29" : "=r" (tp) ); +#endif + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +#define MC_PC pc diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/reloc.h b/vendor/modernc.org/libc/musl/arch/mipsn32/reloc.h new file mode 100644 index 000000000..47c6e591f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/reloc.h @@ -0,0 +1,50 @@ +#if __mips_isa_rev >= 6 +#define ISA_SUFFIX "r6" +#else +#define ISA_SUFFIX "" +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "el" +#else +#define ENDIAN_SUFFIX "" +#endif + +#ifdef __mips_soft_float +#define FP_SUFFIX "-sf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "mipsn32" ISA_SUFFIX ENDIAN_SUFFIX FP_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYM_OR_REL R_MIPS_REL32 +#define REL_PLT R_MIPS_JUMP_SLOT +#define REL_COPY R_MIPS_COPY +#define REL_DTPMOD R_MIPS_TLS_DTPMOD32 +#define REL_DTPOFF R_MIPS_TLS_DTPREL32 +#define REL_TPOFF R_MIPS_TLS_TPREL32 + +#define NEED_MIPS_GOT_RELOCS 1 +#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT)) + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + ".set push \n" \ + ".set noreorder \n" \ + " bal 1f \n" \ + " nop \n" \ + " .gpword . \n" \ + " .gpword " #sym " \n" \ + "1: lw %0, ($ra) \n" \ + " subu %0, $ra, %0 \n" \ + " lw $ra, 4($ra) \n" \ + " addu %0, %0, $ra \n" \ + ".set pop \n" \ + : "=r"(*(fp)) : : "memory", "ra" ) diff --git a/vendor/modernc.org/libc/musl/arch/mipsn32/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/mipsn32/syscall_arch.h new file mode 100644 index 000000000..c681905d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/mipsn32/syscall_arch.h @@ -0,0 +1,130 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define SYSCALL_RLIM_INFINITY (-1UL/2) + +#if __mips_isa_rev >= 6 +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$10", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "memory" +#else +#define SYSCALL_CLOBBERLIST \ + "$1", "$3", "$10", "$11", "$12", "$13", \ + "$14", "$15", "$24", "$25", "hi", "lo", "memory" +#endif + +static inline long __syscall0(long n) +{ + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall1(long n, long a) +{ + register long r4 __asm__("$4") = a; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7"); + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "=r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r4 __asm__("$4") = a; + register long r5 __asm__("$5") = b; + register long r6 __asm__("$6") = c; + register long r7 __asm__("$7") = d; + register long r8 __asm__("$8") = e; + register long r9 __asm__("$9") = f; + register long r2 __asm__("$2"); + + __asm__ __volatile__ ( + "daddu $2,$0,%2 ; syscall" + : "=&r"(r2), "+r"(r7) + : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8), "r"(r9) + : SYSCALL_CLOBBERLIST); + return r7 && r2>0 ? -r2 : r2; +} + +#define VDSO_USEFUL +#define VDSO_CGT32_SYM "__vdso_clock_gettime" +#define VDSO_CGT32_VER "LINUX_2.6" +#define VDSO_CGT_SYM "__vdso_clock_gettime64" +#define VDSO_CGT_VER "LINUX_2.6" + +#define SO_SNDTIMEO_OLD 0x1005 +#define SO_RCVTIMEO_OLD 0x1006 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/or1k/atomic_arch.h new file mode 100644 index 000000000..11a542927 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/atomic_arch.h @@ -0,0 +1,14 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__("1: l.lwa %0, %1\n" + " l.sfeq %0, %2\n" + " l.bnf 1f\n" + " l.nop\n" + " l.swa %1, %3\n" + " l.bnf 1b\n" + " l.nop\n" + "1: \n" + : "=&r"(t), "+m"(*p) : "r"(t), "r"(s) : "cc", "memory" ); + return t; +} diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/float.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/limits.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/limits.h new file mode 100644 index 000000000..fac47aadf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 8192 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/msg.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/posix.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/reg.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/reg.h new file mode 100644 index 000000000..0c7bffca0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +/* FIXME */ diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/sem.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/sem.h new file mode 100644 index 000000000..d88338e69 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/sem.h @@ -0,0 +1,13 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/setjmp.h new file mode 100644 index 000000000..bef7fe2a4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[13]; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/shm.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/shm.h new file mode 100644 index 000000000..725fb4696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/signal.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/signal.h new file mode 100644 index 000000000..be576d1d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/signal.h @@ -0,0 +1,85 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t, gregset_t[34]; +typedef struct sigcontext { + struct { + unsigned long gpr[32]; + unsigned long pc; + unsigned long sr; + } regs; + unsigned long oldmask; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[35]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/stat.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/stat.h new file mode 100644 index 000000000..cde3fd027 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long long __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + int __st_blksize_padding; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + unsigned __unused[2]; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/or1k/bits/user.h b/vendor/modernc.org/libc/musl/arch/or1k/bits/user.h new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/arch/or1k/crt_arch.h b/vendor/modernc.org/libc/musl/arch/or1k/crt_arch.h new file mode 100644 index 000000000..9e310ca97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/crt_arch.h @@ -0,0 +1,18 @@ +__asm__( +".text \n" +".global " START " \n" +".align 4 \n" +START ": \n" +" l.jal 1f \n" +" l.ori r3, r1, 0 \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" .word _DYNAMIC-. \n" +"1: l.lwz r4, 0(r9) \n" +" l.add r4, r4, r9 \n" +" l.addi r2, r0, -8 \n" +" l.and r1, r1, r2 \n" +" l.addi r1, r1, -16 \n" +" l.jal " START "_c \n" +" l.ori r2, r0, 0 \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/or1k/kstat.h b/vendor/modernc.org/libc/musl/arch/or1k/kstat.h new file mode 100644 index 000000000..c14495796 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + long long __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + int __st_blksize_padding; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/or1k/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/or1k/pthread_arch.h new file mode 100644 index 000000000..1b806f891 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/pthread_arch.h @@ -0,0 +1,18 @@ +/* or1k use variant I, but with the twist that tp points to the end of TCB */ +static inline struct pthread *__pthread_self() +{ +#ifdef __clang__ + char *tp; + __asm__ ("l.ori %0, r10, 0" : "=r" (tp) ); +#else + register char *tp __asm__("r10"); + __asm__ ("" : "=r" (tp) ); +#endif + return (struct pthread *) (tp - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) + +#define MC_PC regs.pc diff --git a/vendor/modernc.org/libc/musl/arch/or1k/reloc.h b/vendor/modernc.org/libc/musl/arch/or1k/reloc.h new file mode 100644 index 000000000..128089cac --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/reloc.h @@ -0,0 +1,24 @@ +#define LDSO_ARCH "or1k" + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_OR1K_32 +#define REL_GOT R_OR1K_GLOB_DAT +#define REL_PLT R_OR1K_JMP_SLOT +#define REL_RELATIVE R_OR1K_RELATIVE +#define REL_COPY R_OR1K_COPY +#define REL_DTPMOD R_OR1K_TLS_DTPMOD +#define REL_DTPOFF R_OR1K_TLS_DTPOFF +#define REL_TPOFF R_OR1K_TLS_TPOFF + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "l.jr %0 ; l.ori r1,%1,0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym " \n" \ + " l.jal 1f \n" \ + " l.nop \n" \ + " .word " #sym "-. \n" \ + "1: l.lwz %0, 0(r9) \n" \ + " l.add %0, %0, r9 \n" \ + : "=r"(*(fp)) : : "memory", "r9" ) diff --git a/vendor/modernc.org/libc/musl/arch/or1k/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/or1k/syscall_arch.h new file mode 100644 index 000000000..21738ce07 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/or1k/syscall_arch.h @@ -0,0 +1,115 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) + +#define SYSCALL_MMAP2_UNIT 8192ULL + +static __inline long __syscall0(long n) +{ + register unsigned long r11 __asm__("r11") = n; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11) + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall1(long n, long a) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3) + : "memory", "r4", "r5", "r6", "r7", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall2(long n, long a, long b) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + register unsigned long r4 __asm__("r4") = b; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3), "r"(r4) + : "memory", "r5", "r6", "r7", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + register unsigned long r4 __asm__("r4") = b; + register unsigned long r5 __asm__("r5") = c; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3), "r"(r4), "r"(r5) + : "memory", "r6", "r7", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + register unsigned long r4 __asm__("r4") = b; + register unsigned long r5 __asm__("r5") = c; + register unsigned long r6 __asm__("r6") = d; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6) + : "memory", "r7", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + register unsigned long r4 __asm__("r4") = b; + register unsigned long r5 __asm__("r5") = c; + register unsigned long r6 __asm__("r6") = d; + register unsigned long r7 __asm__("r7") = e; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6), + "r"(r7) + : "memory", "r8", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register unsigned long r11 __asm__("r11") = n; + register unsigned long r3 __asm__("r3") = a; + register unsigned long r4 __asm__("r4") = b; + register unsigned long r5 __asm__("r5") = c; + register unsigned long r6 __asm__("r6") = d; + register unsigned long r7 __asm__("r7") = e; + register unsigned long r8 __asm__("r8") = f; + __asm__ __volatile__ ("l.sys 1" + : "=r"(r11) + : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6), + "r"(r7), "r"(r8) + : "memory", + "r12", "r13", "r15", "r17", "r19", "r21", + "r23", "r25", "r27", "r29", "r31"); + return r11; +} + +#define IPC_64 0 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc/atomic_arch.h new file mode 100644 index 000000000..c26739197 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/atomic_arch.h @@ -0,0 +1,38 @@ +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ("lwarx %0, 0, %2" : "=r"(v) : "m"(*p), "r"(p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ( + "stwcx. %2, 0, %3 ; mfcr %0" + : "=r"(r), "=m"(*p) : "r"(v), "r"(p) : "memory", "cc"); + return r & 0x20000000; /* "bit 2" of "cr0" (backwards bit order) */ +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("sync" : : : "memory"); +} + +#define a_pre_llsc a_barrier + +#define a_post_llsc a_post_llsc +static inline void a_post_llsc() +{ + __asm__ __volatile__ ("isync" : : : "memory"); +} + +#define a_clz_32 a_clz_32 +static inline int a_clz_32(uint32_t x) +{ + __asm__ ("cntlzw %0, %1" : "=r"(x) : "r"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/errno.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/errno.h new file mode 100644 index 000000000..cae3f3865 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK 58 +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +#define ERFKILL 132 +#define EHWPOISON 133 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/fcntl.h new file mode 100644 index 000000000..c3f875e5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 0400000 +#define O_LARGEFILE 0200000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020040000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/fenv.h new file mode 100644 index 000000000..c5a3e5c5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/fenv.h @@ -0,0 +1,36 @@ +#ifdef _SOFT_FLOAT +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 + +#define FE_INEXACT 0x02000000 +#define FE_DIVBYZERO 0x04000000 +#define FE_UNDERFLOW 0x08000000 +#define FE_OVERFLOW 0x10000000 +#define FE_INVALID 0x20000000 + +#define FE_ALL_EXCEPT 0x3e000000 + +#ifdef _GNU_SOURCE +#define FE_INVALID_SNAN 0x01000000 +#define FE_INVALID_ISI 0x00800000 +#define FE_INVALID_IDI 0x00400000 +#define FE_INVALID_ZDZ 0x00200000 +#define FE_INVALID_IMZ 0x00100000 +#define FE_INVALID_COMPARE 0x00080000 +#define FE_INVALID_SOFTWARE 0x00000400 +#define FE_INVALID_SQRT 0x00000200 +#define FE_INVALID_INTEGER_CONVERSION 0x00000100 + +#define FE_ALL_INVALID 0x01f80700 +#endif +#endif + +typedef unsigned fexcept_t; +typedef double fenv_t; + +#define FE_DFL_ENV ((const fenv_t *)-1) diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/float.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/hwcap.h new file mode 100644 index 000000000..803de9b5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/hwcap.h @@ -0,0 +1,43 @@ +#define PPC_FEATURE_32 0x80000000 +#define PPC_FEATURE_64 0x40000000 +#define PPC_FEATURE_601_INSTR 0x20000000 +#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 +#define PPC_FEATURE_HAS_FPU 0x08000000 +#define PPC_FEATURE_HAS_MMU 0x04000000 +#define PPC_FEATURE_HAS_4xxMAC 0x02000000 +#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 +#define PPC_FEATURE_HAS_SPE 0x00800000 +#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 +#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 +#define PPC_FEATURE_NO_TB 0x00100000 +#define PPC_FEATURE_POWER4 0x00080000 +#define PPC_FEATURE_POWER5 0x00040000 +#define PPC_FEATURE_POWER5_PLUS 0x00020000 +#define PPC_FEATURE_CELL 0x00010000 +#define PPC_FEATURE_BOOKE 0x00008000 +#define PPC_FEATURE_SMT 0x00004000 +#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 +#define PPC_FEATURE_ARCH_2_05 0x00001000 +#define PPC_FEATURE_PA6T 0x00000800 +#define PPC_FEATURE_HAS_DFP 0x00000400 +#define PPC_FEATURE_POWER6_EXT 0x00000200 +#define PPC_FEATURE_ARCH_2_06 0x00000100 +#define PPC_FEATURE_HAS_VSX 0x00000080 +#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040 + +#define PPC_FEATURE_TRUE_LE 0x00000002 +#define PPC_FEATURE_PPC_LE 0x00000001 + +#define PPC_FEATURE2_ARCH_2_07 0x80000000 +#define PPC_FEATURE2_HTM 0x40000000 +#define PPC_FEATURE2_DSCR 0x20000000 +#define PPC_FEATURE2_EBB 0x10000000 +#define PPC_FEATURE2_ISEL 0x08000000 +#define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000 +#define PPC_FEATURE2_HTM_NOSC 0x01000000 +#define PPC_FEATURE2_ARCH_3_00 0x00800000 +#define PPC_FEATURE2_HAS_IEEE128 0x00400000 +#define PPC_FEATURE2_DARN 0x00200000 +#define PPC_FEATURE2_SCV 0x00100000 +#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ioctl.h new file mode 100644 index 000000000..ac9bfd204 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ioctl.h @@ -0,0 +1,120 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 1U +#define _IOC_WRITE 4U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define FIONCLEX _IO('f', 2) +#define FIOCLEX _IO('f', 1) +#define FIOASYNC _IOW('f', 125, int) +#define FIONBIO _IOW('f', 126, int) +#define FIONREAD _IOR('f', 127, int) +#define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, char[8]) +#define TIOCGETP _IOR('t', 8, char[6]) +#define TIOCSETP _IOW('t', 9, char[6]) +#define TIOCSETN _IOW('t', 10, char[6]) + +#define TIOCSETC _IOW('t', 17, char[6]) +#define TIOCGETC _IOR('t', 18, char[6]) +#define TCGETS _IOR('t', 19, char[44]) +#define TCSETS _IOW('t', 20, char[44]) +#define TCSETSW _IOW('t', 21, char[44]) +#define TCSETSF _IOW('t', 22, char[44]) + +#define TCGETA _IOR('t', 23, char[20]) +#define TCSETA _IOW('t', 24, char[20]) +#define TCSETAW _IOW('t', 25, char[20]) +#define TCSETAF _IOW('t', 28, char[20]) + +#define TCSBRK _IO('t', 29) +#define TCXONC _IO('t', 30) +#define TCFLSH _IO('t', 31) + +#define TIOCSWINSZ _IOW('t', 103, char[8]) +#define TIOCGWINSZ _IOR('t', 104, char[8]) +#define TIOCSTART _IO('t', 110) +#define TIOCSTOP _IO('t', 111) + +#define TIOCOUTQ _IOR('t', 115, int) + +#define TIOCGLTC _IOR('t', 116, char[6]) +#define TIOCSLTC _IOW('t', 117, char[6]) +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) + +#define TIOCEXCL 0x540C +#define TIOCNXCL 0x540D +#define TIOCSCTTY 0x540E + +#define TIOCSTI 0x5412 +#define TIOCMGET 0x5415 +#define TIOCMBIS 0x5416 +#define TIOCMBIC 0x5417 +#define TIOCMSET 0x5418 +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define TIOCGSOFTCAR 0x5419 +#define TIOCSSOFTCAR 0x541A +#define TIOCLINUX 0x541C +#define TIOCCONS 0x541D +#define TIOCGSERIAL 0x541E +#define TIOCSSERIAL 0x541F +#define TIOCPKT 0x5420 + +#define TIOCNOTTY 0x5422 +#define TIOCSETD 0x5423 +#define TIOCGETD 0x5424 +#define TCSBRKP 0x5425 +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x5429 +#define TIOCGRS485 0x542e +#define TIOCSRS485 0x542f +#define TIOCGPTN _IOR('T',0x30, unsigned int) +#define TIOCSPTLCK _IOW('T',0x31, int) +#define TIOCGDEV _IOR('T',0x32, unsigned int) +#define TIOCSIG _IOW('T',0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSERCONFIG 0x5453 +#define TIOCSERGWILD 0x5454 +#define TIOCSERSWILD 0x5455 +#define TIOCGLCKTRMIOS 0x5456 +#define TIOCSLCKTRMIOS 0x5457 +#define TIOCSERGSTRUCT 0x5458 +#define TIOCSERGETLSR 0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT 0x545C +#define TIOCGICOUNT 0x545D + +#define FIOSETOWN 0x8901 +#define SIOCSPGRP 0x8902 +#define FIOGETOWN 0x8903 +#define SIOCGPGRP 0x8904 +#define SIOCATMARK 0x8905 +#define SIOCGSTAMP _IOR(0x89, 6, char[16]) +#define SIOCGSTAMPNS _IOR(0x89, 7, char[16]) diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipc.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipc.h new file mode 100644 index 000000000..a388d56b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipc.h @@ -0,0 +1,12 @@ +struct ipc_perm { + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + int __pad1; + long long __pad2; + long long __pad3; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/mman.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/mman.h new file mode 100644 index 000000000..95ec4358d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/mman.h @@ -0,0 +1,13 @@ +#define PROT_SAO 0x10 + +#undef MAP_NORESERVE +#define MAP_NORESERVE 0x40 +#undef MAP_LOCKED +#define MAP_LOCKED 0x80 + +#undef MCL_CURRENT +#define MCL_CURRENT 0x2000 +#undef MCL_FUTURE +#define MCL_FUTURE 0x4000 +#undef MCL_ONFAULT +#define MCL_ONFAULT 0x8000 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/msg.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/msg.h new file mode 100644 index 000000000..9fb15dccb --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_hi; + unsigned long __msg_stime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_ctime_hi; + unsigned long __msg_ctime_lo; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/posix.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ptrace.h new file mode 100644 index 000000000..303a0735e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/ptrace.h @@ -0,0 +1,25 @@ +#define PTRACE_GETVRREGS 0x12 +#define PTRACE_SETVRREGS 0x13 +#define PTRACE_GETEVRREGS 0x14 +#define PTRACE_SETEVRREGS 0x15 +#define PTRACE_GETREGS64 0x16 +#define PTRACE_SETREGS64 0x17 +#define PTRACE_GET_DEBUGREG 0x19 +#define PTRACE_SET_DEBUGREG 0x1a +#define PTRACE_GETVSRREGS 0x1b +#define PTRACE_SETVSRREGS 0x1c +#define PTRACE_SYSEMU 0x1d +#define PTRACE_SYSEMU_SINGLESTEP 0x1e +#define PTRACE_SINGLEBLOCK 0x100 + +#define PT_GETVRREGS PTRACE_GETVRREGS +#define PT_SETVRREGS PTRACE_SETVRREGS +#define PT_GETEVRREGS PTRACE_GETEVRREGS +#define PT_SETEVRREGS PTRACE_SETEVRREGS +#define PT_GETREGS64 PTRACE_GETREGS64 +#define PT_SETREGS64 PTRACE_SETREGS64 +#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG +#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG +#define PT_GETVSRREGS PTRACE_GETVSRREGS +#define PT_SETVSRREGS PTRACE_SETVSRREGS +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/reg.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/reg.h new file mode 100644 index 000000000..0c7bffca0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +/* FIXME */ diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/sem.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/sem.h new file mode 100644 index 000000000..28be48452 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/sem.h @@ -0,0 +1,12 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_hi; + unsigned long __sem_otime_lo; + unsigned long __sem_ctime_hi; + unsigned long __sem_ctime_lo; + unsigned short __sem_nsems_pad, sem_nsems; + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/setjmp.h new file mode 100644 index 000000000..1cb0f26d1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[56]; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/shm.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/shm.h new file mode 100644 index 000000000..fb1d4020f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/shm.h @@ -0,0 +1,30 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + unsigned long __shm_atime_hi; + unsigned long __shm_atime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_ctime_hi; + unsigned long __shm_ctime_lo; + size_t shm_segsz; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/signal.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/signal.h new file mode 100644 index 000000000..c1bf3caf3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/signal.h @@ -0,0 +1,119 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 4096 +#define SIGSTKSZ 10240 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +typedef unsigned long greg_t, gregset_t[48]; + +typedef struct { + double fpregs[32]; + double fpscr; + unsigned _pad[2]; +} fpregset_t; + +typedef struct { + unsigned vrregs[32][4]; + unsigned vrsave; + unsigned _pad[2]; + unsigned vscr; +} vrregset_t; + +struct sigcontext { + unsigned long _unused[4]; + int signal; + unsigned long handler; + unsigned long oldmask; + struct pt_regs *regs; +}; + +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + vrregset_t vrregs +#ifdef __GNUC__ + __attribute__((__aligned__(16))) +#endif + ; +} mcontext_t; + +#else + +typedef struct { + long __regs[48+68+4*32+4] +#ifdef __GNUC__ + __attribute__((__aligned__(16))) +#endif + ; +} mcontext_t; + +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + int uc_pad[7]; + mcontext_t *uc_regs; + sigset_t uc_sigmask; + int uc_pad2[3]; + mcontext_t uc_mcontext; +} ucontext_t; + +#define SA_NOCLDSTOP 1U +#define SA_NOCLDWAIT 2U +#define SA_SIGINFO 4U +#define SA_ONSTACK 0x08000000U +#define SA_RESTART 0x10000000U +#define SA_NODEFER 0x40000000U +#define SA_RESETHAND 0x80000000U +#define SA_RESTORER 0x04000000U + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/socket.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/socket.h new file mode 100644 index 000000000..b19ed42bf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/socket.h @@ -0,0 +1,25 @@ +#define SO_DEBUG 1 +#define SO_REUSEADDR 2 +#define SO_TYPE 3 +#define SO_ERROR 4 +#define SO_DONTROUTE 5 +#define SO_BROADCAST 6 +#define SO_SNDBUF 7 +#define SO_RCVBUF 8 +#define SO_KEEPALIVE 9 +#define SO_OOBINLINE 10 +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_LINGER 13 +#define SO_BSDCOMPAT 14 +#define SO_REUSEPORT 15 +#define SO_RCVLOWAT 16 +#define SO_SNDLOWAT 17 +#define SO_PASSCRED 20 +#define SO_PEERCRED 21 +#define SO_ACCEPTCONN 30 +#define SO_PEERSEC 31 +#define SO_SNDBUFFORCE 32 +#define SO_RCVBUFFORCE 33 +#define SO_PROTOCOL 38 +#define SO_DOMAIN 39 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/stat.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/stat.h new file mode 100644 index 000000000..585d98e90 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/stat.h @@ -0,0 +1,24 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + short __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + unsigned __unused[2]; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/termios.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/termios.h new file mode 100644 index 000000000..da1f406bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/termios.h @@ -0,0 +1,171 @@ +#undef NCCS +#define NCCS 19 +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_cc[NCCS]; + cc_t c_line; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +#define VMIN 5 +#define VEOL 6 +#define VTIME 7 +#define VEOL2 8 +#define VSWTC 9 +#define VWERASE 10 +#define VREPRINT 11 +#define VSUSP 12 +#define VSTART 13 +#define VSTOP 14 +#define VLNEXT 15 +#define VDISCARD 16 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IXON 0001000 +#define IXOFF 0002000 +#define IXANY 0004000 +#define IUCLC 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define ONLCR 0000002 +#define OLCUC 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0001400 +#define NL0 0000000 +#define NL1 0000400 +#define NL2 0001000 +#define NL3 0001400 +#define TABDLY 0006000 +#define TAB0 0000000 +#define TAB1 0002000 +#define TAB2 0004000 +#define TAB3 0006000 +#define CRDLY 0030000 +#define CR0 0000000 +#define CR1 0010000 +#define CR2 0020000 +#define CR3 0030000 +#define FFDLY 0040000 +#define FF0 0000000 +#define FF1 0040000 +#define BSDLY 0100000 +#define BS0 0000000 +#define BS1 0100000 +#endif + +#define VTDLY 0200000 +#define VT0 0000000 +#define VT1 0200000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 00020 +#define B115200 00021 +#define B230400 00022 +#define B460800 00023 +#define B500000 00024 +#define B576000 00025 +#define B921600 00026 +#define B1000000 00027 +#define B1152000 00030 +#define B1500000 00031 +#define B2000000 00032 +#define B2500000 00033 +#define B3000000 00034 +#define B3500000 00035 +#define B4000000 00036 + +#define CSIZE 00001400 +#define CS5 00000000 +#define CS6 00000400 +#define CS7 00001000 +#define CS8 00001400 +#define CSTOPB 00002000 +#define CREAD 00004000 +#define PARENB 00010000 +#define PARODD 00020000 +#define HUPCL 00040000 +#define CLOCAL 00100000 + +#define ECHOE 0x00000002 +#define ECHOK 0x00000004 +#define ECHO 0x00000008 +#define ECHONL 0x00000010 +#define ISIG 0x00000080 +#define ICANON 0x00000100 +#define IEXTEN 0x00000400 +#define TOSTOP 0x00400000 +#define NOFLSH 0x80000000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 00377 +#define CBAUDEX 0000020 +#define CIBAUD 077600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0x00004000 +#define ECHOCTL 0x00000040 +#define ECHOPRT 0x00000020 +#define ECHOKE 0x00000001 +#define FLUSHO 0x00800000 +#define PENDIN 0x20000000 +#define EXTPROC 0x10000000 + +#define XTABS 00006000 +#define TIOCSER_TEMT 1 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/bits/user.h b/vendor/modernc.org/libc/musl/arch/powerpc/bits/user.h new file mode 100644 index 000000000..7f5287463 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/bits/user.h @@ -0,0 +1,23 @@ +struct user { + struct { + unsigned long gpr[32], nip, msr, orig_gpr3, ctr, link, xer, ccr, mq; + unsigned long trap, dar, dsisr, result; + } regs; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long start_code, start_data, start_stack; + long signal; + void *u_ar0; + unsigned long magic; + char u_comm[32]; +}; + +#define ELF_NGREG 48 +#define ELF_NFPREG 33 +#define ELF_NVRREG 33 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; +typedef struct { unsigned u[4]; } +#ifdef __GNUC__ +__attribute__((__aligned__(16))) +#endif + elf_vrreg_t, elf_vrregset_t[ELF_NVRREG]; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/crt_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc/crt_arch.h new file mode 100644 index 000000000..9b65886f9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/crt_arch.h @@ -0,0 +1,20 @@ +__asm__( +".text \n" +".global " START " \n" +".type " START ", %function \n" +START ": \n" +" bl 1f \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" .long _DYNAMIC-. \n" +"1: mflr 4 \n" +" lwz 3, 0(4) \n" +" add 4, 3, 4 \n" +" mr 3, 1 \n" +" clrrwi 1, 1, 4 \n" +" li 0, 0 \n" +" stwu 1, -16(1) \n" +" mtlr 0 \n" +" stw 0, 0(1) \n" +" bl " START "_c \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/kstat.h b/vendor/modernc.org/libc/musl/arch/powerpc/kstat.h new file mode 100644 index 000000000..5a611e7b3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/kstat.h @@ -0,0 +1,20 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + short __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc/pthread_arch.h new file mode 100644 index 000000000..ae0f28d6d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/pthread_arch.h @@ -0,0 +1,18 @@ +static inline struct pthread *__pthread_self() +{ + register char *tp __asm__("r2"); + __asm__ ("" : "=r" (tp) ); + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +// the kernel calls the ip "nip", it's the first saved value after the 32 +// GPRs. +#define MC_PC gregs[32] + +#define CANARY canary_at_end diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/reloc.h b/vendor/modernc.org/libc/musl/arch/powerpc/reloc.h new file mode 100644 index 000000000..527b6b7cd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/reloc.h @@ -0,0 +1,31 @@ +#ifdef _SOFT_FLOAT +#define FP_SUFFIX "-sf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "powerpc" FP_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYMBOLIC R_PPC_ADDR32 +#define REL_USYMBOLIC R_PPC_UADDR32 +#define REL_GOT R_PPC_GLOB_DAT +#define REL_PLT R_PPC_JMP_SLOT +#define REL_RELATIVE R_PPC_RELATIVE +#define REL_COPY R_PPC_COPY +#define REL_DTPMOD R_PPC_DTPMOD32 +#define REL_DTPOFF R_PPC_DTPREL32 +#define REL_TPOFF R_PPC_TPREL32 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mr 1,%1 ; mtlr %0 ; blr" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym " \n" \ + " bl 1f \n" \ + " .long " #sym "-. \n" \ + "1: mflr %1 \n" \ + " lwz %0, 0(%1) \n" \ + " add %0, %0, %1 \n" \ + : "=r"(*(fp)), "=r"((int){0}) : : "memory", "lr" ) diff --git a/vendor/modernc.org/libc/musl/arch/powerpc/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc/syscall_arch.h new file mode 100644 index 000000000..ede97c1c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc/syscall_arch.h @@ -0,0 +1,94 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + +static inline long __syscall0(long n) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3"); + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "=r"(r3) + :: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall1(long n, long a) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3) + :: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4) + :: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5) + :: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6) + :: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + register long r7 __asm__("r7") = e; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7) + :: "memory", "cr0", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + register long r7 __asm__("r7") = e; + register long r8 __asm__("r8") = f; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7), "+r"(r8) + :: "memory", "cr0", "r9", "r10", "r11", "r12"); + return r3; +} + +#define SYSCALL_FADVISE_6_ARG + +#define SO_RCVTIMEO_OLD 18 +#define SO_SNDTIMEO_OLD 19 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc64/atomic_arch.h new file mode 100644 index 000000000..2bed82be2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/atomic_arch.h @@ -0,0 +1,62 @@ +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ("lwarx %0, 0, %2" : "=r"(v) : "m"(*p), "r"(p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ( + "stwcx. %2, 0, %3 ; mfcr %0" + : "=r"(r), "=m"(*p) : "r"(v), "r"(p) : "memory", "cc"); + return r & 0x20000000; /* "bit 2" of "cr0" (backwards bit order) */ +} + +#define a_ll_p a_ll_p +static inline void *a_ll_p(volatile void *p) +{ + void *v; + __asm__ __volatile__ ("ldarx %0, 0, %2" : "=r"(v) : "m"(*(void *volatile *)p), "r"(p)); + return v; +} + +#define a_sc_p a_sc_p +static inline int a_sc_p(volatile void *p, void *v) +{ + int r; + __asm__ __volatile__ ( + "stdcx. %2, 0, %3 ; mfcr %0" + : "=r"(r), "=m"(*(void *volatile *)p) : "r"(v), "r"(p) : "memory", "cc"); + return r & 0x20000000; /* "bit 2" of "cr0" (backwards bit order) */ +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("sync" : : : "memory"); +} + +#define a_pre_llsc a_barrier + +#define a_post_llsc a_post_llsc +static inline void a_post_llsc() +{ + __asm__ __volatile__ ("isync" : : : "memory"); +} + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__ (".long 0"); +} + +#define a_clz_64 a_clz_64 +static inline int a_clz_64(uint64_t x) +{ + __asm__ ("cntlzd %0, %1" : "=r"(x) : "r"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/errno.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/errno.h new file mode 100644 index 000000000..cae3f3865 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/errno.h @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK 58 +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +#define ERFKILL 132 +#define EHWPOISON 133 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fcntl.h new file mode 100644 index 000000000..6f20bac58 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 0400000 +#define O_LARGEFILE 0200000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020040000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fenv.h new file mode 100644 index 000000000..2f722e6b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/fenv.h @@ -0,0 +1,31 @@ +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 + +#define FE_INEXACT 0x02000000 +#define FE_DIVBYZERO 0x04000000 +#define FE_UNDERFLOW 0x08000000 +#define FE_OVERFLOW 0x10000000 +#define FE_INVALID 0x20000000 + +#define FE_ALL_EXCEPT 0x3e000000 + +#ifdef _GNU_SOURCE +#define FE_INVALID_SNAN 0x01000000 +#define FE_INVALID_ISI 0x00800000 +#define FE_INVALID_IDI 0x00400000 +#define FE_INVALID_ZDZ 0x00200000 +#define FE_INVALID_IMZ 0x00100000 +#define FE_INVALID_COMPARE 0x00080000 +#define FE_INVALID_SOFTWARE 0x00000400 +#define FE_INVALID_SQRT 0x00000200 +#define FE_INVALID_INTEGER_CONVERSION 0x00000100 + +#define FE_ALL_INVALID 0x01f80700 +#endif + +typedef unsigned fexcept_t; +typedef double fenv_t; + +#define FE_DFL_ENV ((const fenv_t *)-1) diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/float.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/hwcap.h new file mode 100644 index 000000000..803de9b5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/hwcap.h @@ -0,0 +1,43 @@ +#define PPC_FEATURE_32 0x80000000 +#define PPC_FEATURE_64 0x40000000 +#define PPC_FEATURE_601_INSTR 0x20000000 +#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 +#define PPC_FEATURE_HAS_FPU 0x08000000 +#define PPC_FEATURE_HAS_MMU 0x04000000 +#define PPC_FEATURE_HAS_4xxMAC 0x02000000 +#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 +#define PPC_FEATURE_HAS_SPE 0x00800000 +#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 +#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 +#define PPC_FEATURE_NO_TB 0x00100000 +#define PPC_FEATURE_POWER4 0x00080000 +#define PPC_FEATURE_POWER5 0x00040000 +#define PPC_FEATURE_POWER5_PLUS 0x00020000 +#define PPC_FEATURE_CELL 0x00010000 +#define PPC_FEATURE_BOOKE 0x00008000 +#define PPC_FEATURE_SMT 0x00004000 +#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 +#define PPC_FEATURE_ARCH_2_05 0x00001000 +#define PPC_FEATURE_PA6T 0x00000800 +#define PPC_FEATURE_HAS_DFP 0x00000400 +#define PPC_FEATURE_POWER6_EXT 0x00000200 +#define PPC_FEATURE_ARCH_2_06 0x00000100 +#define PPC_FEATURE_HAS_VSX 0x00000080 +#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040 + +#define PPC_FEATURE_TRUE_LE 0x00000002 +#define PPC_FEATURE_PPC_LE 0x00000001 + +#define PPC_FEATURE2_ARCH_2_07 0x80000000 +#define PPC_FEATURE2_HTM 0x40000000 +#define PPC_FEATURE2_DSCR 0x20000000 +#define PPC_FEATURE2_EBB 0x10000000 +#define PPC_FEATURE2_ISEL 0x08000000 +#define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000 +#define PPC_FEATURE2_HTM_NOSC 0x01000000 +#define PPC_FEATURE2_ARCH_3_00 0x00800000 +#define PPC_FEATURE2_HAS_IEEE128 0x00400000 +#define PPC_FEATURE2_DARN 0x00200000 +#define PPC_FEATURE2_SCV 0x00100000 +#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ioctl.h new file mode 100644 index 000000000..b6cbb18f4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ioctl.h @@ -0,0 +1,120 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 1U +#define _IOC_WRITE 4U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define FIONCLEX _IO('f', 2) +#define FIOCLEX _IO('f', 1) +#define FIOASYNC _IOW('f', 125, int) +#define FIONBIO _IOW('f', 126, int) +#define FIONREAD _IOR('f', 127, int) +#define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, char[8]) +#define TIOCGETP _IOR('t', 8, char[6]) +#define TIOCSETP _IOW('t', 9, char[6]) +#define TIOCSETN _IOW('t', 10, char[6]) + +#define TIOCSETC _IOW('t', 17, char[6]) +#define TIOCGETC _IOR('t', 18, char[6]) +#define TCGETS _IOR('t', 19, char[44]) +#define TCSETS _IOW('t', 20, char[44]) +#define TCSETSW _IOW('t', 21, char[44]) +#define TCSETSF _IOW('t', 22, char[44]) + +#define TCGETA _IOR('t', 23, char[20]) +#define TCSETA _IOW('t', 24, char[20]) +#define TCSETAW _IOW('t', 25, char[20]) +#define TCSETAF _IOW('t', 28, char[20]) + +#define TCSBRK _IO('t', 29) +#define TCXONC _IO('t', 30) +#define TCFLSH _IO('t', 31) + +#define TIOCSWINSZ _IOW('t', 103, char[8]) +#define TIOCGWINSZ _IOR('t', 104, char[8]) +#define TIOCSTART _IO('t', 110) +#define TIOCSTOP _IO('t', 111) + +#define TIOCOUTQ _IOR('t', 115, int) + +#define TIOCGLTC _IOR('t', 116, char[6]) +#define TIOCSLTC _IOW('t', 117, char[6]) +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) + +#define TIOCEXCL 0x540C +#define TIOCNXCL 0x540D +#define TIOCSCTTY 0x540E + +#define TIOCSTI 0x5412 +#define TIOCMGET 0x5415 +#define TIOCMBIS 0x5416 +#define TIOCMBIC 0x5417 +#define TIOCMSET 0x5418 +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define TIOCGSOFTCAR 0x5419 +#define TIOCSSOFTCAR 0x541A +#define TIOCLINUX 0x541C +#define TIOCCONS 0x541D +#define TIOCGSERIAL 0x541E +#define TIOCSSERIAL 0x541F +#define TIOCPKT 0x5420 + +#define TIOCNOTTY 0x5422 +#define TIOCSETD 0x5423 +#define TIOCGETD 0x5424 +#define TCSBRKP 0x5425 +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x5429 +#define TIOCGRS485 0x542e +#define TIOCSRS485 0x542f +#define TIOCGPTN _IOR('T',0x30, unsigned int) +#define TIOCSPTLCK _IOW('T',0x31, int) +#define TIOCGDEV _IOR('T',0x32, unsigned int) +#define TIOCSIG _IOW('T',0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSERCONFIG 0x5453 +#define TIOCSERGWILD 0x5454 +#define TIOCSERSWILD 0x5455 +#define TIOCGLCKTRMIOS 0x5456 +#define TIOCSLCKTRMIOS 0x5457 +#define TIOCSERGSTRUCT 0x5458 +#define TIOCSERGETLSR 0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT 0x545C +#define TIOCGICOUNT 0x545D + +#define FIOSETOWN 0x8901 +#define SIOCSPGRP 0x8902 +#define FIOGETOWN 0x8903 +#define SIOCGPGRP 0x8904 +#define SIOCATMARK 0x8905 +#define SIOCGSTAMP 0x8906 +#define SIOCGSTAMPNS 0x8907 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ipc.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ipc.h new file mode 100644 index 000000000..a388d56b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ipc.h @@ -0,0 +1,12 @@ +struct ipc_perm { + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + int __pad1; + long long __pad2; + long long __pad3; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/mman.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/mman.h new file mode 100644 index 000000000..95ec4358d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/mman.h @@ -0,0 +1,13 @@ +#define PROT_SAO 0x10 + +#undef MAP_NORESERVE +#define MAP_NORESERVE 0x40 +#undef MAP_LOCKED +#define MAP_LOCKED 0x80 + +#undef MCL_CURRENT +#define MCL_CURRENT 0x2000 +#undef MCL_FUTURE +#define MCL_FUTURE 0x4000 +#undef MCL_ONFAULT +#define MCL_ONFAULT 0x8000 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/posix.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/posix.h new file mode 100644 index 000000000..c37b94c14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ptrace.h new file mode 100644 index 000000000..303a0735e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/ptrace.h @@ -0,0 +1,25 @@ +#define PTRACE_GETVRREGS 0x12 +#define PTRACE_SETVRREGS 0x13 +#define PTRACE_GETEVRREGS 0x14 +#define PTRACE_SETEVRREGS 0x15 +#define PTRACE_GETREGS64 0x16 +#define PTRACE_SETREGS64 0x17 +#define PTRACE_GET_DEBUGREG 0x19 +#define PTRACE_SET_DEBUGREG 0x1a +#define PTRACE_GETVSRREGS 0x1b +#define PTRACE_SETVSRREGS 0x1c +#define PTRACE_SYSEMU 0x1d +#define PTRACE_SYSEMU_SINGLESTEP 0x1e +#define PTRACE_SINGLEBLOCK 0x100 + +#define PT_GETVRREGS PTRACE_GETVRREGS +#define PT_SETVRREGS PTRACE_SETVRREGS +#define PT_GETEVRREGS PTRACE_GETEVRREGS +#define PT_SETEVRREGS PTRACE_SETEVRREGS +#define PT_GETREGS64 PTRACE_GETREGS64 +#define PT_SETREGS64 PTRACE_SETREGS64 +#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG +#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG +#define PT_GETVSRREGS PTRACE_GETVSRREGS +#define PT_SETVSRREGS PTRACE_SETVSRREGS +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/reg.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/reg.h new file mode 100644 index 000000000..49382c8f7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 +/* FIXME */ diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/setjmp.h new file mode 100644 index 000000000..f7370e3e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned __int128 __jmp_buf[32]; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/shm.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/shm.h new file mode 100644 index 000000000..b7f73a8de --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/shm.h @@ -0,0 +1,23 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; + size_t shm_segsz; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __unused[2]; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/signal.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/signal.h new file mode 100644 index 000000000..d5493b185 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/signal.h @@ -0,0 +1,110 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 4096 +#define SIGSTKSZ 10240 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +typedef unsigned long greg_t, gregset_t[48]; +typedef double fpregset_t[33]; + +typedef struct { +#ifdef __GNUC__ + __attribute__((__aligned__(16))) +#endif + unsigned vrregs[32][4]; + struct { +#if __BIG_ENDIAN__ + unsigned _pad[3], vscr_word; +#else + unsigned vscr_word, _pad[3]; +#endif + } vscr; + unsigned vrsave, _pad[3]; +} vrregset_t; + +typedef struct sigcontext { + unsigned long _unused[4]; + int signal; + int _pad0; + unsigned long handler; + unsigned long oldmask; + struct pt_regs *regs; + gregset_t gp_regs; + fpregset_t fp_regs; + vrregset_t *v_regs; + long vmx_reserve[34+34+32+1]; +} mcontext_t; + +#else + +typedef struct { + long __regs[4+4+48+33+1+34+34+32+1]; +} mcontext_t; + +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#define SA_NOCLDSTOP 1U +#define SA_NOCLDWAIT 2U +#define SA_SIGINFO 4U +#define SA_ONSTACK 0x08000000U +#define SA_RESTART 0x10000000U +#define SA_NODEFER 0x40000000U +#define SA_RESETHAND 0x80000000U +#define SA_RESTORER 0x04000000U + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/socket.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/socket.h new file mode 100644 index 000000000..557e324fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/socket.h @@ -0,0 +1,27 @@ +#define SO_DEBUG 1 +#define SO_REUSEADDR 2 +#define SO_TYPE 3 +#define SO_ERROR 4 +#define SO_DONTROUTE 5 +#define SO_BROADCAST 6 +#define SO_SNDBUF 7 +#define SO_RCVBUF 8 +#define SO_KEEPALIVE 9 +#define SO_OOBINLINE 10 +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_LINGER 13 +#define SO_BSDCOMPAT 14 +#define SO_REUSEPORT 15 +#define SO_RCVLOWAT 16 +#define SO_SNDLOWAT 17 +#define SO_RCVTIMEO 18 +#define SO_SNDTIMEO 19 +#define SO_PASSCRED 20 +#define SO_PEERCRED 21 +#define SO_ACCEPTCONN 30 +#define SO_PEERSEC 31 +#define SO_SNDBUFFORCE 32 +#define SO_RCVBUFFORCE 33 +#define SO_PROTOCOL 38 +#define SO_DOMAIN 39 diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stat.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stat.h new file mode 100644 index 000000000..320b49bb6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stat.h @@ -0,0 +1,16 @@ +struct stat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + unsigned long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/termios.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/termios.h new file mode 100644 index 000000000..da1f406bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/termios.h @@ -0,0 +1,171 @@ +#undef NCCS +#define NCCS 19 +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_cc[NCCS]; + cc_t c_line; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +#define VMIN 5 +#define VEOL 6 +#define VTIME 7 +#define VEOL2 8 +#define VSWTC 9 +#define VWERASE 10 +#define VREPRINT 11 +#define VSUSP 12 +#define VSTART 13 +#define VSTOP 14 +#define VLNEXT 15 +#define VDISCARD 16 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IXON 0001000 +#define IXOFF 0002000 +#define IXANY 0004000 +#define IUCLC 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define ONLCR 0000002 +#define OLCUC 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) +#define NLDLY 0001400 +#define NL0 0000000 +#define NL1 0000400 +#define NL2 0001000 +#define NL3 0001400 +#define TABDLY 0006000 +#define TAB0 0000000 +#define TAB1 0002000 +#define TAB2 0004000 +#define TAB3 0006000 +#define CRDLY 0030000 +#define CR0 0000000 +#define CR1 0010000 +#define CR2 0020000 +#define CR3 0030000 +#define FFDLY 0040000 +#define FF0 0000000 +#define FF1 0040000 +#define BSDLY 0100000 +#define BS0 0000000 +#define BS1 0100000 +#endif + +#define VTDLY 0200000 +#define VT0 0000000 +#define VT1 0200000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 00020 +#define B115200 00021 +#define B230400 00022 +#define B460800 00023 +#define B500000 00024 +#define B576000 00025 +#define B921600 00026 +#define B1000000 00027 +#define B1152000 00030 +#define B1500000 00031 +#define B2000000 00032 +#define B2500000 00033 +#define B3000000 00034 +#define B3500000 00035 +#define B4000000 00036 + +#define CSIZE 00001400 +#define CS5 00000000 +#define CS6 00000400 +#define CS7 00001000 +#define CS8 00001400 +#define CSTOPB 00002000 +#define CREAD 00004000 +#define PARENB 00010000 +#define PARODD 00020000 +#define HUPCL 00040000 +#define CLOCAL 00100000 + +#define ECHOE 0x00000002 +#define ECHOK 0x00000004 +#define ECHO 0x00000008 +#define ECHONL 0x00000010 +#define ISIG 0x00000080 +#define ICANON 0x00000100 +#define IEXTEN 0x00000400 +#define TOSTOP 0x00400000 +#define NOFLSH 0x80000000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define EXTA 0000016 +#define EXTB 0000017 +#define CBAUD 00377 +#define CBAUDEX 0000020 +#define CIBAUD 077600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 + +#define XCASE 0x00004000 +#define ECHOCTL 0x00000040 +#define ECHOPRT 0x00000020 +#define ECHOKE 0x00000001 +#define FLUSHO 0x00800000 +#define PENDIN 0x20000000 +#define EXTPROC 0x10000000 + +#define XTABS 00006000 +#define TIOCSER_TEMT 1 +#endif diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/bits/user.h b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/user.h new file mode 100644 index 000000000..7e75d2015 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/bits/user.h @@ -0,0 +1,23 @@ +struct user { + struct { + unsigned long gpr[32], nip, msr, orig_gpr3, ctr, link, xer, ccr, softe; + unsigned long trap, dar, dsisr, result; + } regs; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long start_code, start_data, start_stack; + long signal; + void *u_ar0; + unsigned long magic; + char u_comm[32]; +}; + +#define ELF_NGREG 48 +#define ELF_NFPREG 33 +#define ELF_NVRREG 34 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; +typedef struct { unsigned u[4]; } +#ifdef __GNUC__ +__attribute__((__aligned__(16))) +#endif + elf_vrreg_t, elf_vrregset_t[ELF_NVRREG]; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/crt_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc64/crt_arch.h new file mode 100644 index 000000000..168669a93 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/crt_arch.h @@ -0,0 +1,19 @@ +__asm__( +".text \n" +".global " START " \n" +".type " START ", %function \n" +START ": \n" +" addis 2, 12, .TOC.-" START "@ha \n" +" addi 2, 2, .TOC.-" START "@l \n" +" lwz 4, 1f-" START "(12)\n" +" add 4, 4, 12 \n" +" mr 3, 1 \n" +" clrrdi 1, 1, 4 \n" +" li 0, 0 \n" +" stdu 0, -32(1) \n" +" mtlr 0 \n" +" bl " START "_c \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +"1: .long _DYNAMIC-" START "\n" +); diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/kstat.h b/vendor/modernc.org/libc/musl/arch/powerpc64/kstat.h new file mode 100644 index 000000000..887b3e266 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/kstat.h @@ -0,0 +1,19 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc64/pthread_arch.h new file mode 100644 index 000000000..79c3ecd8a --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/pthread_arch.h @@ -0,0 +1,18 @@ +static inline struct pthread *__pthread_self() +{ + register char *tp __asm__("r13"); + __asm__ ("" : "=r" (tp) ); + return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) + +#define DTP_OFFSET 0x8000 + +// the kernel calls the ip "nip", it's the first saved value after the 32 +// GPRs. +#define MC_PC gp_regs[32] + +#define CANARY canary_at_end diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/reloc.h b/vendor/modernc.org/libc/musl/arch/powerpc64/reloc.h new file mode 100644 index 000000000..2f1bba059 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/reloc.h @@ -0,0 +1,31 @@ +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "le" +#else +#define ENDIAN_SUFFIX "" +#endif + +#define LDSO_ARCH "powerpc64" ENDIAN_SUFFIX + +#define TPOFF_K (-0x7000) + +#define REL_SYMBOLIC R_PPC64_ADDR64 +#define REL_USYMBOLIC R_PPC64_UADDR64 +#define REL_GOT R_PPC64_GLOB_DAT +#define REL_PLT R_PPC64_JMP_SLOT +#define REL_RELATIVE R_PPC64_RELATIVE +#define REL_COPY R_PPC64_COPY +#define REL_DTPMOD R_PPC64_DTPMOD64 +#define REL_DTPOFF R_PPC64_DTPREL64 +#define REL_TPOFF R_PPC64_TPREL64 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mr 1,%1; mr 12,%0; mtctr 12; bctrl" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym " \n" \ + " bl 1f \n" \ + " .long " #sym "-. \n" \ + "1: mflr %1 \n" \ + " lwa %0, 0(%1) \n" \ + " add %0, %0, %1 \n" \ + : "=r"(*(fp)), "=r"((long){0}) : : "memory", "lr" ) diff --git a/vendor/modernc.org/libc/musl/arch/powerpc64/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/powerpc64/syscall_arch.h new file mode 100644 index 000000000..76b4e335c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/powerpc64/syscall_arch.h @@ -0,0 +1,90 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +static inline long __syscall0(long n) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3"); + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "=r"(r3) + :: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall1(long n, long a) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3) + :: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4) + :: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5) + :: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6) + :: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + register long r7 __asm__("r7") = e; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7) + :: "memory", "cr0", "r8", "r9", "r10", "r11", "r12"); + return r3; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r0 __asm__("r0") = n; + register long r3 __asm__("r3") = a; + register long r4 __asm__("r4") = b; + register long r5 __asm__("r5") = c; + register long r6 __asm__("r6") = d; + register long r7 __asm__("r7") = e; + register long r8 __asm__("r8") = f; + __asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:" + : "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7), "+r"(r8) + :: "memory", "cr0", "r9", "r10", "r11", "r12"); + return r3; +} + +#define SO_RCVTIMEO_OLD 18 +#define SO_SNDTIMEO_OLD 19 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/riscv64/atomic_arch.h new file mode 100644 index 000000000..0c3825886 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/atomic_arch.h @@ -0,0 +1,38 @@ +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("fence rw,rw" : : : "memory"); +} + +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + int old, tmp; + __asm__ __volatile__ ( + "\n1: lr.w.aqrl %0, (%2)\n" + " bne %0, %3, 1f\n" + " sc.w.aqrl %1, %4, (%2)\n" + " bnez %1, 1b\n" + "1:" + : "=&r"(old), "=&r"(tmp) + : "r"(p), "r"((long)t), "r"((long)s) + : "memory"); + return old; +} + +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + void *old; + int tmp; + __asm__ __volatile__ ( + "\n1: lr.d.aqrl %0, (%2)\n" + " bne %0, %3, 1f\n" + " sc.d.aqrl %1, %4, (%2)\n" + " bnez %1, 1b\n" + "1:" + : "=&r"(old), "=&r"(tmp) + : "r"(p), "r"(t), "r"(s) + : "memory"); + return old; +} diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/fcntl.h new file mode 100644 index 000000000..ecb4d18fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/fcntl.h @@ -0,0 +1,38 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0100000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/fenv.h new file mode 100644 index 000000000..806ec40f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/fenv.h @@ -0,0 +1,17 @@ +#define FE_INVALID 16 +#define FE_DIVBYZERO 8 +#define FE_OVERFLOW 4 +#define FE_UNDERFLOW 2 +#define FE_INEXACT 1 + +#define FE_ALL_EXCEPT 31 + +#define FE_TONEAREST 0 +#define FE_DOWNWARD 2 +#define FE_UPWARD 3 +#define FE_TOWARDZERO 1 + +typedef unsigned int fexcept_t; +typedef unsigned int fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/float.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/float.h new file mode 100644 index 000000000..719c79085 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L + +#define LDBL_MANT_DIG 113 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 33 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 36 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/posix.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/posix.h new file mode 100644 index 000000000..8068ce98d --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/reg.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/reg.h new file mode 100644 index 000000000..2633f39d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/reg.h @@ -0,0 +1,2 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/setjmp.h new file mode 100644 index 000000000..ad7e40160 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[26]; diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/signal.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/signal.h new file mode 100644 index 000000000..b006334f7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/signal.h @@ -0,0 +1,118 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +# define MINSIGSTKSZ 2048 +# define SIGSTKSZ 8192 +#endif + +typedef unsigned long __riscv_mc_gp_state[32]; + +struct __riscv_mc_f_ext_state { + unsigned int __f[32]; + unsigned int __fcsr; +}; + +struct __riscv_mc_d_ext_state { + unsigned long long __f[32]; + unsigned int __fcsr; +}; + +struct __riscv_mc_q_ext_state { + unsigned long long __f[64] __attribute__((aligned(16))); + unsigned int __fcsr; + unsigned int __reserved[3]; +}; + +union __riscv_mc_fp_state { + struct __riscv_mc_f_ext_state __f; + struct __riscv_mc_d_ext_state __d; + struct __riscv_mc_q_ext_state __q; +}; + +typedef struct mcontext_t { + __riscv_mc_gp_state __gregs; + union __riscv_mc_fp_state __fpregs; +} mcontext_t; + +#if defined(_GNU_SOURCE) +#define REG_PC 0 +#define REG_RA 1 +#define REG_SP 2 +#define REG_TP 4 +#define REG_S0 8 +#define REG_A0 10 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t; +typedef unsigned long gregset_t[32]; +typedef union __riscv_mc_fp_state fpregset_t; +struct sigcontext { + gregset_t gregs; + fpregset_t fpregs; +}; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct ucontext_t +{ + unsigned long uc_flags; + struct ucontext_t *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/stat.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/stat.h new file mode 100644 index 000000000..b7f4221be --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/stat.h @@ -0,0 +1,18 @@ +struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + unsigned long __pad; + off_t st_size; + blksize_t st_blksize; + int __pad2; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/bits/user.h b/vendor/modernc.org/libc/musl/arch/riscv64/bits/user.h new file mode 100644 index 000000000..2da743eaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/bits/user.h @@ -0,0 +1,5 @@ +#include + +#define ELF_NGREG 32 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef union __riscv_mc_fp_state elf_fpregset_t; diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/crt_arch.h b/vendor/modernc.org/libc/musl/arch/riscv64/crt_arch.h new file mode 100644 index 000000000..6b93fcfd1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/crt_arch.h @@ -0,0 +1,19 @@ +__asm__( +".section .sdata,\"aw\"\n" +".text\n" +".global " START "\n" +".type " START ",%function\n" +START ":\n" +".weak __global_pointer$\n" +".hidden __global_pointer$\n" +".option push\n" +".option norelax\n\t" +"lla gp, __global_pointer$\n" +".option pop\n\t" +"mv a0, sp\n" +".weak _DYNAMIC\n" +".hidden _DYNAMIC\n\t" +"lla a1, _DYNAMIC\n\t" +"andi sp, sp, -16\n\t" +"tail " START "_c" +); diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/kstat.h b/vendor/modernc.org/libc/musl/arch/riscv64/kstat.h new file mode 100644 index 000000000..92625f363 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + unsigned long __pad; + off_t st_size; + blksize_t st_blksize; + int __pad2; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + unsigned __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/riscv64/pthread_arch.h new file mode 100644 index 000000000..db414b170 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/pthread_arch.h @@ -0,0 +1,14 @@ +static inline struct pthread *__pthread_self() +{ + char *tp; + __asm__ __volatile__("mv %0, tp" : "=r"(tp)); + return (void *)(tp - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 +#define TP_ADJ(p) ((char *)p + sizeof(struct pthread)) + +#define DTP_OFFSET 0x800 + +#define MC_PC __gregs[0] diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/reloc.h b/vendor/modernc.org/libc/musl/arch/riscv64/reloc.h new file mode 100644 index 000000000..1ca138111 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/reloc.h @@ -0,0 +1,22 @@ +#if defined __riscv_float_abi_soft +#define RISCV_FP_SUFFIX "-sf" +#elif defined __riscv_float_abi_single +#define RISCV_FP_SUFFIX "-sp" +#elif defined __riscv_float_abi_double +#define RISCV_FP_SUFFIX "" +#endif + +#define LDSO_ARCH "riscv64" RISCV_FP_SUFFIX + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_RISCV_64 +#define REL_PLT R_RISCV_JUMP_SLOT +#define REL_RELATIVE R_RISCV_RELATIVE +#define REL_COPY R_RISCV_COPY +#define REL_DTPMOD R_RISCV_TLS_DTPMOD64 +#define REL_DTPOFF R_RISCV_TLS_DTPREL64 +#define REL_TPOFF R_RISCV_TLS_TPREL64 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/riscv64/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/riscv64/syscall_arch.h new file mode 100644 index 000000000..7fd042cd4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/riscv64/syscall_arch.h @@ -0,0 +1,78 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define __asm_syscall(...) \ + __asm__ __volatile__ ("ecall\n\t" \ + : "=r"(a0) : __VA_ARGS__ : "memory"); \ + return a0; \ + +static inline long __syscall0(long n) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0"); + __asm_syscall("r"(a7)) +} + +static inline long __syscall1(long n, long a) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + __asm_syscall("r"(a7), "0"(a0)) +} + +static inline long __syscall2(long n, long a, long b) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + __asm_syscall("r"(a7), "0"(a0), "r"(a1)) +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2)) +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + register long a4 __asm__("a4") = e; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4)) +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + register long a4 __asm__("a4") = e; + register long a5 __asm__("a5") = f; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) +} + +#define VDSO_USEFUL +/* We don't have a clock_gettime function. +#define VDSO_CGT_SYM "__vdso_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6" */ + +#define IPC_64 0 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/s390x/atomic_arch.h new file mode 100644 index 000000000..9b0e1df9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/atomic_arch.h @@ -0,0 +1,30 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ( + "cs %0, %2, %1" + : "+d"(t), "+Q"(*p) : "d"(s) : "memory", "cc"); + return t; +} + +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + __asm__ __volatile__ ( + "csg %0, %2, %1" + : "+d"(t), "+Q"(*(void *volatile *)p) : "d"(s) + : "memory", "cc"); + return t; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("bcr 15,0" : : : "memory"); +} + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__ (".insn e,0"); +} diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/fcntl.h new file mode 100644 index 000000000..a231efb4a --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/fcntl.h @@ -0,0 +1,43 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0100000 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 + +#define POSIX_FADV_DONTNEED 6 +#define POSIX_FADV_NOREUSE 7 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/fenv.h new file mode 100644 index 000000000..773dad915 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/fenv.h @@ -0,0 +1,17 @@ +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 +#define FE_UPWARD 2 +#define FE_DOWNWARD 3 + +#define FE_INEXACT 0x00080000 +#define FE_UNDERFLOW 0x00100000 +#define FE_OVERFLOW 0x00200000 +#define FE_DIVBYZERO 0x00400000 +#define FE_INVALID 0x00800000 + +#define FE_ALL_EXCEPT 0x00f80000 + +typedef unsigned fexcept_t; +typedef unsigned fenv_t; + +#define FE_DFL_ENV ((const fenv_t *)-1) diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/float.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/float.h new file mode 100644 index 000000000..b2adf6a34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/float.h @@ -0,0 +1,31 @@ +#define FLT_EVAL_METHOD 1 + +// #define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +// #define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +// #define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +// #define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L +// +// #define LDBL_MANT_DIG 113 +// #define LDBL_MIN_EXP (-16381) +// #define LDBL_MAX_EXP 16384 +// +// #define LDBL_DIG 33 +// #define LDBL_MIN_10_EXP (-4931) +// #define LDBL_MAX_10_EXP 4932 +// +// #define DECIMAL_DIG 36 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/hwcap.h new file mode 100644 index 000000000..ecc6ce1fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/hwcap.h @@ -0,0 +1,15 @@ +#define HWCAP_S390_ESAN3 1 +#define HWCAP_S390_ZARCH 2 +#define HWCAP_S390_STFLE 4 +#define HWCAP_S390_MSA 8 +#define HWCAP_S390_LDISP 16 +#define HWCAP_S390_EIMM 32 +#define HWCAP_S390_DFP 64 +#define HWCAP_S390_HPAGE 128 +#define HWCAP_S390_ETF3EH 256 +#define HWCAP_S390_HIGH_GPRS 512 +#define HWCAP_S390_TE 1024 +#define HWCAP_S390_VXRS 2048 +#define HWCAP_S390_VXRS_BCD 4096 +#define HWCAP_S390_VXRS_EXT 8192 +#define HWCAP_S390_GS 16384 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/ioctl_fix.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/ioctl_fix.h new file mode 100644 index 000000000..ebb383daf --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/ioctl_fix.h @@ -0,0 +1,2 @@ +#undef FIOQSIZE +#define FIOQSIZE 0x545e diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/limits.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/limits.h new file mode 100644 index 000000000..07743b6fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 4096 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/link.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/link.h new file mode 100644 index 000000000..923aac573 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/link.h @@ -0,0 +1 @@ +typedef uint64_t Elf_Symndx; diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/posix.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/posix.h new file mode 100644 index 000000000..c37b94c14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/ptrace.h new file mode 100644 index 000000000..d50e32621 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/ptrace.h @@ -0,0 +1,9 @@ +#define PTRACE_SINGLEBLOCK 12 +#define PTRACE_PEEKUSR_AREA 0x5000 +#define PTRACE_POKEUSR_AREA 0x5001 +#define PTRACE_GET_LAST_BREAK 0x5006 +#define PTRACE_ENABLE_TE 0x5009 +#define PTRACE_DISABLE_TE 0x5010 +#define PTRACE_TE_ABORT_RAND 0x5011 + +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/reg.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/reg.h new file mode 100644 index 000000000..2633f39d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/reg.h @@ -0,0 +1,2 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/setjmp.h new file mode 100644 index 000000000..b2bd9748c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[18]; diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/signal.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/signal.h new file mode 100644 index 000000000..e5aca4bac --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/signal.h @@ -0,0 +1,121 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 4096 +#define SIGSTKSZ 10240 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +typedef unsigned long greg_t, gregset_t[27]; + +typedef struct { + unsigned long mask; + unsigned long addr; +} __psw_t; + +typedef union { + double d; + float f; +} fpreg_t; + +typedef struct { + unsigned fpc; + fpreg_t fprs[16]; +} fpregset_t; + +typedef struct +{ + __psw_t psw; + unsigned long gregs[16]; + unsigned aregs[16]; + fpregset_t fpregs; +} mcontext_t; + +struct sigcontext { + unsigned long oldmask[1]; + struct { + struct { + __psw_t psw; + unsigned long gprs[16]; + unsigned acrs[16]; + } regs; + struct { + unsigned fpc; + double fprs[16]; + } fpregs; + } *sregs; +}; + +#else + +typedef struct { + unsigned long __regs1[18]; + unsigned __regs2[18]; + double __regs3[16]; +} mcontext_t; + +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1U +#define SA_NOCLDWAIT 2U +#define SA_SIGINFO 4U +#define SA_ONSTACK 0x08000000U +#define SA_RESTART 0x10000000U +#define SA_NODEFER 0x40000000U +#define SA_RESETHAND 0x80000000U +#define SA_RESTORER 0x04000000U + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/stat.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/stat.h new file mode 100644 index 000000000..2db4ad02f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/stat.h @@ -0,0 +1,16 @@ +struct stat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + blkcnt_t st_blocks; + unsigned long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/statfs.h new file mode 100644 index 000000000..6617358a2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/statfs.h @@ -0,0 +1,7 @@ +struct statfs { + unsigned f_type, f_bsize; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree; + fsid_t f_fsid; + unsigned f_namelen, f_frsize, f_flags, f_spare[4]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/s390x/bits/user.h b/vendor/modernc.org/libc/musl/arch/s390x/bits/user.h new file mode 100644 index 000000000..ff3f04838 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/bits/user.h @@ -0,0 +1,62 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +typedef union { + double d; + float f; +} elf_fpreg_t; + +typedef struct { + unsigned fpc; + elf_fpreg_t fprs[16]; +} elf_fpregset_t; + +#define ELF_NGREG 27 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct _user_psw_struct { + unsigned long mask, addr; +}; + +struct _user_fpregs_struct { + unsigned fpc; + double fprs[16]; +}; + +struct _user_per_struct { + unsigned long control_regs[3]; + unsigned single_step : 1; + unsigned instruction_fetch : 1; + unsigned : 30; + unsigned long starting_addr, ending_addr; + unsigned short perc_atmid; + unsigned long address; + unsigned char access_id; +}; + +struct _user_regs_struct { + struct _user_psw_struct psw; + unsigned long gprs[16]; + unsigned acrs[16]; + unsigned long orig_gpr2; + struct _user_fpregs_struct fp_regs; + struct _user_per_struct per_info; + unsigned long ieee_instruction_pointer; +}; + +struct user { + struct _user_regs_struct regs; + unsigned long u_tsize, u_dsize, u_ssize; + unsigned long start_code, start_stack; + long signal; + struct _user_regs_struct *u_ar0; + unsigned long magic; + char u_comm[32]; +}; + +#define PAGE_MASK (~(PAGESIZE-1)) +#define NBPG PAGESIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) + diff --git a/vendor/modernc.org/libc/musl/arch/s390x/crt_arch.h b/vendor/modernc.org/libc/musl/arch/s390x/crt_arch.h new file mode 100644 index 000000000..92091a100 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/crt_arch.h @@ -0,0 +1,17 @@ +__asm__( +".text\n" +".global " START "\n" +".type " START ", %function\n" +START ":\n" +" lgr %r2, %r15\n" +" larl %r3, 1f\n" +" agf %r3, 0(%r3)\n" +" aghi %r15, -160\n" +" lghi %r0, 0\n" +" stg %r0, 0(%r15)\n" +" jg " START "_c\n" +" .align 8\n" +".weak _DYNAMIC\n" +".hidden _DYNAMIC\n" +"1: .long _DYNAMIC-.\n" +); diff --git a/vendor/modernc.org/libc/musl/arch/s390x/kstat.h b/vendor/modernc.org/libc/musl/arch/s390x/kstat.h new file mode 100644 index 000000000..001c10be3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/kstat.h @@ -0,0 +1,19 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + blksize_t st_blksize; + blkcnt_t st_blocks; + unsigned long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/s390x/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/s390x/pthread_arch.h new file mode 100644 index 000000000..e2251f1fa --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/pthread_arch.h @@ -0,0 +1,14 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ ( + "ear %0, %%a0\n" + "sllg %0, %0, 32\n" + "ear %0, %%a1\n" + : "=r"(self)); + return self; +} + +#define TP_ADJ(p) (p) + +#define MC_PC psw.addr diff --git a/vendor/modernc.org/libc/musl/arch/s390x/reloc.h b/vendor/modernc.org/libc/musl/arch/s390x/reloc.h new file mode 100644 index 000000000..6e5c1fb87 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/reloc.h @@ -0,0 +1,13 @@ +#define LDSO_ARCH "s390x" + +#define REL_SYMBOLIC R_390_64 +#define REL_GOT R_390_GLOB_DAT +#define REL_PLT R_390_JMP_SLOT +#define REL_RELATIVE R_390_RELATIVE +#define REL_COPY R_390_COPY +#define REL_DTPMOD R_390_TLS_DTPMOD +#define REL_DTPOFF R_390_TLS_DTPOFF +#define REL_TPOFF R_390_TLS_TPOFF + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "lgr %%r15,%1; br %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/s390x/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/s390x/syscall_arch.h new file mode 100644 index 000000000..afb99852e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/s390x/syscall_arch.h @@ -0,0 +1,76 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define __asm_syscall(ret, ...) do { \ + __asm__ __volatile__ ("svc 0\n" \ + : ret : __VA_ARGS__ : "memory"); \ + return r2; \ + } while (0) + +static inline long __syscall0(long n) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2"); + __asm_syscall("=r"(r2), "r"(r1)); +} + +static inline long __syscall1(long n, long a) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + __asm_syscall("+r"(r2), "r"(r1)); +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + register long r3 __asm__("r3") = b; + __asm_syscall("+r"(r2), "r"(r1), "r"(r3)); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + register long r3 __asm__("r3") = b; + register long r4 __asm__("r4") = c; + __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4)); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + register long r3 __asm__("r3") = b; + register long r4 __asm__("r4") = c; + register long r5 __asm__("r5") = d; + __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5)); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + register long r3 __asm__("r3") = b; + register long r4 __asm__("r4") = c; + register long r5 __asm__("r5") = d; + register long r6 __asm__("r6") = e; + __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6)); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + if (n == SYS_mmap) return __syscall1(n, (long)(long[]){a,b,c,d,e,f}); + + register long r1 __asm__("r1") = n; + register long r2 __asm__("r2") = a; + register long r3 __asm__("r3") = b; + register long r4 __asm__("r4") = c; + register long r5 __asm__("r5") = d; + register long r6 __asm__("r6") = e; + register long r7 __asm__("r7") = f; + __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); +} + +#define SYSCALL_USE_SOCKETCALL diff --git a/vendor/modernc.org/libc/musl/arch/sh/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/sh/atomic_arch.h new file mode 100644 index 000000000..0a4d0c118 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/atomic_arch.h @@ -0,0 +1,48 @@ +#include "libc.h" + +#if defined(__SH4A__) + +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ + int v; + __asm__ __volatile__ ("movli.l @%1, %0" : "=z"(v) : "r"(p), "m"(*p)); + return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ + int r; + __asm__ __volatile__ ( + "movco.l %2, @%3 ; movt %0" + : "=r"(r), "=m"(*p) : "z"(v), "r"(p) : "memory", "cc"); + return r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__ ("synco" ::: "memory"); +} + +#define a_pre_llsc a_barrier +#define a_post_llsc a_barrier + +#else + +#define a_cas a_cas +extern hidden const void *__sh_cas_ptr; +static inline int a_cas(volatile int *p, int t, int s) +{ + register int r1 __asm__("r1"); + register int r2 __asm__("r2") = t; + register int r3 __asm__("r3") = s; + __asm__ __volatile__ ( + "jsr @%4 ; nop" + : "=r"(r1), "+r"(r3) : "z"(p), "r"(r2), "r"(__sh_cas_ptr) + : "memory", "pr", "cc"); + return r3; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/sh/bits/fenv.h new file mode 100644 index 000000000..7f1b8b66c --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/fenv.h @@ -0,0 +1,26 @@ +#ifndef __SH_FPU_ANY__ + +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 + +#else + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 + +#define FE_INEXACT 0x04 +#define FE_UNDERFLOW 0x08 +#define FE_OVERFLOW 0x10 +#define FE_DIVBYZERO 0x20 +#define FE_INVALID 0x40 +#define FE_ALL_EXCEPT 0x7c + +#endif + +typedef unsigned long fexcept_t; + +typedef struct { + unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/float.h b/vendor/modernc.org/libc/musl/arch/sh/bits/float.h new file mode 100644 index 000000000..c4a655e7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/hwcap.h b/vendor/modernc.org/libc/musl/arch/sh/bits/hwcap.h new file mode 100644 index 000000000..f85121d03 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/hwcap.h @@ -0,0 +1,11 @@ +#define CPU_HAS_FPU 0x0001 +#define CPU_HAS_P2_FLUSH_BUG 0x0002 +#define CPU_HAS_MMU_PAGE_ASSOC 0x0004 +#define CPU_HAS_DSP 0x0008 +#define CPU_HAS_PERF_COUNTER 0x0010 +#define CPU_HAS_PTEA 0x0020 +#define CPU_HAS_LLSC 0x0040 +#define CPU_HAS_L2_CACHE 0x0080 +#define CPU_HAS_OP32 0x0100 +#define CPU_HAS_PTEAEX 0x0200 +#define CPU_HAS_CAS_L 0x0400 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/ioctl.h b/vendor/modernc.org/libc/musl/arch/sh/bits/ioctl.h new file mode 100644 index 000000000..370b6901e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/ioctl.h @@ -0,0 +1,112 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 0U +#define _IOC_WRITE 1U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define FIOCLEX _IO('f', 1) +#define FIONCLEX _IO('f', 2) +#define FIOASYNC _IOW('f', 125, int) +#define FIONBIO _IOW('f', 126, int) +#define FIONREAD _IOR('f', 127, int) +#define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, char[8]) + +#define TCGETA _IOR('t', 23, char[18]) +#define TCSETA _IOW('t', 24, char[18]) +#define TCSETAW _IOW('t', 25, char[18]) +#define TCSETAF _IOW('t', 28, char[18]) + +#define TCSBRK _IO('t', 29) +#define TCXONC _IO('t', 30) +#define TCFLSH _IO('t', 31) + +#define TIOCSWINSZ _IOW('t', 103, char[8]) +#define TIOCGWINSZ _IOR('t', 104, char[8]) +#define TIOCSTART _IO('t', 110) +#define TIOCSTOP _IO('t', 111) +#define TIOCOUTQ _IOR('t', 115, int) + +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) + +#define TIOCEXCL _IO('T', 12) +#define TIOCNXCL _IO('T', 13) +#define TIOCSCTTY _IO('T', 14) + +#define TIOCSTI _IOW('T', 18, char) +#define TIOCMGET _IOR('T', 21, unsigned int) +#define TIOCMBIS _IOW('T', 22, unsigned int) +#define TIOCMBIC _IOW('T', 23, unsigned int) +#define TIOCMSET _IOW('T', 24, unsigned int) +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define TIOCGSOFTCAR _IOR('T', 25, unsigned int) +#define TIOCSSOFTCAR _IOW('T', 26, unsigned int) +#define TIOCLINUX _IOW('T', 28, char) +#define TIOCCONS _IO('T', 29) +#define TIOCGSERIAL _IOR('T', 30, char[60]) +#define TIOCSSERIAL _IOW('T', 31, char[60]) +#define TIOCPKT _IOW('T', 32, int) + +#define TIOCNOTTY _IO('T', 34) +#define TIOCSETD _IOW('T', 35, int) +#define TIOCGETD _IOR('T', 36, int) +#define TCSBRKP _IOW('T', 37, int) +#define TIOCSBRK _IO('T', 39) +#define TIOCCBRK _IO('T', 40) +#define TIOCGSID _IOR('T', 41, int) +#define TCGETS _IO('T', 1) +#define TCSETS _IO('T', 2) +#define TCSETSW _IO('T', 3) +#define TCSETSF _IO('T', 4) +#define TIOCGRS485 _IOR('T', 46, char[32]) +#define TIOCSRS485 _IOWR('T', 47, char[32]) +#define TIOCGPTN _IOR('T', 48, unsigned int) +#define TIOCSPTLCK _IOW('T', 49, int) +#define TIOCGDEV _IOR('T', 50, unsigned int) +#define TIOCSIG _IOW('T', 54, int) +#define TIOCVHANGUP _IO('T', 55) +#define TIOCGPKT _IOR('T', 56, int) +#define TIOCGPTLCK _IOR('T', 57, int) +#define TIOCGEXCL _IOR('T', 64, int) +#define TIOCGPTPEER _IO('T', 0x41) + +#define TIOCSERCONFIG _IO('T', 83) +#define TIOCSERGWILD _IOR('T', 84, int) +#define TIOCSERSWILD _IOW('T', 85, int) +#define TIOCGLCKTRMIOS _IO('T', 86) +#define TIOCSLCKTRMIOS _IO('T', 87) +#define TIOCSERGSTRUCT _IOR('T', 88, char[216]) +#define TIOCSERGETLSR _IOR('T', 89, unsigned int) +#define TIOCSERGETMULTI _IOR('T', 90, char[168]) +#define TIOCSERSETMULTI _IOW('T', 91, char[168]) + +#define TIOCMIWAIT _IO('T', 92) +#define TIOCGICOUNT _IO('T', 93) + +#define FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) + +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, int) +#define SIOCGPGRP _IOW('s', 9, int) +#define SIOCGSTAMP _IOR(0x89, 6, char[16]) +#define SIOCGSTAMPNS _IOR(0x89, 7, char[16]) diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/ipcstat.h b/vendor/modernc.org/libc/musl/arch/sh/bits/ipcstat.h new file mode 100644 index 000000000..4f4fcb0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/limits.h b/vendor/modernc.org/libc/musl/arch/sh/bits/limits.h new file mode 100644 index 000000000..07743b6fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 4096 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/msg.h b/vendor/modernc.org/libc/musl/arch/sh/bits/msg.h new file mode 100644 index 000000000..7bbbb2bf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + unsigned long __msg_stime_lo; + unsigned long __msg_stime_hi; + unsigned long __msg_rtime_lo; + unsigned long __msg_rtime_hi; + unsigned long __msg_ctime_lo; + unsigned long __msg_ctime_hi; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/posix.h b/vendor/modernc.org/libc/musl/arch/sh/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/sh/bits/ptrace.h new file mode 100644 index 000000000..4435ca1f7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/ptrace.h @@ -0,0 +1,5 @@ +#define PTRACE_GETFDPIC 31 +#define PTRACE_GETFDPIC_EXEC 0 +#define PTRACE_GETFDPIC_INTERP 1 +#define PTRACE_GETDSPREGS 55 +#define PTRACE_SETDSPREGS 56 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/sem.h b/vendor/modernc.org/libc/musl/arch/sh/bits/sem.h new file mode 100644 index 000000000..544e3d2a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/sem.h @@ -0,0 +1,18 @@ +struct semid_ds { + struct ipc_perm sem_perm; + unsigned long __sem_otime_lo; + unsigned long __sem_otime_hi; + unsigned long __sem_ctime_lo; + unsigned long __sem_ctime_hi; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + unsigned short sem_nsems; +#endif + long __unused3; + long __unused4; + time_t sem_otime; + time_t sem_ctime; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/sh/bits/setjmp.h new file mode 100644 index 000000000..05dbdc71e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[15]; diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/shm.h b/vendor/modernc.org/libc/musl/arch/sh/bits/shm.h new file mode 100644 index 000000000..adc01e342 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 16384 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + unsigned long __shm_atime_lo; + unsigned long __shm_atime_hi; + unsigned long __shm_dtime_lo; + unsigned long __shm_dtime_hi; + unsigned long __shm_ctime_lo; + unsigned long __shm_ctime_hi; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; + unsigned long __pad3; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; +}; + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int __used_ids; + unsigned long shm_tot, shm_rss, shm_swp; + unsigned long __swap_attempts, __swap_successes; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/signal.h b/vendor/modernc.org/libc/musl/arch/sh/bits/signal.h new file mode 100644 index 000000000..160311fae --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/signal.h @@ -0,0 +1,87 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef int greg_t, gregset_t[16]; +typedef int freg_t, fpregset_t[16]; +typedef struct sigcontext { + unsigned long oldmask; + unsigned long sc_regs[16]; + unsigned long sc_pc, sc_pr, sc_sr; + unsigned long sc_gbr, sc_mach, sc_macl; + unsigned long sc_fpregs[16]; + unsigned long sc_xfpregs[16]; + unsigned int sc_fpscr, sc_fpul, sc_ownedfp; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[58]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/stat.h b/vendor/modernc.org/libc/musl/arch/sh/bits/stat.h new file mode 100644 index 000000000..5d7828cf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/stat.h @@ -0,0 +1,25 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct { + long tv_sec; + long tv_nsec; + } __st_atim32, __st_mtim32, __st_ctim32; + ino_t st_ino; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/sh/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/sh/bits/user.h b/vendor/modernc.org/libc/musl/arch/sh/bits/user.h new file mode 100644 index 000000000..07fe843b6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/bits/user.h @@ -0,0 +1,51 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +#define REG_REG0 0 +#define REG_REG15 15 +#define REG_PC 16 +#define REG_PR 17 +#define REG_SR 18 +#define REG_GBR 19 +#define REG_MACH 20 +#define REG_MACL 21 +#define REG_SYSCALL 22 +#define REG_FPREG0 23 +#define REG_FPREG15 38 +#define REG_XFREG0 39 +#define REG_XFREG15 54 +#define REG_FPSCR 55 +#define REG_FPUL 56 + +struct user_fpu_struct { + unsigned long fp_regs[16]; + unsigned long xfp_regs[16]; + unsigned long fpscr; + unsigned long fpul; +}; + +#define ELF_NGREG 23 +typedef unsigned long elf_greg_t; +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +typedef struct user_fpu_struct elf_fpregset_t; + +struct user { + struct { + unsigned long regs[16]; + unsigned long pc, pr, sr, gbr, mach, macl; + long tra; + } regs; + struct user_fpu_struct fpu; + int u_fpvalid; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_data; + unsigned long start_stack; + long int signal; + unsigned long u_ar0; + struct user_fpu_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/crt_arch.h b/vendor/modernc.org/libc/musl/arch/sh/crt_arch.h new file mode 100644 index 000000000..f341c8fbc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/crt_arch.h @@ -0,0 +1,78 @@ +#ifdef __SH_FDPIC__ + +__asm__( +".text \n" +".global " START " \n" +START ": \n" +" tst r8, r8 \n" +" bf 1f \n" +" mov #68, r3 \n" +" add r3, r3 \n" +" mov #8, r4 \n" +" swap.w r4, r4 \n" +" trapa #31 \n" +" nop \n" +" nop \n" +" nop \n" +" nop \n" +"1: nop \n" +#ifndef SHARED +" mov r8, r4 \n" +" mova 1f, r0 \n" +" mov.l 1f, r5 \n" +" mov.l 1f+4, r6 \n" +" add r0, r5 \n" +" mov.l 4f, r1 \n" +"5: bsrf r1 \n" +" add r0, r6 \n" +" mov r0, r12 \n" +#endif +" mov r10, r5 \n" +" mov r15, r4 \n" +" mov.l r9, @-r15 \n" +" mov.l r8, @-r15 \n" +" mov #-16, r0 \n" +" mov.l 2f, r1 \n" +"3: bsrf r1 \n" +" and r0, r15 \n" +".align 2 \n" +"1: .long __ROFIXUP_LIST__@PCREL \n" +" .long __ROFIXUP_END__@PCREL + 4 \n" +"2: .long " START "_c@PCREL - (3b+4-.) \n" +#ifndef SHARED +"4: .long __fdpic_fixup@PCREL - (5b+4-.) \n" +#endif +); + +#ifndef SHARED +#include "fdpic_crt.h" +#endif + +#else + +__asm__( +".text \n" +".global " START " \n" +START ": \n" +" mova 1f, r0 \n" +" mov.l 1f, r5 \n" +" add r0, r5 \n" +" mov r15, r4 \n" +" mov #-16, r0 \n" +" mov.l 2f, r1 \n" +"3: bsrf r1 \n" +" and r0, r15 \n" +".align 2 \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +"1: .long _DYNAMIC-. \n" +"2: .long " START "_c@PCREL - (3b+4-.) \n" +); + +#endif + +/* used by gcc for switching the FPU between single and double precision */ +#ifdef SHARED +__attribute__((__visibility__("hidden"))) +#endif +const unsigned long __fpscr_values[2] = { 0, 0x80000 }; diff --git a/vendor/modernc.org/libc/musl/arch/sh/ksigaction.h b/vendor/modernc.org/libc/musl/arch/sh/ksigaction.h new file mode 100644 index 000000000..714ae619b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/ksigaction.h @@ -0,0 +1,10 @@ +#include + +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void *restorer; + unsigned mask[2]; +}; + +extern hidden unsigned char __restore[], __restore_rt[]; diff --git a/vendor/modernc.org/libc/musl/arch/sh/kstat.h b/vendor/modernc.org/libc/musl/arch/sh/kstat.h new file mode 100644 index 000000000..af449c950 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/kstat.h @@ -0,0 +1,21 @@ +struct kstat { + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + ino_t st_ino; +}; diff --git a/vendor/modernc.org/libc/musl/arch/sh/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/sh/pthread_arch.h new file mode 100644 index 000000000..3ee9c1a93 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/pthread_arch.h @@ -0,0 +1,17 @@ +static inline struct pthread *__pthread_self() +{ + char *self; + __asm__ ("stc gbr,%0" : "=r" (self) ); + return (struct pthread *) (self - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 8 +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) + +#define MC_PC sc_pc + +#ifdef __FDPIC__ +#define MC_GOT sc_regs[12] +#define CANCEL_GOT (*(uintptr_t *)((char *)__syscall_cp_asm+sizeof(uintptr_t))) +#endif diff --git a/vendor/modernc.org/libc/musl/arch/sh/reloc.h b/vendor/modernc.org/libc/musl/arch/sh/reloc.h new file mode 100644 index 000000000..17b1a9a97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/reloc.h @@ -0,0 +1,52 @@ +#if __BYTE_ORDER == __BIG_ENDIAN +#define ENDIAN_SUFFIX "eb" +#else +#define ENDIAN_SUFFIX "" +#endif + +#if __SH_FPU_ANY__ || __SH4__ +#define FP_SUFFIX "" +#else +#define FP_SUFFIX "-nofpu" +#endif + +#if __SH_FDPIC__ +#define ABI_SUFFIX "-fdpic" +#else +#define ABI_SUFFIX "" +#endif + +#define LDSO_ARCH "sh" ENDIAN_SUFFIX FP_SUFFIX ABI_SUFFIX + +#define TPOFF_K 0 + +#define REL_SYMBOLIC R_SH_DIR32 +#define REL_OFFSET R_SH_REL32 +#define REL_GOT R_SH_GLOB_DAT +#define REL_PLT R_SH_JMP_SLOT +#define REL_RELATIVE R_SH_RELATIVE +#define REL_COPY R_SH_COPY +#define REL_DTPMOD R_SH_TLS_DTPMOD32 +#define REL_DTPOFF R_SH_TLS_DTPOFF32 +#define REL_TPOFF R_SH_TLS_TPOFF32 + +#define DL_NOMMU_SUPPORT 1 + +#if __SH_FDPIC__ +#define REL_FUNCDESC R_SH_FUNCDESC +#define REL_FUNCDESC_VAL R_SH_FUNCDESC_VALUE +#undef REL_RELATIVE +#define DL_FDPIC 1 +#define FDPIC_CONSTDISP_FLAG 0x100 +#define CRTJMP(pc,sp) do { \ + register size_t r8 __asm__("r8") = ((size_t *)(sp))[-2]; \ + __asm__ __volatile__( "jmp @%0 ; mov %1,r15" \ + : : "r"(pc), "r"(sp), "r"(r8) : "memory" ); } while(0) +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + "mov.l 1f,%0 ; add %1,%0 ; bra 2f ; nop ; .align 2 \n" \ + "1: .long " #sym "@GOTOFFFUNCDESC \n2:" \ + : "=&r"(*fp) : "r"(got) : "memory" ) +#else +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "jmp @%0 ; mov %1,r15" : : "r"(pc), "r"(sp) : "memory" ) +#endif diff --git a/vendor/modernc.org/libc/musl/arch/sh/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/sh/syscall_arch.h new file mode 100644 index 000000000..628d8d374 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/sh/syscall_arch.h @@ -0,0 +1,93 @@ +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) +#define __SYSCALL_LL_PRW(x) 0, __SYSCALL_LL_E((x)) + +/* The extra OR instructions are to work around a hardware bug: + * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf + */ +#define __asm_syscall(trapno, ...) do { \ + __asm__ __volatile__ ( \ + "trapa #31\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + : "=r"(r0) : __VA_ARGS__ : "memory"); \ + return r0; \ + } while (0) + +static inline long __syscall0(long n) +{ + register long r3 __asm__("r3") = n; + register long r0 __asm__("r0"); + __asm_syscall(16, "r"(r3)); +} + +static inline long __syscall1(long n, long a) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r0 __asm__("r0"); + __asm_syscall(17, "r"(r3), "r"(r4)); +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r0 __asm__("r0"); + __asm_syscall(18, "r"(r3), "r"(r4), "r"(r5)); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r0 __asm__("r0"); + __asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6)); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0"); + __asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + __asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0)); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + register long r1 __asm__("r1") = f; + __asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1)); +} + +#define SYSCALL_IPC_BROKEN_MODE + +#define SIOCGSTAMP_OLD (2U<<30 | 's'<<8 | 100 | 8<<16) +#define SIOCGSTAMPNS_OLD (2U<<30 | 's'<<8 | 101 | 8<<16) diff --git a/vendor/modernc.org/libc/musl/arch/x32/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/x32/atomic_arch.h new file mode 100644 index 000000000..918c2d4ee --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/atomic_arch.h @@ -0,0 +1,121 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ( + "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +#define a_swap a_swap +static inline int a_swap(volatile int *p, int v) +{ + __asm__ __volatile__( + "xchg %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; xadd %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_and a_and +static inline void a_and(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_or a_or +static inline void a_or(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_and_64 a_and_64 +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + __asm__ __volatile( + "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_or_64 a_or_64 +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + __asm__ __volatile__( + "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_inc a_inc +static inline void a_inc(volatile int *p) +{ + __asm__ __volatile__( + "lock ; incl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_dec a_dec +static inline void a_dec(volatile int *p) +{ + __asm__ __volatile__( + "lock ; decl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_store a_store +static inline void a_store(volatile int *p, int x) +{ + __asm__ __volatile__( + "mov %1, %0 ; lock ; orl $0,(%%rsp)" + : "=m"(*p) : "r"(x) : "memory" ); +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__( "" : : : "memory" ); +} + +#define a_spin a_spin +static inline void a_spin() +{ + __asm__ __volatile__( "pause" : : : "memory" ); +} + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__( "hlt" : : : "memory" ); +} + +#define a_ctz_64 a_ctz_64 +static inline int a_ctz_64(uint64_t x) +{ + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; +} + +#define a_ctz_32 a_ctz_32 +static inline int a_ctz_32(uint32_t x) +{ + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; +} + +#define a_clz_64 a_clz_64 +static inline int a_clz_64(uint64_t x) +{ + __asm__( "bsr %1,%0 ; xor $63,%0" : "=r"(x) : "r"(x) ); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/x32/bits/fcntl.h new file mode 100644 index 000000000..1b88ad391 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/x32/bits/fenv.h new file mode 100644 index 000000000..24df0417f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/fenv.h @@ -0,0 +1,34 @@ +#define FE_INVALID 1 +#define __FE_DENORM 2 +#define FE_DIVBYZERO 4 +#define FE_OVERFLOW 8 +#define FE_UNDERFLOW 16 +#define FE_INEXACT 32 + +#define FE_ALL_EXCEPT 63 + +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x400 +#define FE_UPWARD 0x800 +#define FE_TOWARDZERO 0xc00 + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned short __control_word; + unsigned short __unused1; + unsigned short __status_word; + unsigned short __unused2; + unsigned short __tags; + unsigned short __unused3; + unsigned int __eip; + unsigned short __cs_selector; + unsigned int __opcode:11; + unsigned int __unused4:5; + unsigned int __data_offset; + unsigned short __data_selector; + unsigned short __unused5; + unsigned int __mxcsr; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/float.h b/vendor/modernc.org/libc/musl/arch/x32/bits/float.h new file mode 100644 index 000000000..4d8e78641 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/float.h @@ -0,0 +1,20 @@ +#ifdef __FLT_EVAL_METHOD__ +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#else +#define FLT_EVAL_METHOD 0 +#endif + +#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L +#define LDBL_MIN 3.3621031431120935063e-4932L +#define LDBL_MAX 1.1897314953572317650e+4932L +#define LDBL_EPSILON 1.0842021724855044340e-19L + +#define LDBL_MANT_DIG 64 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 18 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 21 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/io.h b/vendor/modernc.org/libc/musl/arch/x32/bits/io.h new file mode 100644 index 000000000..dd5bddc96 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/io.h @@ -0,0 +1,77 @@ +static __inline void outb(unsigned char __val, unsigned short __port) +{ + __asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outw(unsigned short __val, unsigned short __port) +{ + __asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outl(unsigned int __val, unsigned short __port) +{ + __asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline unsigned char inb(unsigned short __port) +{ + unsigned char __val; + __asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned short inw(unsigned short __port) +{ + unsigned short __val; + __asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned int inl(unsigned short __port) +{ + unsigned int __val; + __asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsb" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsw" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsl" + : "+S" (__buf), "+c"(__n) + : "d" (__port)); +} + +static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insb" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insw" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insl" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/ioctl_fix.h b/vendor/modernc.org/libc/musl/arch/x32/bits/ioctl_fix.h new file mode 100644 index 000000000..83b957bdd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/ioctl_fix.h @@ -0,0 +1,4 @@ +#undef SIOCGSTAMP +#undef SIOCGSTAMPNS +#define SIOCGSTAMP 0x8906 +#define SIOCGSTAMPNS 0x8907 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/ipc.h b/vendor/modernc.org/libc/musl/arch/x32/bits/ipc.h new file mode 100644 index 000000000..a12380f63 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/ipc.h @@ -0,0 +1,11 @@ +struct ipc_perm { + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + long long __pad1; + long long __pad2; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/limits.h b/vendor/modernc.org/libc/musl/arch/x32/bits/limits.h new file mode 100644 index 000000000..07743b6fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 4096 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/mman.h b/vendor/modernc.org/libc/musl/arch/x32/bits/mman.h new file mode 100644 index 000000000..ba2d6f7a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/mman.h @@ -0,0 +1 @@ +#define MAP_32BIT 0x40 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/msg.h b/vendor/modernc.org/libc/musl/arch/x32/bits/msg.h new file mode 100644 index 000000000..63ae98773 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/msg.h @@ -0,0 +1,15 @@ +struct msqid_ds { + struct ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + unsigned long msg_cbytes; + long __unused1; + msgqnum_t msg_qnum; + long __unused2; + msglen_t msg_qbytes; + long __unused3; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long long __unused[2]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/posix.h b/vendor/modernc.org/libc/musl/arch/x32/bits/posix.h new file mode 100644 index 000000000..30a38714f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/x32/bits/ptrace.h new file mode 100644 index 000000000..7f8a09b52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/ptrace.h @@ -0,0 +1,13 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_ARCH_PRCTL 30 +#define PTRACE_SYSEMU 31 +#define PTRACE_SYSEMU_SINGLESTEP 32 +#define PTRACE_SINGLEBLOCK 33 + +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA +#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA +#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL +#define PT_SYSEMU PTRACE_SYSEMU +#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/reg.h b/vendor/modernc.org/libc/musl/arch/x32/bits/reg.h new file mode 100644 index 000000000..5faaef1ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/reg.h @@ -0,0 +1,29 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +#define R15 0 +#define R14 1 +#define R13 2 +#define R12 3 +#define RBP 4 +#define RBX 5 +#define R11 6 +#define R10 7 +#define R9 8 +#define R8 9 +#define RAX 10 +#define RCX 11 +#define RDX 12 +#define RSI 13 +#define RDI 14 +#define ORIG_RAX 15 +#define RIP 16 +#define CS 17 +#define EFLAGS 18 +#define RSP 19 +#define SS 20 +#define FS_BASE 21 +#define GS_BASE 22 +#define DS 23 +#define ES 24 +#define FS 25 +#define GS 26 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/sem.h b/vendor/modernc.org/libc/musl/arch/x32/bits/sem.h new file mode 100644 index 000000000..18745f4c8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/sem.h @@ -0,0 +1,11 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + long long __unused1; + time_t sem_ctime; + long long __unused2; + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long long)-sizeof(short)]; + long long __unused3; + long long __unused4; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/x32/bits/setjmp.h new file mode 100644 index 000000000..a9262a647 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[8]; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/shm.h b/vendor/modernc.org/libc/musl/arch/x32/bits/shm.h new file mode 100644 index 000000000..fa88c1e97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/shm.h @@ -0,0 +1,32 @@ +#define SHMLBA 4096 + +struct shmid_ds { + struct ipc_perm shm_perm; + size_t shm_segsz; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad0; + unsigned long long __pad1; + unsigned long long __pad2; +}; + +struct shminfo { + unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2, + shmseg, __pad3, shmall, __pad4; + unsigned long long __unused[4]; +}; + +struct shm_info { + int __used_ids; + int __pad_ids; + unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2; + unsigned long __swap_attempts, __pad3, __swap_successes, __pad4; +} +#ifdef __GNUC__ +__attribute__((__aligned__(8))) +#endif +; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/signal.h b/vendor/modernc.org/libc/musl/arch/x32/bits/signal.h new file mode 100644 index 000000000..097be6f45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/signal.h @@ -0,0 +1,153 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#ifdef _GNU_SOURCE +enum { REG_R8 = 0 }; +#define REG_R8 REG_R8 +enum { REG_R9 = 1 }; +#define REG_R9 REG_R9 +enum { REG_R10 = 2 }; +#define REG_R10 REG_R10 +enum { REG_R11 = 3 }; +#define REG_R11 REG_R11 +enum { REG_R12 = 4 }; +#define REG_R12 REG_R12 +enum { REG_R13 = 5 }; +#define REG_R13 REG_R13 +enum { REG_R14 = 6 }; +#define REG_R14 REG_R14 +enum { REG_R15 = 7 }; +#define REG_R15 REG_R15 +enum { REG_RDI = 8 }; +#define REG_RDI REG_RDI +enum { REG_RSI = 9 }; +#define REG_RSI REG_RSI +enum { REG_RBP = 10 }; +#define REG_RBP REG_RBP +enum { REG_RBX = 11 }; +#define REG_RBX REG_RBX +enum { REG_RDX = 12 }; +#define REG_RDX REG_RDX +enum { REG_RAX = 13 }; +#define REG_RAX REG_RAX +enum { REG_RCX = 14 }; +#define REG_RCX REG_RCX +enum { REG_RSP = 15 }; +#define REG_RSP REG_RSP +enum { REG_RIP = 16 }; +#define REG_RIP REG_RIP +enum { REG_EFL = 17 }; +#define REG_EFL REG_EFL +enum { REG_CSGSFS = 18 }; +#define REG_CSGSFS REG_CSGSFS +enum { REG_ERR = 19 }; +#define REG_ERR REG_ERR +enum { REG_TRAPNO = 20 }; +#define REG_TRAPNO REG_TRAPNO +enum { REG_OLDMASK = 21 }; +#define REG_OLDMASK REG_OLDMASK +enum { REG_CR2 = 22 }; +#define REG_CR2 REG_CR2 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef long long greg_t, gregset_t[23]; +typedef struct _fpstate { + unsigned short cwd, swd, ftw, fop; + unsigned long long rip, rdp; + unsigned mxcsr, mxcr_mask; + struct { + unsigned short significand[4], exponent, padding[3]; + } _st[8]; + struct { + unsigned element[4]; + } _xmm[16]; + unsigned padding[24]; +} *fpregset_t; +struct sigcontext { + unsigned long long r8, r9, r10, r11, r12, r13, r14, r15; + unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags; + unsigned short cs, gs, fs, __pad0; + unsigned long long err, trapno, oldmask, cr2; + struct _fpstate *fpstate; + unsigned long long __reserved1[8]; +}; +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long long __reserved1[8]; +} mcontext_t; +#else +typedef struct { + unsigned long long __space[32]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long long __fpregs_mem[64]; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 + diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/socket.h b/vendor/modernc.org/libc/musl/arch/x32/bits/socket.h new file mode 100644 index 000000000..8d8300102 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/socket.h @@ -0,0 +1,5 @@ +#define SO_RCVTIMEO 20 +#define SO_SNDTIMEO 21 +#define SO_TIMESTAMP 29 +#define SO_TIMESTAMPNS 35 +#define SO_TIMESTAMPING 37 diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/stat.h b/vendor/modernc.org/libc/musl/arch/x32/bits/stat.h new file mode 100644 index 000000000..1f3aa1ed1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/stat.h @@ -0,0 +1,22 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned int __pad0; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/statfs.h b/vendor/modernc.org/libc/musl/arch/x32/bits/statfs.h new file mode 100644 index 000000000..79aec35d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/statfs.h @@ -0,0 +1,9 @@ +struct statfs { + unsigned long f_type, __pad0, f_bsize, __pad1; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree; + fsid_t f_fsid; + unsigned long f_namelen, __pad2, f_frsize, __pad3; + unsigned long f_flags, __pad4; + unsigned long long f_spare[4]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/x32/bits/stdint.h new file mode 100644 index 000000000..d1b271219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/vendor/modernc.org/libc/musl/arch/x32/bits/user.h b/vendor/modernc.org/libc/musl/arch/x32/bits/user.h new file mode 100644 index 000000000..4073cc06f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/bits/user.h @@ -0,0 +1,41 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +typedef struct user_fpregs_struct { + uint16_t cwd, swd, ftw, fop; + uint64_t rip, rdp; + uint32_t mxcsr, mxcr_mask; + uint32_t st_space[32], xmm_space[64], padding[24]; +} elf_fpregset_t; + +struct user_regs_struct { + unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8; + unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip; + unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs; +}; +#define ELF_NGREG 27 +typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct user { + struct user_regs_struct regs; + int u_fpvalid; + struct user_fpregs_struct i387; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_stack; + long signal; + int reserved; + struct user_regs_struct *u_ar0; + struct user_fpregs_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; + unsigned long u_debugreg[8]; +}; + +#define PAGE_MASK (~(PAGESIZE-1)) +#define NBPG PAGESIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) diff --git a/vendor/modernc.org/libc/musl/arch/x32/crt_arch.h b/vendor/modernc.org/libc/musl/arch/x32/crt_arch.h new file mode 100644 index 000000000..3eec61bdc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/crt_arch.h @@ -0,0 +1,12 @@ +__asm__( +".text \n" +".global " START " \n" +START ": \n" +" xor %rbp,%rbp \n" +" mov %rsp,%rdi \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" lea _DYNAMIC(%rip),%rsi \n" +" andq $-16,%rsp \n" +" call " START "_c \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/x32/ksigaction.h b/vendor/modernc.org/libc/musl/arch/x32/ksigaction.h new file mode 100644 index 000000000..c40e35684 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/ksigaction.h @@ -0,0 +1,11 @@ +#include + +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void (*restorer)(void); + unsigned mask[2]; +}; + +hidden void __restore_rt(); +#define __restore __restore_rt diff --git a/vendor/modernc.org/libc/musl/arch/x32/kstat.h b/vendor/modernc.org/libc/musl/arch/x32/kstat.h new file mode 100644 index 000000000..ce25fce35 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/kstat.h @@ -0,0 +1,22 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned int __pad0; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + + long long st_atime_sec; + long st_atime_nsec; + long long st_mtime_sec; + long st_mtime_nsec; + long long st_ctime_sec; + long st_ctime_nsec; + long long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x32/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/x32/pthread_arch.h new file mode 100644 index 000000000..f640a1a15 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/pthread_arch.h @@ -0,0 +1,14 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ ("mov %%fs:0,%0" : "=r" (self) ); + return self; +} + +#define TP_ADJ(p) (p) + +#define MC_PC gregs[REG_RIP] + +#define CANARY canary2 + +#define tls_mod_off_t unsigned long long diff --git a/vendor/modernc.org/libc/musl/arch/x32/reloc.h b/vendor/modernc.org/libc/musl/arch/x32/reloc.h new file mode 100644 index 000000000..dc039adf5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/reloc.h @@ -0,0 +1,31 @@ +#define LDSO_ARCH "x32" + +/* FIXME: x32 is very strange in its use of 64-bit relocation types in + * a 32-bit environment. As long as the memory at reloc_addr is + * zero-filled prior to relocations, just treating 64-bit relocations + * as operating on 32-bit slots should be fine, but this should be + * checked. In particular, R_X86_64_64, R_X86_64_DTPOFF64, and + * R_X86_64_TPOFF64 may need checking. */ + +/* The R_X86_64_64, R_X86_64_DTPOFF32, and R_X86_64_TPOFF32 reloc types + * were previously mapped in the switch table form of this file; however, + * they do not seem to be used/usable for anything. If needed, new + * mappings will have to be added. */ + +#define REL_SYMBOLIC R_X86_64_32 +#define REL_OFFSET R_X86_64_PC32 +#define REL_GOT R_X86_64_GLOB_DAT +#define REL_PLT R_X86_64_JUMP_SLOT +#define REL_RELATIVE R_X86_64_RELATIVE +#define REL_COPY R_X86_64_COPY +#define REL_DTPMOD R_X86_64_DTPMOD64 +#define REL_DTPOFF R_X86_64_DTPOFF64 +#define REL_TPOFF R_X86_64_TPOFF64 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov %1,%%esp ; jmp *%0" : : "r"((uint64_t)(uintptr_t)pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + " lea " #sym "(%%rip),%0\n" \ + : "=r"(*fp) : : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/x32/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/x32/syscall_arch.h new file mode 100644 index 000000000..e0111cc0e --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x32/syscall_arch.h @@ -0,0 +1,93 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X) +typedef long long syscall_arg_t; + +static __inline long __syscall0(long long n) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall1(long long n, long long a1) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall2(long long n, long long a1, long long a2) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2) + : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall3(long long n, long long a1, long long a2, long long a3) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall4(long long n, long long a1, long long a2, long long a3, + long long a4_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4): "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall5(long long n, long long a1, long long a2, long long a3, + long long a4_, long long a5_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + register long long a5 __asm__("r8") = a5_; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4), "r"(a5) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall6(long long n, long long a1, long long a2, long long a3, + long long a4_, long long a5_, long long a6_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + register long long a5 __asm__("r8") = a5_; + register long long a6 __asm__("r9") = a6_; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4), "r"(a5), "r"(a6) : "rcx", "r11", "memory"); + return ret; +} + +#undef SYS_futimesat + +#define SYS_clock_gettime64 SYS_clock_gettime +#define SYS_clock_settime64 SYS_clock_settime +#define SYS_clock_adjtime64 SYS_clock_adjtime +#define SYS_clock_nanosleep_time64 SYS_clock_nanosleep +#define SYS_timer_gettime64 SYS_timer_gettime +#define SYS_timer_settime64 SYS_timer_settime +#define SYS_timerfd_gettime64 SYS_timerfd_gettime +#define SYS_timerfd_settime64 SYS_timerfd_settime +#define SYS_utimensat_time64 SYS_utimensat +#define SYS_pselect6_time64 SYS_pselect6 +#define SYS_ppoll_time64 SYS_ppoll +#define SYS_recvmmsg_time64 SYS_recvmmsg +#define SYS_mq_timedsend_time64 SYS_mq_timedsend +#define SYS_mq_timedreceive_time64 SYS_mq_timedreceive +#define SYS_semtimedop_time64 SYS_semtimedop +#define SYS_rt_sigtimedwait_time64 SYS_rt_sigtimedwait +#define SYS_futex_time64 SYS_futex +#define SYS_sched_rr_get_interval_time64 SYS_sched_rr_get_interval +#define SYS_getrusage_time64 SYS_getrusage +#define SYS_wait4_time64 SYS_wait4 + +#define IPC_64 0 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/atomic_arch.h b/vendor/modernc.org/libc/musl/arch/x86_64/atomic_arch.h new file mode 100644 index 000000000..da4e20375 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/atomic_arch.h @@ -0,0 +1,123 @@ +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__ __volatile__ ( + "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + __asm__( "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*(void *volatile *)p) + : "a"(t), "r"(s) : "memory" ); + return t; +} + +#define a_swap a_swap +static inline int a_swap(volatile int *p, int v) +{ + __asm__ __volatile__( + "xchg %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; xadd %0, %1" + : "=r"(v), "=m"(*p) : "0"(v) : "memory" ); + return v; +} + +#define a_and a_and +static inline void a_and(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_or a_or +static inline void a_or(volatile int *p, int v) +{ + __asm__ __volatile__( + "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_and_64 a_and_64 +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + __asm__ __volatile( + "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_or_64 a_or_64 +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + __asm__ __volatile__( + "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +#define a_inc a_inc +static inline void a_inc(volatile int *p) +{ + __asm__ __volatile__( + "lock ; incl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_dec a_dec +static inline void a_dec(volatile int *p) +{ + __asm__ __volatile__( + "lock ; decl %0" + : "=m"(*p) : "m"(*p) : "memory" ); +} + +#define a_store a_store +static inline void a_store(volatile int *p, int x) +{ + __asm__ __volatile__( + "mov %1, %0 ; lock ; orl $0,(%%rsp)" + : "=m"(*p) : "r"(x) : "memory" ); +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ + __asm__ __volatile__( "" : : : "memory" ); +} + +#define a_spin a_spin +static inline void a_spin() +{ + __asm__ __volatile__( "pause" : : : "memory" ); +} + +#define a_crash a_crash +static inline void a_crash() +{ + __asm__ __volatile__( "hlt" : : : "memory" ); +} + +#define a_ctz_64 a_ctz_64 +static inline int a_ctz_64(uint64_t x) +{ + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; +} + +#define a_clz_64 a_clz_64 +static inline int a_clz_64(uint64_t x) +{ + __asm__( "bsr %1,%0 ; xor $63,%0" : "=r"(x) : "r"(x) ); + return x; +} diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/fcntl.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/fcntl.h new file mode 100644 index 000000000..1b88ad391 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/fcntl.h @@ -0,0 +1,40 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0 +#define O_NOATIME 01000000 +#define O_PATH 010000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/fenv.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/fenv.h new file mode 100644 index 000000000..24df0417f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/fenv.h @@ -0,0 +1,34 @@ +#define FE_INVALID 1 +#define __FE_DENORM 2 +#define FE_DIVBYZERO 4 +#define FE_OVERFLOW 8 +#define FE_UNDERFLOW 16 +#define FE_INEXACT 32 + +#define FE_ALL_EXCEPT 63 + +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x400 +#define FE_UPWARD 0x800 +#define FE_TOWARDZERO 0xc00 + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned short __control_word; + unsigned short __unused1; + unsigned short __status_word; + unsigned short __unused2; + unsigned short __tags; + unsigned short __unused3; + unsigned int __eip; + unsigned short __cs_selector; + unsigned int __opcode:11; + unsigned int __unused4:5; + unsigned int __data_offset; + unsigned short __data_selector; + unsigned short __unused5; + unsigned int __mxcsr; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/float.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/float.h new file mode 100644 index 000000000..b43798a6b --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/float.h @@ -0,0 +1,35 @@ +#ifdef __FLT_EVAL_METHOD__ +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#else +#define FLT_EVAL_METHOD 0 +#endif + +// #define LDBL_TRUE_MIN 3.6451995318824746025e-4951L +// #define LDBL_MIN 3.3621031431120935063e-4932L +// #define LDBL_MAX 1.1897314953572317650e+4932L +// #define LDBL_EPSILON 1.0842021724855044340e-19L +// +// #define LDBL_MANT_DIG 64 +// #define LDBL_MIN_EXP (-16381) +// #define LDBL_MAX_EXP 16384 +// +// #define LDBL_DIG 18 +// #define LDBL_MIN_10_EXP (-4931) +// #define LDBL_MAX_10_EXP 4932 +// +// #define DECIMAL_DIG 21 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/io.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/io.h new file mode 100644 index 000000000..dd5bddc96 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/io.h @@ -0,0 +1,77 @@ +static __inline void outb(unsigned char __val, unsigned short __port) +{ + __asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outw(unsigned short __val, unsigned short __port) +{ + __asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outl(unsigned int __val, unsigned short __port) +{ + __asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline unsigned char inb(unsigned short __port) +{ + unsigned char __val; + __asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned short inw(unsigned short __port) +{ + unsigned short __val; + __asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned int inl(unsigned short __port) +{ + unsigned int __val; + __asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsb" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsw" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsl" + : "+S" (__buf), "+c"(__n) + : "d" (__port)); +} + +static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insb" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insw" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insl" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/limits.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/limits.h new file mode 100644 index 000000000..07743b6fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/limits.h @@ -0,0 +1 @@ +#define PAGESIZE 4096 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/mman.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/mman.h new file mode 100644 index 000000000..ba2d6f7a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/mman.h @@ -0,0 +1 @@ +#define MAP_32BIT 0x40 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/posix.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/posix.h new file mode 100644 index 000000000..c37b94c14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/ptrace.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/ptrace.h new file mode 100644 index 000000000..7f8a09b52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/ptrace.h @@ -0,0 +1,13 @@ +#define PTRACE_GET_THREAD_AREA 25 +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_ARCH_PRCTL 30 +#define PTRACE_SYSEMU 31 +#define PTRACE_SYSEMU_SINGLESTEP 32 +#define PTRACE_SINGLEBLOCK 33 + +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA +#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA +#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL +#define PT_SYSEMU PTRACE_SYSEMU +#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP +#define PT_STEPBLOCK PTRACE_SINGLEBLOCK diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/reg.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/reg.h new file mode 100644 index 000000000..a4df04ced --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/reg.h @@ -0,0 +1,29 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 +#define R15 0 +#define R14 1 +#define R13 2 +#define R12 3 +#define RBP 4 +#define RBX 5 +#define R11 6 +#define R10 7 +#define R9 8 +#define R8 9 +#define RAX 10 +#define RCX 11 +#define RDX 12 +#define RSI 13 +#define RDI 14 +#define ORIG_RAX 15 +#define RIP 16 +#define CS 17 +#define EFLAGS 18 +#define RSP 19 +#define SS 20 +#define FS_BASE 21 +#define GS_BASE 22 +#define DS 23 +#define ES 24 +#define FS 25 +#define GS 26 diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/sem.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/sem.h new file mode 100644 index 000000000..e61571c12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/sem.h @@ -0,0 +1,11 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + long __unused1; + time_t sem_ctime; + long __unused2; + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + long __unused3; + long __unused4; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/setjmp.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/setjmp.h new file mode 100644 index 000000000..63973a800 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[8]; diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/signal.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/signal.h new file mode 100644 index 000000000..c99317d30 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/signal.h @@ -0,0 +1,153 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#endif + +#ifdef _GNU_SOURCE +enum { REG_R8 = 0 }; +#define REG_R8 REG_R8 +enum { REG_R9 = 1 }; +#define REG_R9 REG_R9 +enum { REG_R10 = 2 }; +#define REG_R10 REG_R10 +enum { REG_R11 = 3 }; +#define REG_R11 REG_R11 +enum { REG_R12 = 4 }; +#define REG_R12 REG_R12 +enum { REG_R13 = 5 }; +#define REG_R13 REG_R13 +enum { REG_R14 = 6 }; +#define REG_R14 REG_R14 +enum { REG_R15 = 7 }; +#define REG_R15 REG_R15 +enum { REG_RDI = 8 }; +#define REG_RDI REG_RDI +enum { REG_RSI = 9 }; +#define REG_RSI REG_RSI +enum { REG_RBP = 10 }; +#define REG_RBP REG_RBP +enum { REG_RBX = 11 }; +#define REG_RBX REG_RBX +enum { REG_RDX = 12 }; +#define REG_RDX REG_RDX +enum { REG_RAX = 13 }; +#define REG_RAX REG_RAX +enum { REG_RCX = 14 }; +#define REG_RCX REG_RCX +enum { REG_RSP = 15 }; +#define REG_RSP REG_RSP +enum { REG_RIP = 16 }; +#define REG_RIP REG_RIP +enum { REG_EFL = 17 }; +#define REG_EFL REG_EFL +enum { REG_CSGSFS = 18 }; +#define REG_CSGSFS REG_CSGSFS +enum { REG_ERR = 19 }; +#define REG_ERR REG_ERR +enum { REG_TRAPNO = 20 }; +#define REG_TRAPNO REG_TRAPNO +enum { REG_OLDMASK = 21 }; +#define REG_OLDMASK REG_OLDMASK +enum { REG_CR2 = 22 }; +#define REG_CR2 REG_CR2 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef long long greg_t, gregset_t[23]; +typedef struct _fpstate { + unsigned short cwd, swd, ftw, fop; + unsigned long long rip, rdp; + unsigned mxcsr, mxcr_mask; + struct { + unsigned short significand[4], exponent, padding[3]; + } _st[8]; + struct { + unsigned element[4]; + } _xmm[16]; + unsigned padding[24]; +} *fpregset_t; +struct sigcontext { + unsigned long r8, r9, r10, r11, r12, r13, r14, r15; + unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags; + unsigned short cs, gs, fs, __pad0; + unsigned long err, trapno, oldmask, cr2; + struct _fpstate *fpstate; + unsigned long __reserved1[8]; +}; +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long long __reserved1[8]; +} mcontext_t; +#else +typedef struct { + unsigned long __space[32]; +} mcontext_t; +#endif + +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; +}; + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long __fpregs_mem[64]; +} ucontext_t; + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_RESTORER 0x04000000 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 + diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/stat.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/stat.h new file mode 100644 index 000000000..081237c32 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/stat.h @@ -0,0 +1,22 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned int __pad0; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/stdint.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/stdint.h new file mode 100644 index 000000000..1bb147f24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/stdint.h @@ -0,0 +1,20 @@ +typedef int32_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef uint32_t uint_fast16_t; +typedef uint32_t uint_fast32_t; + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN + +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX + +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/bits/user.h b/vendor/modernc.org/libc/musl/arch/x86_64/bits/user.h new file mode 100644 index 000000000..4073cc06f --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/bits/user.h @@ -0,0 +1,41 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +typedef struct user_fpregs_struct { + uint16_t cwd, swd, ftw, fop; + uint64_t rip, rdp; + uint32_t mxcsr, mxcr_mask; + uint32_t st_space[32], xmm_space[64], padding[24]; +} elf_fpregset_t; + +struct user_regs_struct { + unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8; + unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip; + unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs; +}; +#define ELF_NGREG 27 +typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct user { + struct user_regs_struct regs; + int u_fpvalid; + struct user_fpregs_struct i387; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_stack; + long signal; + int reserved; + struct user_regs_struct *u_ar0; + struct user_fpregs_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; + unsigned long u_debugreg[8]; +}; + +#define PAGE_MASK (~(PAGESIZE-1)) +#define NBPG PAGESIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/crt_arch.h b/vendor/modernc.org/libc/musl/arch/x86_64/crt_arch.h new file mode 100644 index 000000000..3eec61bdc --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/crt_arch.h @@ -0,0 +1,12 @@ +__asm__( +".text \n" +".global " START " \n" +START ": \n" +" xor %rbp,%rbp \n" +" mov %rsp,%rdi \n" +".weak _DYNAMIC \n" +".hidden _DYNAMIC \n" +" lea _DYNAMIC(%rip),%rsi \n" +" andq $-16,%rsp \n" +" call " START "_c \n" +); diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/ksigaction.h b/vendor/modernc.org/libc/musl/arch/x86_64/ksigaction.h new file mode 100644 index 000000000..c40e35684 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/ksigaction.h @@ -0,0 +1,11 @@ +#include + +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void (*restorer)(void); + unsigned mask[2]; +}; + +hidden void __restore_rt(); +#define __restore __restore_rt diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/kstat.h b/vendor/modernc.org/libc/musl/arch/x86_64/kstat.h new file mode 100644 index 000000000..5976c04e1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/kstat.h @@ -0,0 +1,22 @@ +struct kstat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned int __pad0; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + + long st_atime_sec; + long st_atime_nsec; + long st_mtime_sec; + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; + long __unused[3]; +}; diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/pthread_arch.h b/vendor/modernc.org/libc/musl/arch/x86_64/pthread_arch.h new file mode 100644 index 000000000..65e880c62 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/pthread_arch.h @@ -0,0 +1,10 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ ("mov %%fs:0,%0" : "=r" (self) ); + return self; +} + +#define TP_ADJ(p) (p) + +#define MC_PC gregs[REG_RIP] diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/reloc.h b/vendor/modernc.org/libc/musl/arch/x86_64/reloc.h new file mode 100644 index 000000000..fac0c0ae3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/reloc.h @@ -0,0 +1,20 @@ +#define LDSO_ARCH "x86_64" + +#define REL_SYMBOLIC R_X86_64_64 +#define REL_OFFSET32 R_X86_64_PC32 +#define REL_GOT R_X86_64_GLOB_DAT +#define REL_PLT R_X86_64_JUMP_SLOT +#define REL_RELATIVE R_X86_64_RELATIVE +#define REL_COPY R_X86_64_COPY +#define REL_DTPMOD R_X86_64_DTPMOD64 +#define REL_DTPOFF R_X86_64_DTPOFF64 +#define REL_TPOFF R_X86_64_TPOFF64 +#define REL_TLSDESC R_X86_64_TLSDESC + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov %1,%%rsp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + " lea " #sym "(%%rip),%0\n" \ + : "=r"(*fp) : : "memory" ) diff --git a/vendor/modernc.org/libc/musl/arch/x86_64/syscall_arch.h b/vendor/modernc.org/libc/musl/arch/x86_64/syscall_arch.h new file mode 100644 index 000000000..803d7db37 --- /dev/null +++ b/vendor/modernc.org/libc/musl/arch/x86_64/syscall_arch.h @@ -0,0 +1,70 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +__inline long __syscall0(long n) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall1(long n, long a1) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall2(long n, long a1, long a2) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2) + : "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall3(long n, long a1, long a2, long a3) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3) : "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall4(long n, long a1, long a2, long a3, long a4) +{ + unsigned long ret; + register long r10 __asm__("r10") = a4; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(r10): "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5) +{ + unsigned long ret; + register long r10 __asm__("r10") = a4; + register long r8 __asm__("r8") = a5; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory"); + return ret; +} + +__inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) +{ + unsigned long ret; + register long r10 __asm__("r10") = a4; + register long r8 __asm__("r8") = a5; + register long r9 __asm__("r9") = a6; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory"); + return ret; +} + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__vdso_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6" +#define VDSO_GETCPU_SYM "__vdso_getcpu" +#define VDSO_GETCPU_VER "LINUX_2.6" + +#define IPC_64 0 diff --git a/vendor/modernc.org/libc/musl/compat/time32/__xstat.c b/vendor/modernc.org/libc/musl/compat/time32/__xstat.c new file mode 100644 index 000000000..acfbd3cc5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/__xstat.c @@ -0,0 +1,24 @@ +#include "time32.h" +#include + +struct stat32; + +int __fxstat64(int ver, int fd, struct stat32 *buf) +{ + return __fstat_time32(fd, buf); +} + +int __fxstatat64(int ver, int fd, const char *path, struct stat32 *buf, int flag) +{ + return __fstatat_time32(fd, path, buf, flag); +} + +int __lxstat64(int ver, const char *path, struct stat32 *buf) +{ + return __lstat_time32(path, buf); +} + +int __xstat64(int ver, const char *path, struct stat32 *buf) +{ + return __stat_time32(path, buf); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/adjtime32.c b/vendor/modernc.org/libc/musl/compat/time32/adjtime32.c new file mode 100644 index 000000000..b0042c631 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/adjtime32.c @@ -0,0 +1,21 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include +#include + +int __adjtime32(const struct timeval32 *in32, struct timeval32 *out32) +{ + struct timeval out; + int r = adjtime((&(struct timeval){ + .tv_sec = in32->tv_sec, + .tv_usec = in32->tv_usec}), &out); + if (r) return r; + /* We can't range-check the result because success was already + * committed by the above call. */ + if (out32) { + out32->tv_sec = out.tv_sec; + out32->tv_usec = out.tv_usec; + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/adjtimex_time32.c b/vendor/modernc.org/libc/musl/compat/time32/adjtimex_time32.c new file mode 100644 index 000000000..9c6f190ab --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/adjtimex_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#include +#include + +struct timex32; + +int __adjtimex_time32(struct timex32 *tx32) +{ + return __clock_adjtime32(CLOCK_REALTIME, tx32); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/aio_suspend_time32.c b/vendor/modernc.org/libc/musl/compat/time32/aio_suspend_time32.c new file mode 100644 index 000000000..ed5119bd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/aio_suspend_time32.c @@ -0,0 +1,11 @@ +#include "time32.h" +#include +#include + +int __aio_suspend_time32(const struct aiocb *const cbs[], int cnt, const struct timespec32 *ts32) +{ + return aio_suspend(cbs, cnt, ts32 ? (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}) : 0); +} + +weak_alias(aio_suspend, aio_suspend64); diff --git a/vendor/modernc.org/libc/musl/compat/time32/clock_adjtime32.c b/vendor/modernc.org/libc/musl/compat/time32/clock_adjtime32.c new file mode 100644 index 000000000..5a25b8ac0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/clock_adjtime32.c @@ -0,0 +1,70 @@ +#include "time32.h" +#include +#include +#include +#include +#include + +struct timex32 { + unsigned modes; + long offset, freq, maxerror, esterror; + int status; + long constant, precision, tolerance; + struct timeval32 time; + long tick, ppsfreq, jitter; + int shift; + long stabil, jitcnt, calcnt, errcnt, stbcnt; + int tai; + int __padding[11]; +}; + +int __clock_adjtime32(clockid_t clock_id, struct timex32 *tx32) +{ + struct timex utx = { + .modes = tx32->modes, + .offset = tx32->offset, + .freq = tx32->freq, + .maxerror = tx32->maxerror, + .esterror = tx32->esterror, + .status = tx32->status, + .constant = tx32->constant, + .precision = tx32->precision, + .tolerance = tx32->tolerance, + .time.tv_sec = tx32->time.tv_sec, + .time.tv_usec = tx32->time.tv_usec, + .tick = tx32->tick, + .ppsfreq = tx32->ppsfreq, + .jitter = tx32->jitter, + .shift = tx32->shift, + .stabil = tx32->stabil, + .jitcnt = tx32->jitcnt, + .calcnt = tx32->calcnt, + .errcnt = tx32->errcnt, + .stbcnt = tx32->stbcnt, + .tai = tx32->tai, + }; + int r = clock_adjtime(clock_id, &utx); + if (r<0) return r; + tx32->modes = utx.modes; + tx32->offset = utx.offset; + tx32->freq = utx.freq; + tx32->maxerror = utx.maxerror; + tx32->esterror = utx.esterror; + tx32->status = utx.status; + tx32->constant = utx.constant; + tx32->precision = utx.precision; + tx32->tolerance = utx.tolerance; + tx32->time.tv_sec = utx.time.tv_sec; + tx32->time.tv_usec = utx.time.tv_usec; + tx32->tick = utx.tick; + tx32->ppsfreq = utx.ppsfreq; + tx32->jitter = utx.jitter; + tx32->shift = utx.shift; + tx32->stabil = utx.stabil; + tx32->jitcnt = utx.jitcnt; + tx32->calcnt = utx.calcnt; + tx32->errcnt = utx.errcnt; + tx32->stbcnt = utx.stbcnt; + tx32->tai = utx.tai; + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/clock_getres_time32.c b/vendor/modernc.org/libc/musl/compat/time32/clock_getres_time32.c new file mode 100644 index 000000000..47a24c135 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/clock_getres_time32.c @@ -0,0 +1,13 @@ +#include "time32.h" +#include + +int __clock_getres_time32(clockid_t clk, struct timespec32 *ts32) +{ + struct timespec ts; + int r = clock_getres(clk, &ts); + if (!r && ts32) { + ts32->tv_sec = ts.tv_sec; + ts32->tv_nsec = ts.tv_nsec; + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/clock_gettime32.c b/vendor/modernc.org/libc/musl/compat/time32/clock_gettime32.c new file mode 100644 index 000000000..0cac7bbdf --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/clock_gettime32.c @@ -0,0 +1,18 @@ +#include "time32.h" +#include +#include +#include + +int __clock_gettime32(clockid_t clk, struct timespec32 *ts32) +{ + struct timespec ts; + int r = clock_gettime(clk, &ts); + if (r) return r; + if (ts.tv_sec < INT32_MIN || ts.tv_sec > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + ts32->tv_sec = ts.tv_sec; + ts32->tv_nsec = ts.tv_nsec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/clock_nanosleep_time32.c b/vendor/modernc.org/libc/musl/compat/time32/clock_nanosleep_time32.c new file mode 100644 index 000000000..91ef067d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/clock_nanosleep_time32.c @@ -0,0 +1,15 @@ +#include "time32.h" +#include +#include + +int __clock_nanosleep_time32(clockid_t clk, int flags, const struct timespec32 *req32, struct timespec32 *rem32) +{ + struct timespec rem; + int ret = clock_nanosleep(clk, flags, (&(struct timespec){ + .tv_sec = req32->tv_sec, .tv_nsec = req32->tv_nsec}), &rem); + if (ret==EINTR && rem32 && !(flags & TIMER_ABSTIME)) { + rem32->tv_sec = rem.tv_sec; + rem32->tv_nsec = rem.tv_nsec; + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/clock_settime32.c b/vendor/modernc.org/libc/musl/compat/time32/clock_settime32.c new file mode 100644 index 000000000..7ca4f0e9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/clock_settime32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include + +int __clock_settime32(clockid_t clk, const struct timespec32 *ts32) +{ + return clock_settime(clk, (&(struct timespec){ + .tv_sec = ts32->tv_sec, + .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/cnd_timedwait_time32.c b/vendor/modernc.org/libc/musl/compat/time32/cnd_timedwait_time32.c new file mode 100644 index 000000000..314251d1c --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/cnd_timedwait_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __cnd_timedwait_time32(cnd_t *restrict c, mtx_t *restrict m, const struct timespec32 *restrict ts32) +{ + return cnd_timedwait(c, m, ts32 ? (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}) : 0); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/ctime32.c b/vendor/modernc.org/libc/musl/compat/time32/ctime32.c new file mode 100644 index 000000000..a057274e1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/ctime32.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +char *__ctime32(time32_t *t) +{ + return ctime(&(time_t){*t}); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/ctime32_r.c b/vendor/modernc.org/libc/musl/compat/time32/ctime32_r.c new file mode 100644 index 000000000..e1ad2e283 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/ctime32_r.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +char *__ctime32_r(time32_t *t, char *buf) +{ + return ctime_r(&(time_t){*t}, buf); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/difftime32.c b/vendor/modernc.org/libc/musl/compat/time32/difftime32.c new file mode 100644 index 000000000..5950943a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/difftime32.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +double __difftime32(time32_t t1, time32_t t2) +{ + return difftime(t1, t2); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/fstat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/fstat_time32.c new file mode 100644 index 000000000..3e0843988 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/fstat_time32.c @@ -0,0 +1,17 @@ +#include "time32.h" +#include +#include +#include +#include + +struct stat32; + +int __fstat_time32(int fd, struct stat32 *restrict st32) +{ + struct stat st; + int r = fstat(fd, &st); + if (!r) memcpy(st32, &st, offsetof(struct stat, st_atim)); + return r; +} + +weak_alias(fstat, fstat64); diff --git a/vendor/modernc.org/libc/musl/compat/time32/fstatat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/fstatat_time32.c new file mode 100644 index 000000000..85dcb008e --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/fstatat_time32.c @@ -0,0 +1,17 @@ +#include "time32.h" +#include +#include +#include +#include + +struct stat32; + +int __fstatat_time32(int fd, const char *restrict path, struct stat32 *restrict st32, int flag) +{ + struct stat st; + int r = fstatat(fd, path, &st, flag); + if (!r) memcpy(st32, &st, offsetof(struct stat, st_atim)); + return r; +} + +weak_alias(fstatat, fstatat64); diff --git a/vendor/modernc.org/libc/musl/compat/time32/ftime32.c b/vendor/modernc.org/libc/musl/compat/time32/ftime32.c new file mode 100644 index 000000000..166a6daeb --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/ftime32.c @@ -0,0 +1,25 @@ +#include "time32.h" +#include +#include +#include + +struct timeb32 { + int32_t time; + unsigned short millitm; + short timezone, dstflag; +}; + +int __ftime32(struct timeb32 *tp) +{ + struct timeb tb; + if (ftime(&tb) < 0) return -1; + if (tb.time < INT32_MIN || tb.time > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + tp->time = tb.time; + tp->millitm = tb.millitm; + tp->timezone = tb.timezone; + tp->dstflag = tb.dstflag; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/futimens_time32.c b/vendor/modernc.org/libc/musl/compat/time32/futimens_time32.c new file mode 100644 index 000000000..7856f176e --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/futimens_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#include +#include + +int __futimens_time32(int fd, const struct timespec32 *times32) +{ + return futimens(fd, !times32 ? 0 : ((struct timespec[2]){ + {.tv_sec = times32[0].tv_sec,.tv_nsec = times32[0].tv_nsec}, + {.tv_sec = times32[1].tv_sec,.tv_nsec = times32[1].tv_nsec}})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/futimes_time32.c b/vendor/modernc.org/libc/musl/compat/time32/futimes_time32.c new file mode 100644 index 000000000..f29533f12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/futimes_time32.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include +#include + +int __futimes_time32(int fd, const struct timeval32 times32[2]) +{ + return futimes(fd, !times32 ? 0 : ((struct timeval[2]){ + {.tv_sec = times32[0].tv_sec,.tv_usec = times32[0].tv_usec}, + {.tv_sec = times32[1].tv_sec,.tv_usec = times32[1].tv_usec}})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/futimesat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/futimesat_time32.c new file mode 100644 index 000000000..5a1295bde --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/futimesat_time32.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include +#include + +int __futimesat_time32(int dirfd, const char *pathname, const struct timeval32 times32[2]) +{ + return futimesat(dirfd, pathname, !times32 ? 0 : ((struct timeval[2]){ + {.tv_sec = times32[0].tv_sec,.tv_usec = times32[0].tv_usec}, + {.tv_sec = times32[1].tv_sec,.tv_usec = times32[1].tv_usec}})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/getitimer_time32.c b/vendor/modernc.org/libc/musl/compat/time32/getitimer_time32.c new file mode 100644 index 000000000..4bac4bf52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/getitimer_time32.c @@ -0,0 +1,15 @@ +#include "time32.h" +#include +#include + +int __getitimer_time32(int which, struct itimerval32 *old32) +{ + struct itimerval old; + int r = getitimer(which, &old); + if (r) return r; + old32->it_interval.tv_sec = old.it_interval.tv_sec; + old32->it_interval.tv_usec = old.it_interval.tv_usec; + old32->it_value.tv_sec = old.it_value.tv_sec; + old32->it_value.tv_usec = old.it_value.tv_usec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/getrusage_time32.c b/vendor/modernc.org/libc/musl/compat/time32/getrusage_time32.c new file mode 100644 index 000000000..d7487dee6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/getrusage_time32.c @@ -0,0 +1,39 @@ +#include "time32.h" +#include +#include +#include + +struct compat_rusage { + struct timeval32 ru_utime; + struct timeval32 ru_stime; + long ru_maxrss; + long ru_ixrss; + long ru_idrss; + long ru_isrss; + long ru_minflt; + long ru_majflt; + long ru_nswap; + long ru_inblock; + long ru_oublock; + long ru_msgsnd; + long ru_msgrcv; + long ru_nsignals; + long ru_nvcsw; + long ru_nivcsw; +}; + +int __getrusage_time32(int who, struct compat_rusage *usage) +{ + struct rusage ru; + int r = getrusage(who, &ru); + if (!r) { + usage->ru_utime.tv_sec = ru.ru_utime.tv_sec; + usage->ru_utime.tv_usec = ru.ru_utime.tv_usec; + usage->ru_stime.tv_sec = ru.ru_stime.tv_sec; + usage->ru_stime.tv_usec = ru.ru_stime.tv_usec; + memcpy(&usage->ru_maxrss, &ru.ru_maxrss, + sizeof(struct compat_rusage) - + offsetof(struct compat_rusage, ru_maxrss)); + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/gettimeofday_time32.c b/vendor/modernc.org/libc/musl/compat/time32/gettimeofday_time32.c new file mode 100644 index 000000000..1f3ce68e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/gettimeofday_time32.c @@ -0,0 +1,19 @@ +#include "time32.h" +#include +#include +#include + +int __gettimeofday_time32(struct timeval32 *tv32, void *tz) +{ + struct timeval tv; + if (!tv32) return 0; + int r = gettimeofday(&tv, 0); + if (r) return r; + if (tv.tv_sec < INT32_MIN || tv.tv_sec > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + tv32->tv_sec = tv.tv_sec; + tv32->tv_usec = tv.tv_usec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/gmtime32.c b/vendor/modernc.org/libc/musl/compat/time32/gmtime32.c new file mode 100644 index 000000000..963f0e052 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/gmtime32.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +struct tm *__gmtime32(time32_t *t) +{ + return gmtime(&(time_t){*t}); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/gmtime32_r.c b/vendor/modernc.org/libc/musl/compat/time32/gmtime32_r.c new file mode 100644 index 000000000..7d72bfb32 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/gmtime32_r.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +struct tm *__gmtime32_r(time32_t *t, struct tm *tm) +{ + return gmtime_r(&(time_t){*t}, tm); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/localtime32.c b/vendor/modernc.org/libc/musl/compat/time32/localtime32.c new file mode 100644 index 000000000..96bc30349 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/localtime32.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +struct tm *__localtime32(time32_t *t) +{ + return localtime(&(time_t){*t}); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/localtime32_r.c b/vendor/modernc.org/libc/musl/compat/time32/localtime32_r.c new file mode 100644 index 000000000..633ec8293 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/localtime32_r.c @@ -0,0 +1,7 @@ +#include "time32.h" +#include + +struct tm *__localtime32_r(time32_t *t, struct tm *tm) +{ + return localtime_r(&(time_t){*t}, tm); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/lstat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/lstat_time32.c new file mode 100644 index 000000000..c1257a144 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/lstat_time32.c @@ -0,0 +1,17 @@ +#include "time32.h" +#include +#include +#include +#include + +struct stat32; + +int __lstat_time32(const char *restrict path, struct stat32 *restrict st32) +{ + struct stat st; + int r = lstat(path, &st); + if (!r) memcpy(st32, &st, offsetof(struct stat, st_atim)); + return r; +} + +weak_alias(lstat, lstat64); diff --git a/vendor/modernc.org/libc/musl/compat/time32/lutimes_time32.c b/vendor/modernc.org/libc/musl/compat/time32/lutimes_time32.c new file mode 100644 index 000000000..7f75cd4a1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/lutimes_time32.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include +#include + +int __lutimes_time32(const char *path, const struct timeval32 times32[2]) +{ + return lutimes(path, !times32 ? 0 : ((struct timeval[2]){ + {.tv_sec = times32[0].tv_sec,.tv_usec = times32[0].tv_usec}, + {.tv_sec = times32[1].tv_sec,.tv_usec = times32[1].tv_usec}})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/mktime32.c b/vendor/modernc.org/libc/musl/compat/time32/mktime32.c new file mode 100644 index 000000000..e6f15d513 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/mktime32.c @@ -0,0 +1,16 @@ +#include "time32.h" +#include +#include +#include + +time32_t __mktime32(struct tm *tm) +{ + struct tm tmp = *tm; + time_t t = mktime(&tmp); + if (t < INT32_MIN || t > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + *tm = tmp; + return t; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/mq_timedreceive_time32.c b/vendor/modernc.org/libc/musl/compat/time32/mq_timedreceive_time32.c new file mode 100644 index 000000000..211cea4ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/mq_timedreceive_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +ssize_t __mq_timedreceive_time32(mqd_t mqd, char *restrict msg, size_t len, unsigned *restrict prio, const struct timespec32 *restrict ts32) +{ + return mq_timedreceive(mqd, msg, len, prio, ts32 ? (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}) : 0); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/mq_timedsend_time32.c b/vendor/modernc.org/libc/musl/compat/time32/mq_timedsend_time32.c new file mode 100644 index 000000000..93b697a7e --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/mq_timedsend_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __mq_timedsend_time32(mqd_t mqd, const char *msg, size_t len, unsigned prio, const struct timespec32 *ts32) +{ + return mq_timedsend(mqd, msg, len, prio, ts32 ? (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}) : 0); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/mtx_timedlock_time32.c b/vendor/modernc.org/libc/musl/compat/time32/mtx_timedlock_time32.c new file mode 100644 index 000000000..a01f09b89 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/mtx_timedlock_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __mtx_timedlock_time32(mtx_t *restrict m, const struct timespec32 *restrict ts32) +{ + return mtx_timedlock(m, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/nanosleep_time32.c b/vendor/modernc.org/libc/musl/compat/time32/nanosleep_time32.c new file mode 100644 index 000000000..ea6bdd81b --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/nanosleep_time32.c @@ -0,0 +1,15 @@ +#include "time32.h" +#include +#include + +int __nanosleep_time32(const struct timespec32 *req32, struct timespec32 *rem32) +{ + struct timespec rem; + int ret = nanosleep((&(struct timespec){ + .tv_sec = req32->tv_sec, .tv_nsec = req32->tv_nsec}), &rem); + if (ret<0 && errno==EINTR && rem32) { + rem32->tv_sec = rem.tv_sec; + rem32->tv_nsec = rem.tv_nsec; + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/ppoll_time32.c b/vendor/modernc.org/libc/musl/compat/time32/ppoll_time32.c new file mode 100644 index 000000000..43b4b0df6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/ppoll_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#define _GNU_SOURCE +#include +#include + +int __ppoll_time32(struct pollfd *fds, nfds_t n, const struct timespec32 *ts32, const sigset_t *mask) +{ + return ppoll(fds, n, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}), mask); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pselect_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pselect_time32.c new file mode 100644 index 000000000..ecaa8f868 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pselect_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __pselect_time32(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, const struct timespec32 *restrict ts32, const sigset_t *restrict mask) +{ + return pselect(n, rfds, wfds, efds, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}), mask); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pthread_cond_timedwait_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pthread_cond_timedwait_time32.c new file mode 100644 index 000000000..fba1f2a91 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pthread_cond_timedwait_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __pthread_cond_timedwait_time32(pthread_cond_t *restrict c, pthread_mutex_t *restrict m, const struct timespec32 *restrict ts32) +{ + return pthread_cond_timedwait(c, m, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pthread_mutex_timedlock_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pthread_mutex_timedlock_time32.c new file mode 100644 index 000000000..2d29602cb --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pthread_mutex_timedlock_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __pthread_mutex_timedlock_time32(pthread_mutex_t *restrict m, const struct timespec32 *restrict ts32) +{ + return pthread_mutex_timedlock(m, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedrdlock_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedrdlock_time32.c new file mode 100644 index 000000000..33df27a4a --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedrdlock_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __pthread_rwlock_timedrdlock_time32(pthread_rwlock_t *restrict rw, const struct timespec32 *restrict ts32) +{ + return pthread_rwlock_timedrdlock(rw, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedwrlock_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedwrlock_time32.c new file mode 100644 index 000000000..99f24f734 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pthread_rwlock_timedwrlock_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __pthread_rwlock_timedwrlock_time32(pthread_rwlock_t *restrict rw, const struct timespec32 *restrict ts32) +{ + return pthread_rwlock_timedwrlock(rw, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/pthread_timedjoin_np_time32.c b/vendor/modernc.org/libc/musl/compat/time32/pthread_timedjoin_np_time32.c new file mode 100644 index 000000000..3ec299511 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/pthread_timedjoin_np_time32.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include + +int __pthread_timedjoin_np_time32(pthread_t t, void **res, const struct timespec32 *at32) +{ + return pthread_timedjoin_np(t, res, !at32 ? 0 : (&(struct timespec){ + .tv_sec = at32->tv_sec, .tv_nsec = at32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/recvmmsg_time32.c b/vendor/modernc.org/libc/musl/compat/time32/recvmmsg_time32.c new file mode 100644 index 000000000..acf1cfb8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/recvmmsg_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#define _GNU_SOURCE +#include +#include + +int __recvmmsg_time32(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags, struct timespec32 *ts32) +{ + return recvmmsg(fd, msgvec, vlen, flags, ts32 ? (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec}) : 0); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/sched_rr_get_interval_time32.c b/vendor/modernc.org/libc/musl/compat/time32/sched_rr_get_interval_time32.c new file mode 100644 index 000000000..36cbbaca0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/sched_rr_get_interval_time32.c @@ -0,0 +1,13 @@ +#include "time32.h" +#include +#include + +int __sched_rr_get_interval_time32(pid_t pid, struct timespec32 *ts32) +{ + struct timespec ts; + int r = sched_rr_get_interval(pid, &ts); + if (r) return r; + ts32->tv_sec = ts.tv_sec; + ts32->tv_nsec = ts.tv_nsec; + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/select_time32.c b/vendor/modernc.org/libc/musl/compat/time32/select_time32.c new file mode 100644 index 000000000..2d8df9aca --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/select_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#include +#include +#include + +int __select_time32(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, struct timeval32 *restrict tv32) +{ + return select(n, rfds, wfds, efds, !tv32 ? 0 : (&(struct timeval){ + .tv_sec = tv32->tv_sec, .tv_usec = tv32->tv_usec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/sem_timedwait_time32.c b/vendor/modernc.org/libc/musl/compat/time32/sem_timedwait_time32.c new file mode 100644 index 000000000..c3469f9bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/sem_timedwait_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __sem_timedwait_time32(sem_t *sem, const struct timespec32 *restrict ts32) +{ + return sem_timedwait(sem, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/semtimedop_time32.c b/vendor/modernc.org/libc/musl/compat/time32/semtimedop_time32.c new file mode 100644 index 000000000..34ec52819 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/semtimedop_time32.c @@ -0,0 +1,10 @@ +#include "time32.h" +#define _GNU_SOURCE +#include +#include + +int __semtimedop_time32(int id, struct sembuf *buf, size_t n, const struct timespec32 *ts32) +{ + return semtimedop(id, buf, n, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/setitimer_time32.c b/vendor/modernc.org/libc/musl/compat/time32/setitimer_time32.c new file mode 100644 index 000000000..2475fd8c1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/setitimer_time32.c @@ -0,0 +1,25 @@ +#include "time32.h" +#include +#include + +int __setitimer_time32(int which, const struct itimerval32 *restrict new32, struct itimerval32 *restrict old32) +{ + struct itimerval old; + int r = setitimer(which, (&(struct itimerval){ + .it_interval.tv_sec = new32->it_interval.tv_sec, + .it_interval.tv_usec = new32->it_interval.tv_usec, + .it_value.tv_sec = new32->it_value.tv_sec, + .it_value.tv_usec = new32->it_value.tv_usec}), &old); + if (r) return r; + /* The above call has already committed to success by changing the + * timer setting, so we can't fail on out-of-range old value. + * Since these are relative times, values large enough to overflow + * don't make sense anyway. */ + if (old32) { + old32->it_interval.tv_sec = old.it_interval.tv_sec; + old32->it_interval.tv_usec = old.it_interval.tv_usec; + old32->it_value.tv_sec = old.it_value.tv_sec; + old32->it_value.tv_usec = old.it_value.tv_usec; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/settimeofday_time32.c b/vendor/modernc.org/libc/musl/compat/time32/settimeofday_time32.c new file mode 100644 index 000000000..09e625cba --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/settimeofday_time32.c @@ -0,0 +1,10 @@ +#define _BSD_SOURCE +#include "time32.h" +#include + +int __settimeofday_time32(const struct timeval32 *tv32, const void *tz) +{ + return settimeofday(!tv32 ? 0 : (&(struct timeval){ + .tv_sec = tv32->tv_sec, + .tv_usec = tv32->tv_usec}), 0); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/sigtimedwait_time32.c b/vendor/modernc.org/libc/musl/compat/time32/sigtimedwait_time32.c new file mode 100644 index 000000000..6b3aa39c7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/sigtimedwait_time32.c @@ -0,0 +1,9 @@ +#include "time32.h" +#include +#include + +int __sigtimedwait_time32(const sigset_t *restrict set, siginfo_t *restrict si, const struct timespec32 *restrict ts32) +{ + return sigtimedwait(set, si, !ts32 ? 0 : (&(struct timespec){ + .tv_sec = ts32->tv_sec, .tv_nsec = ts32->tv_nsec})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/stat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/stat_time32.c new file mode 100644 index 000000000..8c6121dad --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/stat_time32.c @@ -0,0 +1,17 @@ +#include "time32.h" +#include +#include +#include +#include + +struct stat32; + +int __stat_time32(const char *restrict path, struct stat32 *restrict st32) +{ + struct stat st; + int r = stat(path, &st); + if (!r) memcpy(st32, &st, offsetof(struct stat, st_atim)); + return r; +} + +weak_alias(stat, stat64); diff --git a/vendor/modernc.org/libc/musl/compat/time32/stime32.c b/vendor/modernc.org/libc/musl/compat/time32/stime32.c new file mode 100644 index 000000000..cc76364d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/stime32.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include "time32.h" +#include + +int __stime32(const time32_t *t) +{ + return stime(&(time_t){*t}); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/thrd_sleep_time32.c b/vendor/modernc.org/libc/musl/compat/time32/thrd_sleep_time32.c new file mode 100644 index 000000000..59088001b --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/thrd_sleep_time32.c @@ -0,0 +1,16 @@ +#include "time32.h" +#include +#include +#include + +int __thrd_sleep_time32(const struct timespec32 *req32, struct timespec32 *rem32) +{ + struct timespec rem; + int ret = thrd_sleep((&(struct timespec){ + .tv_sec = req32->tv_sec, .tv_nsec = req32->tv_nsec}), &rem); + if (ret<0 && errno==EINTR && rem32) { + rem32->tv_sec = rem.tv_sec; + rem32->tv_nsec = rem.tv_nsec; + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/time32.c b/vendor/modernc.org/libc/musl/compat/time32/time32.c new file mode 100644 index 000000000..4b8fac1c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/time32.c @@ -0,0 +1,15 @@ +#include "time32.h" +#include +#include +#include + +time32_t __time32(time32_t *p) +{ + time_t t = time(0); + if (t < INT32_MIN || t > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + if (p) *p = t; + return t; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/time32.h b/vendor/modernc.org/libc/musl/compat/time32/time32.h new file mode 100644 index 000000000..fdec17c34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/time32.h @@ -0,0 +1,91 @@ +#ifndef TIME32_H +#define TIME32_H + +#include + +typedef long time32_t; + +struct timeval32 { + long tv_sec; + long tv_usec; +}; + +struct itimerval32 { + struct timeval32 it_interval; + struct timeval32 it_value; +}; + +struct timespec32 { + long tv_sec; + long tv_nsec; +}; + +struct itimerspec32 { + struct timespec32 it_interval; + struct timespec32 it_value; +}; + +int __adjtime32() __asm__("adjtime"); +int __adjtimex_time32() __asm__("adjtimex"); +int __aio_suspend_time32() __asm__("aio_suspend"); +int __clock_adjtime32() __asm__("clock_adjtime"); +int __clock_getres_time32() __asm__("clock_getres"); +int __clock_gettime32() __asm__("clock_gettime"); +int __clock_nanosleep_time32() __asm__("clock_nanosleep"); +int __clock_settime32() __asm__("clock_settime"); +int __cnd_timedwait_time32() __asm__("cnd_timedwait"); +char *__ctime32() __asm__("ctime"); +char *__ctime32_r() __asm__("ctime_r"); +double __difftime32() __asm__("difftime"); +int __fstat_time32() __asm__("fstat"); +int __fstatat_time32() __asm__("fstatat"); +int __ftime32() __asm__("ftime"); +int __futimens_time32() __asm__("futimens"); +int __futimes_time32() __asm__("futimes"); +int __futimesat_time32() __asm__("futimesat"); +int __getitimer_time32() __asm__("getitimer"); +int __getrusage_time32() __asm__("getrusage"); +int __gettimeofday_time32() __asm__("gettimeofday"); +struct tm *__gmtime32() __asm__("gmtime"); +struct tm *__gmtime32_r() __asm__("gmtime_r"); +struct tm *__localtime32() __asm__("localtime"); +struct tm *__localtime32_r() __asm__("localtime_r"); +int __lstat_time32() __asm__("lstat"); +int __lutimes_time32() __asm__("lutimes"); +time32_t __mktime32() __asm__("mktime"); +ssize_t __mq_timedreceive_time32() __asm__("mq_timedreceive"); +int __mq_timedsend_time32() __asm__("mq_timedsend"); +int __mtx_timedlock_time32() __asm__("mtx_timedlock"); +int __nanosleep_time32() __asm__("nanosleep"); +int __ppoll_time32() __asm__("ppoll"); +int __pselect_time32() __asm__("pselect"); +int __pthread_cond_timedwait_time32() __asm__("pthread_cond_timedwait"); +int __pthread_mutex_timedlock_time32() __asm__("pthread_mutex_timedlock"); +int __pthread_rwlock_timedrdlock_time32() __asm__("pthread_rwlock_timedrdlock"); +int __pthread_rwlock_timedwrlock_time32() __asm__("pthread_rwlock_timedwrlock"); +int __pthread_timedjoin_np_time32() __asm__("pthread_timedjoin_np"); +int __recvmmsg_time32() __asm__("recvmmsg"); +int __sched_rr_get_interval_time32() __asm__("sched_rr_get_interval"); +int __select_time32() __asm__("select"); +int __sem_timedwait_time32() __asm__("sem_timedwait"); +int __semtimedop_time32() __asm__("semtimedop"); +int __setitimer_time32() __asm__("setitimer"); +int __settimeofday_time32() __asm__("settimeofday"); +int __sigtimedwait_time32() __asm__("sigtimedwait"); +int __stat_time32() __asm__("stat"); +int __stime32() __asm__("stime"); +int __thrd_sleep_time32() __asm__("thrd_sleep"); +time32_t __time32() __asm__("time"); +time32_t __time32gm() __asm__("timegm"); +int __timer_gettime32() __asm__("timer_gettime"); +int __timer_settime32() __asm__("timer_settime"); +int __timerfd_gettime32() __asm__("timerfd_gettime"); +int __timerfd_settime32() __asm__("timerfd_settime"); +int __timespec_get_time32() __asm__("timespec_get"); +int __utime_time32() __asm__("utime"); +int __utimensat_time32() __asm__("utimensat"); +int __utimes_time32() __asm__("utimes"); +pid_t __wait3_time32() __asm__("wait3"); +pid_t __wait4_time32() __asm__("wait4"); + +#endif diff --git a/vendor/modernc.org/libc/musl/compat/time32/time32gm.c b/vendor/modernc.org/libc/musl/compat/time32/time32gm.c new file mode 100644 index 000000000..60d68fbf8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/time32gm.c @@ -0,0 +1,15 @@ +#define _GNU_SOURCE +#include "time32.h" +#include +#include +#include + +time32_t __time32gm(struct tm *tm) +{ + time_t t = timegm(tm); + if (t < INT32_MIN || t > INT32_MAX) { + errno = EOVERFLOW; + return -1; + } + return t; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/timer_gettime32.c b/vendor/modernc.org/libc/musl/compat/time32/timer_gettime32.c new file mode 100644 index 000000000..b4184cc28 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/timer_gettime32.c @@ -0,0 +1,15 @@ +#include "time32.h" +#include + +int __timer_gettime32(timer_t t, struct itimerspec32 *val32) +{ + struct itimerspec old; + int r = timer_gettime(t, &old); + if (r) return r; + /* No range checking for consistency with settime */ + val32->it_interval.tv_sec = old.it_interval.tv_sec; + val32->it_interval.tv_nsec = old.it_interval.tv_nsec; + val32->it_value.tv_sec = old.it_value.tv_sec; + val32->it_value.tv_nsec = old.it_value.tv_nsec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/timer_settime32.c b/vendor/modernc.org/libc/musl/compat/time32/timer_settime32.c new file mode 100644 index 000000000..a447e7d41 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/timer_settime32.c @@ -0,0 +1,25 @@ +#include "time32.h" +#include + +int __timer_settime32(timer_t t, int flags, const struct itimerspec32 *restrict val32, struct itimerspec32 *restrict old32) +{ + struct itimerspec old; + int r = timer_settime(t, flags, (&(struct itimerspec){ + .it_interval.tv_sec = val32->it_interval.tv_sec, + .it_interval.tv_nsec = val32->it_interval.tv_nsec, + .it_value.tv_sec = val32->it_value.tv_sec, + .it_value.tv_nsec = val32->it_value.tv_nsec}), + old32 ? &old : 0); + if (r) return r; + /* The above call has already committed to success by changing the + * timer setting, so we can't fail on out-of-range old value. + * Since these are relative times, values large enough to overflow + * don't make sense anyway. */ + if (old32) { + old32->it_interval.tv_sec = old.it_interval.tv_sec; + old32->it_interval.tv_nsec = old.it_interval.tv_nsec; + old32->it_value.tv_sec = old.it_value.tv_sec; + old32->it_value.tv_nsec = old.it_value.tv_nsec; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/timerfd_gettime32.c b/vendor/modernc.org/libc/musl/compat/time32/timerfd_gettime32.c new file mode 100644 index 000000000..75e5435f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/timerfd_gettime32.c @@ -0,0 +1,16 @@ +#include "time32.h" +#include +#include + +int __timerfd_gettime32(int t, struct itimerspec32 *val32) +{ + struct itimerspec old; + int r = timerfd_gettime(t, &old); + if (r) return r; + /* No range checking for consistency with settime */ + val32->it_interval.tv_sec = old.it_interval.tv_sec; + val32->it_interval.tv_nsec = old.it_interval.tv_nsec; + val32->it_value.tv_sec = old.it_value.tv_sec; + val32->it_value.tv_nsec = old.it_value.tv_nsec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/timerfd_settime32.c b/vendor/modernc.org/libc/musl/compat/time32/timerfd_settime32.c new file mode 100644 index 000000000..67830d341 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/timerfd_settime32.c @@ -0,0 +1,26 @@ +#include "time32.h" +#include +#include + +int __timerfd_settime32(int t, int flags, const struct itimerspec32 *restrict val32, struct itimerspec32 *restrict old32) +{ + struct itimerspec old; + int r = timerfd_settime(t, flags, (&(struct itimerspec){ + .it_interval.tv_sec = val32->it_interval.tv_sec, + .it_interval.tv_nsec = val32->it_interval.tv_nsec, + .it_value.tv_sec = val32->it_value.tv_sec, + .it_value.tv_nsec = val32->it_value.tv_nsec}), + old32 ? &old : 0); + if (r) return r; + /* The above call has already committed to success by changing the + * timer setting, so we can't fail on out-of-range old value. + * Since these are relative times, values large enough to overflow + * don't make sense anyway. */ + if (old32) { + old32->it_interval.tv_sec = old.it_interval.tv_sec; + old32->it_interval.tv_nsec = old.it_interval.tv_nsec; + old32->it_value.tv_sec = old.it_value.tv_sec; + old32->it_value.tv_nsec = old.it_value.tv_nsec; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/timespec_get_time32.c b/vendor/modernc.org/libc/musl/compat/time32/timespec_get_time32.c new file mode 100644 index 000000000..e9ca94cb4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/timespec_get_time32.c @@ -0,0 +1,18 @@ +#include "time32.h" +#include +#include +#include + +int __timespec_get_time32(struct timespec32 *ts32, int base) +{ + struct timespec ts; + int r = timespec_get(&ts, base); + if (!r) return r; + if (ts.tv_sec < INT32_MIN || ts.tv_sec > INT32_MAX) { + errno = EOVERFLOW; + return 0; + } + ts32->tv_sec = ts.tv_sec; + ts32->tv_nsec = ts.tv_nsec; + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/utime_time32.c b/vendor/modernc.org/libc/musl/compat/time32/utime_time32.c new file mode 100644 index 000000000..65f11d463 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/utime_time32.c @@ -0,0 +1,14 @@ +#include "time32.h" +#include +#include + +struct utimbuf32 { + time32_t actime; + time32_t modtime; +}; + +int __utime_time32(const char *path, const struct utimbuf32 *times32) +{ + return utime(path, !times32 ? 0 : (&(struct utimbuf){ + .actime = times32->actime, .modtime = times32->modtime})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/utimensat_time32.c b/vendor/modernc.org/libc/musl/compat/time32/utimensat_time32.c new file mode 100644 index 000000000..c687b8d1b --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/utimensat_time32.c @@ -0,0 +1,11 @@ +#include "time32.h" +#include +#include + +int __utimensat_time32(int fd, const char *path, const struct timespec32 times32[2], int flags) +{ + return utimensat(fd, path, !times32 ? 0 : ((struct timespec[2]){ + {.tv_sec = times32[0].tv_sec,.tv_nsec = times32[0].tv_nsec}, + {.tv_sec = times32[1].tv_sec,.tv_nsec = times32[1].tv_nsec}}), + flags); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/utimes_time32.c b/vendor/modernc.org/libc/musl/compat/time32/utimes_time32.c new file mode 100644 index 000000000..59248f623 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/utimes_time32.c @@ -0,0 +1,11 @@ +#include "time32.h" +#include +#include +#include + +int __utimes_time32(const char *path, const struct timeval32 times32[2]) +{ + return utimes(path, !times32 ? 0 : ((struct timeval[2]){ + {.tv_sec = times32[0].tv_sec,.tv_usec = times32[0].tv_usec}, + {.tv_sec = times32[1].tv_sec,.tv_usec = times32[1].tv_usec}})); +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/wait3_time32.c b/vendor/modernc.org/libc/musl/compat/time32/wait3_time32.c new file mode 100644 index 000000000..8fe128edb --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/wait3_time32.c @@ -0,0 +1,40 @@ +#define _BSD_SOURCE +#include "time32.h" +#include +#include +#include + +struct compat_rusage { + struct timeval32 ru_utime; + struct timeval32 ru_stime; + long ru_maxrss; + long ru_ixrss; + long ru_idrss; + long ru_isrss; + long ru_minflt; + long ru_majflt; + long ru_nswap; + long ru_inblock; + long ru_oublock; + long ru_msgsnd; + long ru_msgrcv; + long ru_nsignals; + long ru_nvcsw; + long ru_nivcsw; +}; + +pid_t __wait3_time32(int *status, int options, struct compat_rusage *usage) +{ + struct rusage ru; + int r = wait3(status, options, usage ? &ru : 0); + if (!r && usage) { + usage->ru_utime.tv_sec = ru.ru_utime.tv_sec; + usage->ru_utime.tv_usec = ru.ru_utime.tv_usec; + usage->ru_stime.tv_sec = ru.ru_stime.tv_sec; + usage->ru_stime.tv_usec = ru.ru_stime.tv_usec; + memcpy(&usage->ru_maxrss, &ru.ru_maxrss, + sizeof(struct compat_rusage) - + offsetof(struct compat_rusage, ru_maxrss)); + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/compat/time32/wait4_time32.c b/vendor/modernc.org/libc/musl/compat/time32/wait4_time32.c new file mode 100644 index 000000000..918548e74 --- /dev/null +++ b/vendor/modernc.org/libc/musl/compat/time32/wait4_time32.c @@ -0,0 +1,40 @@ +#define _BSD_SOURCE +#include "time32.h" +#include +#include +#include + +struct compat_rusage { + struct timeval32 ru_utime; + struct timeval32 ru_stime; + long ru_maxrss; + long ru_ixrss; + long ru_idrss; + long ru_isrss; + long ru_minflt; + long ru_majflt; + long ru_nswap; + long ru_inblock; + long ru_oublock; + long ru_msgsnd; + long ru_msgrcv; + long ru_nsignals; + long ru_nvcsw; + long ru_nivcsw; +}; + +pid_t __wait4_time32(pid_t pid, int *status, int options, struct compat_rusage *usage) +{ + struct rusage ru; + int r = wait4(pid, status, options, usage ? &ru : 0); + if (!r && usage) { + usage->ru_utime.tv_sec = ru.ru_utime.tv_sec; + usage->ru_utime.tv_usec = ru.ru_utime.tv_usec; + usage->ru_stime.tv_sec = ru.ru_stime.tv_sec; + usage->ru_stime.tv_usec = ru.ru_stime.tv_usec; + memcpy(&usage->ru_maxrss, &ru.ru_maxrss, + sizeof(struct compat_rusage) - + offsetof(struct compat_rusage, ru_maxrss)); + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/copyright.c b/vendor/modernc.org/libc/musl/copyright.c new file mode 100644 index 000000000..cd9a0a889 --- /dev/null +++ b/vendor/modernc.org/libc/musl/copyright.c @@ -0,0 +1,194 @@ +// musl as a whole is licensed under the following standard MIT license: +// +// ---------------------------------------------------------------------- +// Copyright © 2005-2020 Rich Felker, et al. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// ---------------------------------------------------------------------- +// +// Authors/contributors include: +// +// A. Wilcox +// Ada Worcester +// Alex Dowad +// Alex Suykov +// Alexander Monakov +// Andre McCurdy +// Andrew Kelley +// Anthony G. Basile +// Aric Belsito +// Arvid Picciani +// Bartosz Brachaczek +// Benjamin Peterson +// Bobby Bingham +// Boris Brezillon +// Brent Cook +// Chris Spiegel +// Clément Vasseur +// Daniel Micay +// Daniel Sabogal +// Daurnimator +// David Carlier +// David Edelsohn +// Denys Vlasenko +// Dmitry Ivanov +// Dmitry V. Levin +// Drew DeVault +// Emil Renner Berthing +// Fangrui Song +// Felix Fietkau +// Felix Janda +// Gianluca Anzolin +// Hauke Mehrtens +// He X +// Hiltjo Posthuma +// Isaac Dunham +// Jaydeep Patil +// Jens Gustedt +// Jeremy Huntwork +// Jo-Philipp Wich +// Joakim Sindholt +// John Spencer +// Julien Ramseier +// Justin Cormack +// Kaarle Ritvanen +// Khem Raj +// Kylie McClain +// Leah Neukirchen +// Luca Barbato +// Luka Perkov +// M Farkas-Dyck (Strake) +// Mahesh Bodapati +// Markus Wichmann +// Masanori Ogino +// Michael Clark +// Michael Forney +// Mikhail Kremnyov +// Natanael Copa +// Nicholas J. Kain +// orc +// Pascal Cuoq +// Patrick Oppenlander +// Petr Hosek +// Petr Skocik +// Pierre Carrier +// Reini Urban +// Rich Felker +// Richard Pennington +// Ryan Fairfax +// Samuel Holland +// Segev Finer +// Shiz +// sin +// Solar Designer +// Stefan Kristiansson +// Stefan O'Rear +// Szabolcs Nagy +// Timo Teräs +// Trutz Behn +// Valentin Ochs +// Will Dietz +// William Haddon +// William Pitcock +// +// Portions of this software are derived from third-party works licensed +// under terms compatible with the above MIT license: +// +// The TRE regular expression implementation (src/regex/reg* and +// src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed +// under a 2-clause BSD license (license text in the source files). The +// included version has been heavily modified by Rich Felker in 2012, in +// the interests of size, simplicity, and namespace cleanliness. +// +// Much of the math library code (src/math/* and src/complex/*) is +// Copyright © 1993,2004 Sun Microsystems or +// Copyright © 2003-2011 David Schultz or +// Copyright © 2003-2009 Steven G. Kargl or +// Copyright © 2003-2009 Bruce D. Evans or +// Copyright © 2008 Stephen L. Moshier or +// Copyright © 2017-2018 Arm Limited +// and labelled as such in comments in the individual source files. All +// have been licensed under extremely permissive terms. +// +// The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008 +// The Android Open Source Project and is licensed under a two-clause BSD +// license. It was taken from Bionic libc, used on Android. +// +// The AArch64 memcpy and memset code (src/string/aarch64/*) are +// Copyright © 1999-2019, Arm Limited. +// +// The implementation of DES for crypt (src/crypt/crypt_des.c) is +// Copyright © 1994 David Burren. It is licensed under a BSD license. +// +// The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was +// originally written by Solar Designer and placed into the public +// domain. The code also comes with a fallback permissive license for use +// in jurisdictions that may not recognize the public domain. +// +// The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 +// Valentin Ochs and is licensed under an MIT-style license. +// +// The x86_64 port was written by Nicholas J. Kain and is licensed under +// the standard MIT terms. +// +// The mips and microblaze ports were originally written by Richard +// Pennington for use in the ellcc project. The original code was adapted +// by Rich Felker for build system and code conventions during upstream +// integration. It is licensed under the standard MIT terms. +// +// The mips64 port was contributed by Imagination Technologies and is +// licensed under the standard MIT terms. +// +// The powerpc port was also originally written by Richard Pennington, +// and later supplemented and integrated by John Spencer. It is licensed +// under the standard MIT terms. +// +// All other files which have no copyright comments are original works +// produced specifically for use as part of this library, written either +// by Rich Felker, the main author of the library, or by one or more +// contibutors listed above. Details on authorship of individual files +// can be found in the git version control history of the project. The +// omission of copyright and license comments in each file is in the +// interest of source tree size. +// +// In addition, permission is hereby granted for all public header files +// (include/* and arch/*/bits/*) and crt files intended to be linked into +// applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit +// the copyright notice and permission notice otherwise required by the +// license, and to use these files without any requirement of +// attribution. These files include substantial contributions from: +// +// Bobby Bingham +// John Spencer +// Nicholas J. Kain +// Rich Felker +// Richard Pennington +// Stefan Kristiansson +// Szabolcs Nagy +// +// all of whom have explicitly granted such permission. +// +// This file previously contained text expressing a belief that most of +// the files covered by the above exception were sufficiently trivial not +// to be subject to copyright, resulting in confusion over whether it +// negated the permissions granted in the license. In the spirit of +// permissive licensing, and of not having licensing issues being an +// obstacle to adoption, that text has been removed. +enum __copyright__ { __musl__copyright__ }; diff --git a/vendor/modernc.org/libc/musl/crt/Scrt1.c b/vendor/modernc.org/libc/musl/crt/Scrt1.c new file mode 100644 index 000000000..822f10bb1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/crt/Scrt1.c @@ -0,0 +1 @@ +#include "crt1.c" diff --git a/vendor/modernc.org/libc/musl/crt/crt1.c b/vendor/modernc.org/libc/musl/crt/crt1.c new file mode 100644 index 000000000..8fe8ab5d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/crt/crt1.c @@ -0,0 +1,19 @@ +#include +#include "libc.h" + +#define START "_start" + +#include "crt_arch.h" + +int main(); +weak void _init(); +weak void _fini(); +int __libc_start_main(int (*)(), int, char **, + void (*)(), void(*)(), void(*)()); + +void _start_c(long *p) +{ + int argc = p[0]; + char **argv = (void *)(p+1); + __libc_start_main(main, argc, argv, _init, _fini, 0); +} diff --git a/vendor/modernc.org/libc/musl/crt/crti.c b/vendor/modernc.org/libc/musl/crt/crti.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/crt/crtn.c b/vendor/modernc.org/libc/musl/crt/crtn.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/crt/rcrt1.c b/vendor/modernc.org/libc/musl/crt/rcrt1.c new file mode 100644 index 000000000..901dff681 --- /dev/null +++ b/vendor/modernc.org/libc/musl/crt/rcrt1.c @@ -0,0 +1,14 @@ +#define START "_start" +#define _dlstart_c _start_c +#include "../ldso/dlstart.c" + +int main(); +weak void _init(); +weak void _fini(); +int __libc_start_main(int (*)(), int, char **, + void (*)(), void(*)(), void(*)()); + +hidden void __dls2(unsigned char *base, size_t *sp) +{ + __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0); +} diff --git a/vendor/modernc.org/libc/musl/include/aio.h b/vendor/modernc.org/libc/musl/include/aio.h new file mode 100644 index 000000000..453c41b74 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/aio.h @@ -0,0 +1,73 @@ +#ifndef _AIO_H +#define _AIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define __NEED_ssize_t +#define __NEED_off_t + +#include + +struct aiocb { + int aio_fildes, aio_lio_opcode, aio_reqprio; + volatile void *aio_buf; + size_t aio_nbytes; + struct sigevent aio_sigevent; + void *__td; + int __lock[2]; + volatile int __err; + ssize_t __ret; + off_t aio_offset; + void *__next, *__prev; + char __dummy4[32-2*sizeof(void *)]; +}; + +#define AIO_CANCELED 0 +#define AIO_NOTCANCELED 1 +#define AIO_ALLDONE 2 + +#define LIO_READ 0 +#define LIO_WRITE 1 +#define LIO_NOP 2 + +#define LIO_WAIT 0 +#define LIO_NOWAIT 1 + +int aio_read(struct aiocb *); +int aio_write(struct aiocb *); +int aio_error(const struct aiocb *); +ssize_t aio_return(struct aiocb *); +int aio_cancel(int, struct aiocb *); +int aio_suspend(const struct aiocb *const [], int, const struct timespec *); +int aio_fsync(int, struct aiocb *); + +int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict); + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define aiocb64 aiocb +#define aio_read64 aio_read +#define aio_write64 aio_write +#define aio_error64 aio_error +#define aio_return64 aio_return +#define aio_cancel64 aio_cancel +#define aio_suspend64 aio_suspend +#define aio_fsync64 aio_fsync +#define lio_listio64 lio_listio +#define off64_t off_t +#endif + +#if _REDIR_TIME64 +__REDIR(aio_suspend, __aio_suspend_time64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/alloca.h b/vendor/modernc.org/libc/musl/include/alloca.h new file mode 100644 index 000000000..b8d183d14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/alloca.h @@ -0,0 +1,19 @@ +#ifndef _ALLOCA_H +#define _ALLOCA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#include + +void *alloca(size_t); + +#define alloca __builtin_alloca + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/ar.h b/vendor/modernc.org/libc/musl/include/ar.h new file mode 100644 index 000000000..eafd51d0e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ar.h @@ -0,0 +1,25 @@ +#ifndef _AR_H +#define _AR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ARMAG "!\n" +#define SARMAG 8 +#define ARFMAG "`\n" + +struct ar_hdr { + char ar_name[16]; + char ar_date[12]; + char ar_uid[6], ar_gid[6]; + char ar_mode[8]; + char ar_size[10]; + char ar_fmag[2]; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/arpa/ftp.h b/vendor/modernc.org/libc/musl/include/arpa/ftp.h new file mode 100644 index 000000000..fb0a46f2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/ftp.h @@ -0,0 +1,35 @@ +#ifndef _ARPA_FTP_H +#define _ARPA_FTP_H +#define PRELIM 1 +#define COMPLETE 2 +#define CONTINUE 3 +#define TRANSIENT 4 +#define ERROR 5 +#define TYPE_A 1 +#define TYPE_E 2 +#define TYPE_I 3 +#define TYPE_L 4 +#define FORM_N 1 +#define FORM_T 2 +#define FORM_C 3 +#define STRU_F 1 +#define STRU_R 2 +#define STRU_P 3 +#define MODE_S 1 +#define MODE_B 2 +#define MODE_C 3 +#define REC_ESC '\377' +#define REC_EOR '\001' +#define REC_EOF '\002' +#define BLK_EOR 0x80 +#define BLK_EOF 0x40 +#define BLK_ERRORS 0x20 +#define BLK_RESTART 0x10 +#define BLK_BYTECOUNT 2 +#ifdef FTP_NAMES +char *modenames[] = {"0", "Stream", "Block", "Compressed" }; +char *strunames[] = {"0", "File", "Record", "Page" }; +char *typenames[] = {"0", "ASCII", "EBCDIC", "Image", "Local" }; +char *formnames[] = {"0", "Nonprint", "Telnet", "Carriage-control" }; +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/arpa/inet.h b/vendor/modernc.org/libc/musl/include/arpa/inet.h new file mode 100644 index 000000000..9d20a15ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/inet.h @@ -0,0 +1,31 @@ +#ifndef _ARPA_INET_H +#define _ARPA_INET_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +uint32_t htonl(uint32_t); +uint16_t htons(uint16_t); +uint32_t ntohl(uint32_t); +uint16_t ntohs(uint16_t); + +in_addr_t inet_addr (const char *); +in_addr_t inet_network (const char *); +char *inet_ntoa (struct in_addr); +int inet_pton (int, const char *__restrict, void *__restrict); +const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t); + +int inet_aton (const char *, struct in_addr *); +struct in_addr inet_makeaddr(in_addr_t, in_addr_t); +in_addr_t inet_lnaof(struct in_addr); +in_addr_t inet_netof(struct in_addr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/arpa/nameser.h b/vendor/modernc.org/libc/musl/include/arpa/nameser.h new file mode 100644 index 000000000..581925a43 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/nameser.h @@ -0,0 +1,455 @@ +#ifndef _ARPA_NAMESER_H +#define _ARPA_NAMESER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define __NAMESER 19991006 +#define NS_PACKETSZ 512 +#define NS_MAXDNAME 1025 +#define NS_MAXMSG 65535 +#define NS_MAXCDNAME 255 +#define NS_MAXLABEL 63 +#define NS_HFIXEDSZ 12 +#define NS_QFIXEDSZ 4 +#define NS_RRFIXEDSZ 10 +#define NS_INT32SZ 4 +#define NS_INT16SZ 2 +#define NS_INT8SZ 1 +#define NS_INADDRSZ 4 +#define NS_IN6ADDRSZ 16 +#define NS_CMPRSFLGS 0xc0 +#define NS_DEFAULTPORT 53 + +typedef enum __ns_sect { + ns_s_qd = 0, + ns_s_zn = 0, + ns_s_an = 1, + ns_s_pr = 1, + ns_s_ns = 2, + ns_s_ud = 2, + ns_s_ar = 3, + ns_s_max = 4 +} ns_sect; + +typedef struct __ns_msg { + const unsigned char *_msg, *_eom; + uint16_t _id, _flags, _counts[ns_s_max]; + const unsigned char *_sections[ns_s_max]; + ns_sect _sect; + int _rrnum; + const unsigned char *_msg_ptr; +} ns_msg; + +struct _ns_flagdata { int mask, shift; }; +extern const struct _ns_flagdata _ns_flagdata[]; + +#define ns_msg_id(handle) ((handle)._id + 0) +#define ns_msg_base(handle) ((handle)._msg + 0) +#define ns_msg_end(handle) ((handle)._eom + 0) +#define ns_msg_size(handle) ((handle)._eom - (handle)._msg) +#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) +#define ns_msg_getflag(handle, flag) \ + (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift) + +typedef struct __ns_rr { + char name[NS_MAXDNAME]; + uint16_t type; + uint16_t rr_class; + uint32_t ttl; + uint16_t rdlength; + const unsigned char *rdata; +} ns_rr; + +#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_type(rr) ((ns_type)((rr).type + 0)) +#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl(rr) ((rr).ttl + 0) +#define ns_rr_rdlen(rr) ((rr).rdlength + 0) +#define ns_rr_rdata(rr) ((rr).rdata + 0) + +typedef enum __ns_flag { + ns_f_qr, + ns_f_opcode, + ns_f_aa, + ns_f_tc, + ns_f_rd, + ns_f_ra, + ns_f_z, + ns_f_ad, + ns_f_cd, + ns_f_rcode, + ns_f_max +} ns_flag; + +typedef enum __ns_opcode { + ns_o_query = 0, + ns_o_iquery = 1, + ns_o_status = 2, + ns_o_notify = 4, + ns_o_update = 5, + ns_o_max = 6 +} ns_opcode; + +typedef enum __ns_rcode { + ns_r_noerror = 0, + ns_r_formerr = 1, + ns_r_servfail = 2, + ns_r_nxdomain = 3, + ns_r_notimpl = 4, + ns_r_refused = 5, + ns_r_yxdomain = 6, + ns_r_yxrrset = 7, + ns_r_nxrrset = 8, + ns_r_notauth = 9, + ns_r_notzone = 10, + ns_r_max = 11, + ns_r_badvers = 16, + ns_r_badsig = 16, + ns_r_badkey = 17, + ns_r_badtime = 18 +} ns_rcode; + +typedef enum __ns_update_operation { + ns_uop_delete = 0, + ns_uop_add = 1, + ns_uop_max = 2 +} ns_update_operation; + +struct ns_tsig_key { + char name[NS_MAXDNAME], alg[NS_MAXDNAME]; + unsigned char *data; + int len; +}; +typedef struct ns_tsig_key ns_tsig_key; + +struct ns_tcp_tsig_state { + int counter; + struct dst_key *key; + void *ctx; + unsigned char sig[NS_PACKETSZ]; + int siglen; +}; +typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; + +#define NS_TSIG_FUDGE 300 +#define NS_TSIG_TCP_COUNT 100 +#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" + +#define NS_TSIG_ERROR_NO_TSIG -10 +#define NS_TSIG_ERROR_NO_SPACE -11 +#define NS_TSIG_ERROR_FORMERR -12 + +typedef enum __ns_type { + ns_t_invalid = 0, + ns_t_a = 1, + ns_t_ns = 2, + ns_t_md = 3, + ns_t_mf = 4, + ns_t_cname = 5, + ns_t_soa = 6, + ns_t_mb = 7, + ns_t_mg = 8, + ns_t_mr = 9, + ns_t_null = 10, + ns_t_wks = 11, + ns_t_ptr = 12, + ns_t_hinfo = 13, + ns_t_minfo = 14, + ns_t_mx = 15, + ns_t_txt = 16, + ns_t_rp = 17, + ns_t_afsdb = 18, + ns_t_x25 = 19, + ns_t_isdn = 20, + ns_t_rt = 21, + ns_t_nsap = 22, + ns_t_nsap_ptr = 23, + ns_t_sig = 24, + ns_t_key = 25, + ns_t_px = 26, + ns_t_gpos = 27, + ns_t_aaaa = 28, + ns_t_loc = 29, + ns_t_nxt = 30, + ns_t_eid = 31, + ns_t_nimloc = 32, + ns_t_srv = 33, + ns_t_atma = 34, + ns_t_naptr = 35, + ns_t_kx = 36, + ns_t_cert = 37, + ns_t_a6 = 38, + ns_t_dname = 39, + ns_t_sink = 40, + ns_t_opt = 41, + ns_t_apl = 42, + ns_t_tkey = 249, + ns_t_tsig = 250, + ns_t_ixfr = 251, + ns_t_axfr = 252, + ns_t_mailb = 253, + ns_t_maila = 254, + ns_t_any = 255, + ns_t_zxfr = 256, + ns_t_max = 65536 +} ns_type; + +#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ + (t) == ns_t_mailb || (t) == ns_t_maila) +#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) +#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) +#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) +#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ + (t) == ns_t_zxfr) + +typedef enum __ns_class { + ns_c_invalid = 0, + ns_c_in = 1, + ns_c_2 = 2, + ns_c_chaos = 3, + ns_c_hs = 4, + ns_c_none = 254, + ns_c_any = 255, + ns_c_max = 65536 +} ns_class; + +typedef enum __ns_key_types { + ns_kt_rsa = 1, + ns_kt_dh = 2, + ns_kt_dsa = 3, + ns_kt_private = 254 +} ns_key_types; + +typedef enum __ns_cert_types { + cert_t_pkix = 1, + cert_t_spki = 2, + cert_t_pgp = 3, + cert_t_url = 253, + cert_t_oid = 254 +} ns_cert_types; + +#define NS_KEY_TYPEMASK 0xC000 +#define NS_KEY_TYPE_AUTH_CONF 0x0000 +#define NS_KEY_TYPE_CONF_ONLY 0x8000 +#define NS_KEY_TYPE_AUTH_ONLY 0x4000 +#define NS_KEY_TYPE_NO_KEY 0xC000 +#define NS_KEY_NO_AUTH 0x8000 +#define NS_KEY_NO_CONF 0x4000 +#define NS_KEY_RESERVED2 0x2000 +#define NS_KEY_EXTENDED_FLAGS 0x1000 +#define NS_KEY_RESERVED4 0x0800 +#define NS_KEY_RESERVED5 0x0400 +#define NS_KEY_NAME_TYPE 0x0300 +#define NS_KEY_NAME_USER 0x0000 +#define NS_KEY_NAME_ENTITY 0x0200 +#define NS_KEY_NAME_ZONE 0x0100 +#define NS_KEY_NAME_RESERVED 0x0300 +#define NS_KEY_RESERVED8 0x0080 +#define NS_KEY_RESERVED9 0x0040 +#define NS_KEY_RESERVED10 0x0020 +#define NS_KEY_RESERVED11 0x0010 +#define NS_KEY_SIGNATORYMASK 0x000F +#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ + NS_KEY_RESERVED4 | \ + NS_KEY_RESERVED5 | \ + NS_KEY_RESERVED8 | \ + NS_KEY_RESERVED9 | \ + NS_KEY_RESERVED10 | \ + NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK2 0xFFFF +#define NS_ALG_MD5RSA 1 +#define NS_ALG_DH 2 +#define NS_ALG_DSA 3 +#define NS_ALG_DSS NS_ALG_DSA +#define NS_ALG_EXPIRE_ONLY 253 +#define NS_ALG_PRIVATE_OID 254 + +#define NS_KEY_PROT_TLS 1 +#define NS_KEY_PROT_EMAIL 2 +#define NS_KEY_PROT_DNSSEC 3 +#define NS_KEY_PROT_IPSEC 4 +#define NS_KEY_PROT_ANY 255 + +#define NS_MD5RSA_MIN_BITS 512 +#define NS_MD5RSA_MAX_BITS 4096 +#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) +#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) +#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) +#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) + +#define NS_DSA_SIG_SIZE 41 +#define NS_DSA_MIN_SIZE 213 +#define NS_DSA_MAX_BYTES 405 + +#define NS_SIG_TYPE 0 +#define NS_SIG_ALG 2 +#define NS_SIG_LABELS 3 +#define NS_SIG_OTTL 4 +#define NS_SIG_EXPIR 8 +#define NS_SIG_SIGNED 12 +#define NS_SIG_FOOT 16 +#define NS_SIG_SIGNER 18 +#define NS_NXT_BITS 8 +#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_MAX 127 + +#define NS_OPT_DNSSEC_OK 0x8000U +#define NS_OPT_NSID 3 + +#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2)) +#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4)) +#define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2) +#define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4) + +unsigned ns_get16(const unsigned char *); +unsigned long ns_get32(const unsigned char *); +void ns_put16(unsigned, unsigned char *); +void ns_put32(unsigned long, unsigned char *); + +int ns_initparse(const unsigned char *, int, ns_msg *); +int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); +int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int); +int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t); + + +#define __BIND 19950621 + +typedef struct { + unsigned id :16; +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned qr: 1; + unsigned opcode: 4; + unsigned aa: 1; + unsigned tc: 1; + unsigned rd: 1; + unsigned ra: 1; + unsigned unused :1; + unsigned ad: 1; + unsigned cd: 1; + unsigned rcode :4; +#else + unsigned rd :1; + unsigned tc :1; + unsigned aa :1; + unsigned opcode :4; + unsigned qr :1; + unsigned rcode :4; + unsigned cd: 1; + unsigned ad: 1; + unsigned unused :1; + unsigned ra :1; +#endif + unsigned qdcount :16; + unsigned ancount :16; + unsigned nscount :16; + unsigned arcount :16; +} HEADER; + +#define PACKETSZ NS_PACKETSZ +#define MAXDNAME NS_MAXDNAME +#define MAXCDNAME NS_MAXCDNAME +#define MAXLABEL NS_MAXLABEL +#define HFIXEDSZ NS_HFIXEDSZ +#define QFIXEDSZ NS_QFIXEDSZ +#define RRFIXEDSZ NS_RRFIXEDSZ +#define INT32SZ NS_INT32SZ +#define INT16SZ NS_INT16SZ +#define INT8SZ NS_INT8SZ +#define INADDRSZ NS_INADDRSZ +#define IN6ADDRSZ NS_IN6ADDRSZ +#define INDIR_MASK NS_CMPRSFLGS +#define NAMESERVER_PORT NS_DEFAULTPORT + +#define S_ZONE ns_s_zn +#define S_PREREQ ns_s_pr +#define S_UPDATE ns_s_ud +#define S_ADDT ns_s_ar + +#define QUERY ns_o_query +#define IQUERY ns_o_iquery +#define STATUS ns_o_status +#define NS_NOTIFY_OP ns_o_notify +#define NS_UPDATE_OP ns_o_update + +#define NOERROR ns_r_noerror +#define FORMERR ns_r_formerr +#define SERVFAIL ns_r_servfail +#define NXDOMAIN ns_r_nxdomain +#define NOTIMP ns_r_notimpl +#define REFUSED ns_r_refused +#define YXDOMAIN ns_r_yxdomain +#define YXRRSET ns_r_yxrrset +#define NXRRSET ns_r_nxrrset +#define NOTAUTH ns_r_notauth +#define NOTZONE ns_r_notzone + +#define DELETE ns_uop_delete +#define ADD ns_uop_add + +#define T_A ns_t_a +#define T_NS ns_t_ns +#define T_MD ns_t_md +#define T_MF ns_t_mf +#define T_CNAME ns_t_cname +#define T_SOA ns_t_soa +#define T_MB ns_t_mb +#define T_MG ns_t_mg +#define T_MR ns_t_mr +#define T_NULL ns_t_null +#define T_WKS ns_t_wks +#define T_PTR ns_t_ptr +#define T_HINFO ns_t_hinfo +#define T_MINFO ns_t_minfo +#define T_MX ns_t_mx +#define T_TXT ns_t_txt +#define T_RP ns_t_rp +#define T_AFSDB ns_t_afsdb +#define T_X25 ns_t_x25 +#define T_ISDN ns_t_isdn +#define T_RT ns_t_rt +#define T_NSAP ns_t_nsap +#define T_NSAP_PTR ns_t_nsap_ptr +#define T_SIG ns_t_sig +#define T_KEY ns_t_key +#define T_PX ns_t_px +#define T_GPOS ns_t_gpos +#define T_AAAA ns_t_aaaa +#define T_LOC ns_t_loc +#define T_NXT ns_t_nxt +#define T_EID ns_t_eid +#define T_NIMLOC ns_t_nimloc +#define T_SRV ns_t_srv +#define T_ATMA ns_t_atma +#define T_NAPTR ns_t_naptr +#define T_A6 ns_t_a6 +#define T_DNAME ns_t_dname +#define T_TSIG ns_t_tsig +#define T_IXFR ns_t_ixfr +#define T_AXFR ns_t_axfr +#define T_MAILB ns_t_mailb +#define T_MAILA ns_t_maila +#define T_ANY ns_t_any + +#define C_IN ns_c_in +#define C_CHAOS ns_c_chaos +#define C_HS ns_c_hs +#define C_NONE ns_c_none +#define C_ANY ns_c_any + +#define GETSHORT NS_GET16 +#define GETLONG NS_GET32 +#define PUTSHORT NS_PUT16 +#define PUTLONG NS_PUT32 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/arpa/nameser_compat.h b/vendor/modernc.org/libc/musl/include/arpa/nameser_compat.h new file mode 100644 index 000000000..3aac25c98 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/nameser_compat.h @@ -0,0 +1,2 @@ +#include + diff --git a/vendor/modernc.org/libc/musl/include/arpa/telnet.h b/vendor/modernc.org/libc/musl/include/arpa/telnet.h new file mode 100644 index 000000000..e2ad97429 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/telnet.h @@ -0,0 +1,251 @@ +#ifndef _ARPA_TELNET_H +#define _ARPA_TELNET_H + +#define IAC 255 +#define DONT 254 +#define DO 253 +#define WONT 252 +#define WILL 251 +#define SB 250 +#define GA 249 +#define EL 248 +#define EC 247 +#define AYT 246 +#define AO 245 +#define IP 244 +#define BREAK 243 +#define DM 242 +#define NOP 241 +#define SE 240 +#define EOR 239 +#define ABORT 238 +#define SUSP 237 +#define xEOF 236 + +#define SYNCH 242 + +#define telcmds ((char [][6]){ "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 }) + +#define TELCMD_FIRST xEOF +#define TELCMD_LAST IAC +#define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \ + (unsigned int)(x) >= TELCMD_FIRST) +#define TELCMD(x) telcmds[(x)-TELCMD_FIRST] + +#define TELOPT_BINARY 0 +#define TELOPT_ECHO 1 +#define TELOPT_RCP 2 +#define TELOPT_SGA 3 +#define TELOPT_NAMS 4 +#define TELOPT_STATUS 5 +#define TELOPT_TM 6 +#define TELOPT_RCTE 7 +#define TELOPT_NAOL 8 +#define TELOPT_NAOP 9 +#define TELOPT_NAOCRD 10 +#define TELOPT_NAOHTS 11 +#define TELOPT_NAOHTD 12 +#define TELOPT_NAOFFD 13 +#define TELOPT_NAOVTS 14 +#define TELOPT_NAOVTD 15 +#define TELOPT_NAOLFD 16 +#define TELOPT_XASCII 17 +#define TELOPT_LOGOUT 18 +#define TELOPT_BM 19 +#define TELOPT_DET 20 +#define TELOPT_SUPDUP 21 +#define TELOPT_SUPDUPOUTPUT 22 +#define TELOPT_SNDLOC 23 +#define TELOPT_TTYPE 24 +#define TELOPT_EOR 25 +#define TELOPT_TUID 26 +#define TELOPT_OUTMRK 27 +#define TELOPT_TTYLOC 28 +#define TELOPT_3270REGIME 29 +#define TELOPT_X3PAD 30 +#define TELOPT_NAWS 31 +#define TELOPT_TSPEED 32 +#define TELOPT_LFLOW 33 +#define TELOPT_LINEMODE 34 +#define TELOPT_XDISPLOC 35 +#define TELOPT_OLD_ENVIRON 36 +#define TELOPT_AUTHENTICATION 37/* Authenticate */ +#define TELOPT_ENCRYPT 38 +#define TELOPT_NEW_ENVIRON 39 +#define TELOPT_EXOPL 255 + + +#define NTELOPTS (1+TELOPT_NEW_ENVIRON) +#ifdef TELOPTS +char *telopts[NTELOPTS+1] = { + "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", + "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", + "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", + "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", + "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", + "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", + "TACACS UID", "OUTPUT MARKING", "TTYLOC", + "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", + "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", + "ENCRYPT", "NEW-ENVIRON", + 0, +}; +#define TELOPT_FIRST TELOPT_BINARY +#define TELOPT_LAST TELOPT_NEW_ENVIRON +#define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) +#define TELOPT(x) telopts[(x)-TELOPT_FIRST] +#endif + +#define TELQUAL_IS 0 +#define TELQUAL_SEND 1 +#define TELQUAL_INFO 2 +#define TELQUAL_REPLY 2 +#define TELQUAL_NAME 3 + +#define LFLOW_OFF 0 +#define LFLOW_ON 1 +#define LFLOW_RESTART_ANY 2 +#define LFLOW_RESTART_XON 3 + + +#define LM_MODE 1 +#define LM_FORWARDMASK 2 +#define LM_SLC 3 + +#define MODE_EDIT 0x01 +#define MODE_TRAPSIG 0x02 +#define MODE_ACK 0x04 +#define MODE_SOFT_TAB 0x08 +#define MODE_LIT_ECHO 0x10 + +#define MODE_MASK 0x1f + +#define MODE_FLOW 0x0100 +#define MODE_ECHO 0x0200 +#define MODE_INBIN 0x0400 +#define MODE_OUTBIN 0x0800 +#define MODE_FORCE 0x1000 + +#define SLC_SYNCH 1 +#define SLC_BRK 2 +#define SLC_IP 3 +#define SLC_AO 4 +#define SLC_AYT 5 +#define SLC_EOR 6 +#define SLC_ABORT 7 +#define SLC_EOF 8 +#define SLC_SUSP 9 +#define SLC_EC 10 +#define SLC_EL 11 +#define SLC_EW 12 +#define SLC_RP 13 +#define SLC_LNEXT 14 +#define SLC_XON 15 +#define SLC_XOFF 16 +#define SLC_FORW1 17 +#define SLC_FORW2 18 + +#define NSLC 18 + +#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ + "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ + "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0, +#ifdef SLC_NAMES +char *slc_names[] = { + SLC_NAMELIST +}; +#else +extern char *slc_names[]; +#define SLC_NAMES SLC_NAMELIST +#endif + +#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC) +#define SLC_NAME(x) slc_names[x] + +#define SLC_NOSUPPORT 0 +#define SLC_CANTCHANGE 1 +#define SLC_VARIABLE 2 +#define SLC_DEFAULT 3 +#define SLC_LEVELBITS 0x03 + +#define SLC_FUNC 0 +#define SLC_FLAGS 1 +#define SLC_VALUE 2 + +#define SLC_ACK 0x80 +#define SLC_FLUSHIN 0x40 +#define SLC_FLUSHOUT 0x20 + +#define OLD_ENV_VAR 1 +#define OLD_ENV_VALUE 0 +#define NEW_ENV_VAR 0 +#define NEW_ENV_VALUE 1 +#define ENV_ESC 2 +#define ENV_USERVAR 3 + +#define AUTH_WHO_CLIENT 0 +#define AUTH_WHO_SERVER 1 +#define AUTH_WHO_MASK 1 + +#define AUTH_HOW_ONE_WAY 0 +#define AUTH_HOW_MUTUAL 2 +#define AUTH_HOW_MASK 2 + +#define AUTHTYPE_NULL 0 +#define AUTHTYPE_KERBEROS_V4 1 +#define AUTHTYPE_KERBEROS_V5 2 +#define AUTHTYPE_SPX 3 +#define AUTHTYPE_MINK 4 +#define AUTHTYPE_CNT 5 + +#define AUTHTYPE_TEST 99 + +#ifdef AUTH_NAMES +char *authtype_names[] = { + "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, +}; +#else +extern char *authtype_names[]; +#endif + +#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT) +#define AUTHTYPE_NAME(x) authtype_names[x] + +#define ENCRYPT_IS 0 +#define ENCRYPT_SUPPORT 1 +#define ENCRYPT_REPLY 2 +#define ENCRYPT_START 3 +#define ENCRYPT_END 4 +#define ENCRYPT_REQSTART 5 +#define ENCRYPT_REQEND 6 +#define ENCRYPT_ENC_KEYID 7 +#define ENCRYPT_DEC_KEYID 8 +#define ENCRYPT_CNT 9 + +#define ENCTYPE_ANY 0 +#define ENCTYPE_DES_CFB64 1 +#define ENCTYPE_DES_OFB64 2 +#define ENCTYPE_CNT 3 + +#ifdef ENCRYPT_NAMES +char *encrypt_names[] = { + "IS", "SUPPORT", "REPLY", "START", "END", + "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", + 0, +}; +char *enctype_names[] = { + "ANY", "DES_CFB64", "DES_OFB64", 0, +}; +#else +extern char *encrypt_names[]; +extern char *enctype_names[]; +#endif + + +#define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT) +#define ENCRYPT_NAME(x) encrypt_names[x] + +#define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT) +#define ENCTYPE_NAME(x) enctype_names[x] + +#endif diff --git a/vendor/modernc.org/libc/musl/include/arpa/tftp.h b/vendor/modernc.org/libc/musl/include/arpa/tftp.h new file mode 100644 index 000000000..799c54f22 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/arpa/tftp.h @@ -0,0 +1,31 @@ +#ifndef _ARPA_TFTP_H +#define _ARPA_TFTP_H +#define SEGSIZE 512 +#define RRQ 01 +#define WRQ 02 +#define DATA 03 +#define ACK 04 +#define ERROR 05 +struct tftphdr { + short th_opcode; + union { + unsigned short tu_block; + short tu_code; + char tu_stuff[1]; + } th_u; + char th_data[1]; +}; +#define th_block th_u.tu_block +#define th_code th_u.tu_code +#define th_stuff th_u.tu_stuff +#define th_msg th_data +#define EUNDEF 0 +#define ENOTFOUND 1 +#define EACCESS 2 +#define ENOSPACE 3 +#define EBADOP 4 +#define EBADID 5 +#define EEXISTS 6 +#define ENOUSER 7 +#endif + diff --git a/vendor/modernc.org/libc/musl/include/assert.h b/vendor/modernc.org/libc/musl/include/assert.h new file mode 100644 index 000000000..d14ec94e7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/assert.h @@ -0,0 +1,23 @@ +#include + +#undef assert + +#ifdef NDEBUG +#define assert(x) (void)0 +#else +#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0))) +#endif + +#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus) +#define static_assert _Static_assert +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_Noreturn void __assert_fail (const char *, const char *, int, const char *); + +#ifdef __cplusplus +} +#endif diff --git a/vendor/modernc.org/libc/musl/include/byteswap.h b/vendor/modernc.org/libc/musl/include/byteswap.h new file mode 100644 index 000000000..00b9df3c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/byteswap.h @@ -0,0 +1,26 @@ +#ifndef _BYTESWAP_H +#define _BYTESWAP_H + +#include +#include + +static __inline uint16_t __bswap_16(uint16_t __x) +{ + return __x<<8 | __x>>8; +} + +static __inline uint32_t __bswap_32(uint32_t __x) +{ + return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24; +} + +static __inline uint64_t __bswap_64(uint64_t __x) +{ + return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32); +} + +#define bswap_16(x) __bswap_16(x) +#define bswap_32(x) __bswap_32(x) +#define bswap_64(x) __bswap_64(x) + +#endif diff --git a/vendor/modernc.org/libc/musl/include/complex.h b/vendor/modernc.org/libc/musl/include/complex.h new file mode 100644 index 000000000..008b3c7e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/complex.h @@ -0,0 +1,133 @@ +#ifndef _COMPLEX_H +#define _COMPLEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define complex _Complex +#ifdef __GNUC__ +#define _Complex_I (__extension__ (0.0f+1.0fi)) +#else +#define _Complex_I (0.0f+1.0fi) +#endif +#define I _Complex_I + +double complex cacos(double complex); +float complex cacosf(float complex); +long double complex cacosl(long double complex); + +double complex casin(double complex); +float complex casinf(float complex); +long double complex casinl(long double complex); + +double complex catan(double complex); +float complex catanf(float complex); +long double complex catanl(long double complex); + +double complex ccos(double complex); +float complex ccosf(float complex); +long double complex ccosl(long double complex); + +double complex csin(double complex); +float complex csinf(float complex); +long double complex csinl(long double complex); + +double complex ctan(double complex); +float complex ctanf(float complex); +long double complex ctanl(long double complex); + +double complex cacosh(double complex); +float complex cacoshf(float complex); +long double complex cacoshl(long double complex); + +double complex casinh(double complex); +float complex casinhf(float complex); +long double complex casinhl(long double complex); + +double complex catanh(double complex); +float complex catanhf(float complex); +long double complex catanhl(long double complex); + +double complex ccosh(double complex); +float complex ccoshf(float complex); +long double complex ccoshl(long double complex); + +double complex csinh(double complex); +float complex csinhf(float complex); +long double complex csinhl(long double complex); + +double complex ctanh(double complex); +float complex ctanhf(float complex); +long double complex ctanhl(long double complex); + +double complex cexp(double complex); +float complex cexpf(float complex); +long double complex cexpl(long double complex); + +double complex clog(double complex); +float complex clogf(float complex); +long double complex clogl(long double complex); + +double cabs(double complex); +float cabsf(float complex); +long double cabsl(long double complex); + +double complex cpow(double complex, double complex); +float complex cpowf(float complex, float complex); +long double complex cpowl(long double complex, long double complex); + +double complex csqrt(double complex); +float complex csqrtf(float complex); +long double complex csqrtl(long double complex); + +double carg(double complex); +float cargf(float complex); +long double cargl(long double complex); + +double cimag(double complex); +float cimagf(float complex); +long double cimagl(long double complex); + +double complex conj(double complex); +float complex conjf(float complex); +long double complex conjl(long double complex); + +double complex cproj(double complex); +float complex cprojf(float complex); +long double complex cprojl(long double complex); + +double creal(double complex); +float crealf(float complex); +long double creall(long double complex); + +#ifndef __cplusplus +#define __CIMAG(x, t) \ + (+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1]) + +#define creal(x) ((double)(x)) +#define crealf(x) ((float)(x)) +#define creall(x) ((long double)(x)) + +#define cimag(x) __CIMAG(x, double) +#define cimagf(x) __CIMAG(x, float) +#define cimagl(x) __CIMAG(x, long double) +#endif + +#if __STDC_VERSION__ >= 201112L +#if defined(_Imaginary_I) +#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y)) +#elif defined(__clang__) +#define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) }) +#else +#define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y))) +#endif +#define CMPLX(x, y) __CMPLX(x, y, double) +#define CMPLXF(x, y) __CMPLX(x, y, float) +#define CMPLXL(x, y) __CMPLX(x, y, long double) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/cpio.h b/vendor/modernc.org/libc/musl/include/cpio.h new file mode 100644 index 000000000..39a1f8bba --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/cpio.h @@ -0,0 +1,29 @@ +#ifndef _CPIO_H +#define _CPIO_H + +#define MAGIC "070707" + +#define C_IRUSR 000400 +#define C_IWUSR 000200 +#define C_IXUSR 000100 +#define C_IRGRP 000040 +#define C_IWGRP 000020 +#define C_IXGRP 000010 +#define C_IROTH 000004 +#define C_IWOTH 000002 +#define C_IXOTH 000001 + +#define C_ISUID 004000 +#define C_ISGID 002000 +#define C_ISVTX 001000 + +#define C_ISBLK 060000 +#define C_ISCHR 020000 +#define C_ISDIR 040000 +#define C_ISFIFO 010000 +#define C_ISSOCK 0140000 +#define C_ISLNK 0120000 +#define C_ISCTG 0110000 +#define C_ISREG 0100000 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/crypt.h b/vendor/modernc.org/libc/musl/include/crypt.h new file mode 100644 index 000000000..07de21698 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/crypt.h @@ -0,0 +1,20 @@ +#ifndef _CRYPT_H +#define _CRYPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct crypt_data { + int initialized; + char __buf[256]; +}; + +char *crypt(const char *, const char *); +char *crypt_r(const char *, const char *, struct crypt_data *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/ctype.h b/vendor/modernc.org/libc/musl/include/ctype.h new file mode 100644 index 000000000..7936536f5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ctype.h @@ -0,0 +1,75 @@ +#ifndef _CTYPE_H +#define _CTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +int isalnum(int); +int isalpha(int); +int isblank(int); +int iscntrl(int); +int isdigit(int); +int isgraph(int); +int islower(int); +int isprint(int); +int ispunct(int); +int isspace(int); +int isupper(int); +int isxdigit(int); +int tolower(int); +int toupper(int); + +#ifndef __cplusplus +static __inline int __isspace(int _c) +{ + return _c == ' ' || (unsigned)_c-'\t' < 5; +} + +#define isalpha(a) (0 ? isalpha(a) : (((unsigned)(a)|32)-'a') < 26) +#define isdigit(a) (0 ? isdigit(a) : ((unsigned)(a)-'0') < 10) +#define islower(a) (0 ? islower(a) : ((unsigned)(a)-'a') < 26) +#define isupper(a) (0 ? isupper(a) : ((unsigned)(a)-'A') < 26) +#define isprint(a) (0 ? isprint(a) : ((unsigned)(a)-0x20) < 0x5f) +#define isgraph(a) (0 ? isgraph(a) : ((unsigned)(a)-0x21) < 0x5e) +#define isspace(a) __isspace(a) +#endif + + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) + +#define __NEED_locale_t +#include + +int isalnum_l(int, locale_t); +int isalpha_l(int, locale_t); +int isblank_l(int, locale_t); +int iscntrl_l(int, locale_t); +int isdigit_l(int, locale_t); +int isgraph_l(int, locale_t); +int islower_l(int, locale_t); +int isprint_l(int, locale_t); +int ispunct_l(int, locale_t); +int isspace_l(int, locale_t); +int isupper_l(int, locale_t); +int isxdigit_l(int, locale_t); +int tolower_l(int, locale_t); +int toupper_l(int, locale_t); + +int isascii(int); +int toascii(int); +#define _tolower(a) ((a)|0x20) +#define _toupper(a) ((a)&0x5f) +#define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128) + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/dirent.h b/vendor/modernc.org/libc/musl/include/dirent.h new file mode 100644 index 000000000..650ecf646 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/dirent.h @@ -0,0 +1,75 @@ +#ifndef _DIRENT_H +#define _DIRENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_ino_t +#define __NEED_off_t +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +#define __NEED_size_t +#endif + +#include + +#include + +typedef struct __dirstream DIR; + +#define d_fileno d_ino + +int closedir(DIR *); +DIR *fdopendir(int); +DIR *opendir(const char *); +struct dirent *readdir(DIR *); +int readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict); +void rewinddir(DIR *); +int dirfd(DIR *); + +int alphasort(const struct dirent **, const struct dirent **); +int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)); + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +void seekdir(DIR *, long); +long telldir(DIR *); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define DT_UNKNOWN 0 +#define DT_FIFO 1 +#define DT_CHR 2 +#define DT_DIR 4 +#define DT_BLK 6 +#define DT_REG 8 +#define DT_LNK 10 +#define DT_SOCK 12 +#define DT_WHT 14 +#define IFTODT(x) ((x)>>12 & 017) +#define DTTOIF(x) ((x)<<12) +int getdents(int, struct dirent *, size_t); +#endif + +#ifdef _GNU_SOURCE +int versionsort(const struct dirent **, const struct dirent **); +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define dirent64 dirent +#define readdir64 readdir +#define readdir64_r readdir_r +#define scandir64 scandir +#define alphasort64 alphasort +#define versionsort64 versionsort +#define off64_t off_t +#define ino64_t ino_t +#define getdents64 getdents +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/dlfcn.h b/vendor/modernc.org/libc/musl/include/dlfcn.h new file mode 100644 index 000000000..13ab71dd0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/dlfcn.h @@ -0,0 +1,46 @@ +#ifndef _DLFCN_H +#define _DLFCN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define RTLD_LAZY 1 +#define RTLD_NOW 2 +#define RTLD_NOLOAD 4 +#define RTLD_NODELETE 4096 +#define RTLD_GLOBAL 256 +#define RTLD_LOCAL 0 + +#define RTLD_NEXT ((void *)-1) +#define RTLD_DEFAULT ((void *)0) + +#define RTLD_DI_LINKMAP 2 + +int dlclose(void *); +char *dlerror(void); +void *dlopen(const char *, int); +void *dlsym(void *__restrict, const char *__restrict); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef struct { + const char *dli_fname; + void *dli_fbase; + const char *dli_sname; + void *dli_saddr; +} Dl_info; +int dladdr(const void *, Dl_info *); +int dlinfo(void *, int, void *); +#endif + +#if _REDIR_TIME64 +__REDIR(dlsym, __dlsym_time64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/elf.h b/vendor/modernc.org/libc/musl/include/elf.h new file mode 100644 index 000000000..549f92c1a --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/elf.h @@ -0,0 +1,3292 @@ +#ifndef _ELF_H +#define _ELF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0 0 +#define ELFMAG0 0x7f + +#define EI_MAG1 1 +#define ELFMAG1 'E' + +#define EI_MAG2 2 +#define ELFMAG2 'L' + +#define EI_MAG3 3 +#define ELFMAG3 'F' + + +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define EI_CLASS 4 +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define EI_DATA 5 +#define ELFDATANONE 0 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 +#define ELFDATANUM 3 + +#define EI_VERSION 6 + + +#define EI_OSABI 7 +#define ELFOSABI_NONE 0 +#define ELFOSABI_SYSV 0 +#define ELFOSABI_HPUX 1 +#define ELFOSABI_NETBSD 2 +#define ELFOSABI_LINUX 3 +#define ELFOSABI_GNU 3 +#define ELFOSABI_SOLARIS 6 +#define ELFOSABI_AIX 7 +#define ELFOSABI_IRIX 8 +#define ELFOSABI_FREEBSD 9 +#define ELFOSABI_TRU64 10 +#define ELFOSABI_MODESTO 11 +#define ELFOSABI_OPENBSD 12 +#define ELFOSABI_ARM 97 +#define ELFOSABI_STANDALONE 255 + +#define EI_ABIVERSION 8 + +#define EI_PAD 9 + + + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_NUM 5 +#define ET_LOOS 0xfe00 +#define ET_HIOS 0xfeff +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + + + +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_860 7 +#define EM_MIPS 8 +#define EM_S370 9 +#define EM_MIPS_RS3_LE 10 + +#define EM_PARISC 15 +#define EM_VPP500 17 +#define EM_SPARC32PLUS 18 +#define EM_960 19 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 + +#define EM_V800 36 +#define EM_FR20 37 +#define EM_RH32 38 +#define EM_RCE 39 +#define EM_ARM 40 +#define EM_FAKE_ALPHA 41 +#define EM_SH 42 +#define EM_SPARCV9 43 +#define EM_TRICORE 44 +#define EM_ARC 45 +#define EM_H8_300 46 +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_H8_500 49 +#define EM_IA_64 50 +#define EM_MIPS_X 51 +#define EM_COLDFIRE 52 +#define EM_68HC12 53 +#define EM_MMA 54 +#define EM_PCP 55 +#define EM_NCPU 56 +#define EM_NDR1 57 +#define EM_STARCORE 58 +#define EM_ME16 59 +#define EM_ST100 60 +#define EM_TINYJ 61 +#define EM_X86_64 62 +#define EM_PDSP 63 + +#define EM_FX66 66 +#define EM_ST9PLUS 67 +#define EM_ST7 68 +#define EM_68HC16 69 +#define EM_68HC11 70 +#define EM_68HC08 71 +#define EM_68HC05 72 +#define EM_SVX 73 +#define EM_ST19 74 +#define EM_VAX 75 +#define EM_CRIS 76 +#define EM_JAVELIN 77 +#define EM_FIREPATH 78 +#define EM_ZSP 79 +#define EM_MMIX 80 +#define EM_HUANY 81 +#define EM_PRISM 82 +#define EM_AVR 83 +#define EM_FR30 84 +#define EM_D10V 85 +#define EM_D30V 86 +#define EM_V850 87 +#define EM_M32R 88 +#define EM_MN10300 89 +#define EM_MN10200 90 +#define EM_PJ 91 +#define EM_OR1K 92 +#define EM_OPENRISC 92 +#define EM_ARC_A5 93 +#define EM_ARC_COMPACT 93 +#define EM_XTENSA 94 +#define EM_VIDEOCORE 95 +#define EM_TMM_GPP 96 +#define EM_NS32K 97 +#define EM_TPC 98 +#define EM_SNP1K 99 +#define EM_ST200 100 +#define EM_IP2K 101 +#define EM_MAX 102 +#define EM_CR 103 +#define EM_F2MC16 104 +#define EM_MSP430 105 +#define EM_BLACKFIN 106 +#define EM_SE_C33 107 +#define EM_SEP 108 +#define EM_ARCA 109 +#define EM_UNICORE 110 +#define EM_EXCESS 111 +#define EM_DXP 112 +#define EM_ALTERA_NIOS2 113 +#define EM_CRX 114 +#define EM_XGATE 115 +#define EM_C166 116 +#define EM_M16C 117 +#define EM_DSPIC30F 118 +#define EM_CE 119 +#define EM_M32C 120 +#define EM_TSK3000 131 +#define EM_RS08 132 +#define EM_SHARC 133 +#define EM_ECOG2 134 +#define EM_SCORE7 135 +#define EM_DSP24 136 +#define EM_VIDEOCORE3 137 +#define EM_LATTICEMICO32 138 +#define EM_SE_C17 139 +#define EM_TI_C6000 140 +#define EM_TI_C2000 141 +#define EM_TI_C5500 142 +#define EM_TI_ARP32 143 +#define EM_TI_PRU 144 +#define EM_MMDSP_PLUS 160 +#define EM_CYPRESS_M8C 161 +#define EM_R32C 162 +#define EM_TRIMEDIA 163 +#define EM_QDSP6 164 +#define EM_8051 165 +#define EM_STXP7X 166 +#define EM_NDS32 167 +#define EM_ECOG1X 168 +#define EM_MAXQ30 169 +#define EM_XIMO16 170 +#define EM_MANIK 171 +#define EM_CRAYNV2 172 +#define EM_RX 173 +#define EM_METAG 174 +#define EM_MCST_ELBRUS 175 +#define EM_ECOG16 176 +#define EM_CR16 177 +#define EM_ETPU 178 +#define EM_SLE9X 179 +#define EM_L10M 180 +#define EM_K10M 181 +#define EM_AARCH64 183 +#define EM_AVR32 185 +#define EM_STM8 186 +#define EM_TILE64 187 +#define EM_TILEPRO 188 +#define EM_MICROBLAZE 189 +#define EM_CUDA 190 +#define EM_TILEGX 191 +#define EM_CLOUDSHIELD 192 +#define EM_COREA_1ST 193 +#define EM_COREA_2ND 194 +#define EM_ARC_COMPACT2 195 +#define EM_OPEN8 196 +#define EM_RL78 197 +#define EM_VIDEOCORE5 198 +#define EM_78KOR 199 +#define EM_56800EX 200 +#define EM_BA1 201 +#define EM_BA2 202 +#define EM_XCORE 203 +#define EM_MCHP_PIC 204 +#define EM_KM32 210 +#define EM_KMX32 211 +#define EM_EMX16 212 +#define EM_EMX8 213 +#define EM_KVARC 214 +#define EM_CDP 215 +#define EM_COGE 216 +#define EM_COOL 217 +#define EM_NORC 218 +#define EM_CSR_KALIMBA 219 +#define EM_Z80 220 +#define EM_VISIUM 221 +#define EM_FT32 222 +#define EM_MOXIE 223 +#define EM_AMDGPU 224 +#define EM_RISCV 243 +#define EM_BPF 247 +#define EM_CSKY 252 +#define EM_NUM 253 + +#define EM_ALPHA 0x9026 + +#define EV_NONE 0 +#define EV_CURRENT 1 +#define EV_NUM 2 + +typedef struct { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_BEFORE 0xff00 + +#define SHN_AFTER 0xff01 + +#define SHN_HIPROC 0xff1f +#define SHN_LOOS 0xff20 +#define SHN_HIOS 0xff3f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + + + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_NUM 19 +#define SHT_LOOS 0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_CHECKSUM 0x6ffffff8 +#define SHT_LOSUNW 0x6ffffffa +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_GNU_verdef 0x6ffffffd +#define SHT_GNU_verneed 0x6ffffffe +#define SHT_GNU_versym 0x6fffffff +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0x8fffffff + +#define SHF_WRITE (1 << 0) +#define SHF_ALLOC (1 << 1) +#define SHF_EXECINSTR (1 << 2) +#define SHF_MERGE (1 << 4) +#define SHF_STRINGS (1 << 5) +#define SHF_INFO_LINK (1 << 6) +#define SHF_LINK_ORDER (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP (1 << 9) +#define SHF_TLS (1 << 10) +#define SHF_COMPRESSED (1 << 11) +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 +#define SHF_ORDERED (1 << 30) +#define SHF_EXCLUDE (1U << 31) + +typedef struct { + Elf32_Word ch_type; + Elf32_Word ch_size; + Elf32_Word ch_addralign; +} Elf32_Chdr; + +typedef struct { + Elf64_Word ch_type; + Elf64_Word ch_reserved; + Elf64_Xword ch_size; + Elf64_Xword ch_addralign; +} Elf64_Chdr; + +#define ELFCOMPRESS_ZLIB 1 +#define ELFCOMPRESS_LOOS 0x60000000 +#define ELFCOMPRESS_HIOS 0x6fffffff +#define ELFCOMPRESS_LOPROC 0x70000000 +#define ELFCOMPRESS_HIPROC 0x7fffffff + + +#define GRP_COMDAT 0x1 + +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +typedef struct { + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF 0xffff +#define SYMINFO_BT_PARENT 0xfffe +#define SYMINFO_BT_LOWRESERVE 0xff00 + +#define SYMINFO_FLG_DIRECT 0x0001 +#define SYMINFO_FLG_PASSTHRU 0x0002 +#define SYMINFO_FLG_COPY 0x0004 +#define SYMINFO_FLG_LAZYLOAD 0x0008 + +#define SYMINFO_NONE 0 +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val) ((val) & 0xf) +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_NUM 3 +#define STB_LOOS 10 +#define STB_GNU_UNIQUE 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_NUM 7 +#define STT_LOOS 10 +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#define STN_UNDEF 0 + +#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) +#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 +#define STV_PROTECTED 3 + + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val) ((val) >> 8) +#define ELF32_R_TYPE(val) ((val) & 0xff) +#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + + + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_NUM 8 +#define PT_LOOS 0x60000000 +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa +#define PT_SUNWSTACK 0x6ffffffb +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + + +#define PN_XNUM 0xffff + + +#define PF_X (1 << 0) +#define PF_W (1 << 1) +#define PF_R (1 << 2) +#define PF_MASKOS 0x0ff00000 +#define PF_MASKPROC 0xf0000000 + + + +#define NT_PRSTATUS 1 +#define NT_PRFPREG 2 +#define NT_FPREGSET 2 +#define NT_PRPSINFO 3 +#define NT_PRXREG 4 +#define NT_TASKSTRUCT 4 +#define NT_PLATFORM 5 +#define NT_AUXV 6 +#define NT_GWINDOWS 7 +#define NT_ASRS 8 +#define NT_PSTATUS 10 +#define NT_PSINFO 13 +#define NT_PRCRED 14 +#define NT_UTSNAME 15 +#define NT_LWPSTATUS 16 +#define NT_LWPSINFO 17 +#define NT_PRFPXREG 20 +#define NT_SIGINFO 0x53494749 +#define NT_FILE 0x46494c45 +#define NT_PRXFPREG 0x46e62b7f +#define NT_PPC_VMX 0x100 +#define NT_PPC_SPE 0x101 +#define NT_PPC_VSX 0x102 +#define NT_PPC_TAR 0x103 +#define NT_PPC_PPR 0x104 +#define NT_PPC_DSCR 0x105 +#define NT_PPC_EBB 0x106 +#define NT_PPC_PMU 0x107 +#define NT_PPC_TM_CGPR 0x108 +#define NT_PPC_TM_CFPR 0x109 +#define NT_PPC_TM_CVMX 0x10a +#define NT_PPC_TM_CVSX 0x10b +#define NT_PPC_TM_SPR 0x10c +#define NT_PPC_TM_CTAR 0x10d +#define NT_PPC_TM_CPPR 0x10e +#define NT_PPC_TM_CDSCR 0x10f +#define NT_386_TLS 0x200 +#define NT_386_IOPERM 0x201 +#define NT_X86_XSTATE 0x202 +#define NT_S390_HIGH_GPRS 0x300 +#define NT_S390_TIMER 0x301 +#define NT_S390_TODCMP 0x302 +#define NT_S390_TODPREG 0x303 +#define NT_S390_CTRS 0x304 +#define NT_S390_PREFIX 0x305 +#define NT_S390_LAST_BREAK 0x306 +#define NT_S390_SYSTEM_CALL 0x307 +#define NT_S390_TDB 0x308 +#define NT_S390_VXRS_LOW 0x309 +#define NT_S390_VXRS_HIGH 0x30a +#define NT_S390_GS_CB 0x30b +#define NT_S390_GS_BC 0x30c +#define NT_S390_RI_CB 0x30d +#define NT_ARM_VFP 0x400 +#define NT_ARM_TLS 0x401 +#define NT_ARM_HW_BREAK 0x402 +#define NT_ARM_HW_WATCH 0x403 +#define NT_ARM_SYSTEM_CALL 0x404 +#define NT_ARM_SVE 0x405 +#define NT_ARM_PAC_MASK 0x406 +#define NT_ARM_PACA_KEYS 0x407 +#define NT_ARM_PACG_KEYS 0x408 +#define NT_METAG_CBUF 0x500 +#define NT_METAG_RPIPE 0x501 +#define NT_METAG_TLS 0x502 +#define NT_ARC_V2 0x600 +#define NT_VMCOREDD 0x700 +#define NT_MIPS_DSP 0x800 +#define NT_MIPS_FP_MODE 0x801 +#define NT_MIPS_MSA 0x802 +#define NT_VERSION 1 + + + + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + + + +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_SYMTAB_SHNDX 34 +#define DT_NUM 35 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff +#define DT_PROCNUM DT_MIPS_NUM + +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM 0x6ffffdf8 +#define DT_PLTPADSZ 0x6ffffdf9 +#define DT_MOVEENT 0x6ffffdfa +#define DT_MOVESZ 0x6ffffdfb +#define DT_FEATURE_1 0x6ffffdfc +#define DT_POSFLAG_1 0x6ffffdfd + +#define DT_SYMINSZ 0x6ffffdfe +#define DT_SYMINENT 0x6ffffdff +#define DT_VALRNGHI 0x6ffffdff +#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_TLSDESC_PLT 0x6ffffef6 +#define DT_TLSDESC_GOT 0x6ffffef7 +#define DT_GNU_CONFLICT 0x6ffffef8 +#define DT_GNU_LIBLIST 0x6ffffef9 +#define DT_CONFIG 0x6ffffefa +#define DT_DEPAUDIT 0x6ffffefb +#define DT_AUDIT 0x6ffffefc +#define DT_PLTPAD 0x6ffffefd +#define DT_MOVETAB 0x6ffffefe +#define DT_SYMINFO 0x6ffffeff +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM 0x6ffffff0 + +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa + + +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc + +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe + +#define DT_VERNEEDNUM 0x6fffffff +#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY 0x7ffffffd +#define DT_FILTER 0x7fffffff +#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM 3 + + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + + + +#define DF_1_NOW 0x00000001 +#define DF_1_GLOBAL 0x00000002 +#define DF_1_GROUP 0x00000004 +#define DF_1_NODELETE 0x00000008 +#define DF_1_LOADFLTR 0x00000010 +#define DF_1_INITFIRST 0x00000020 +#define DF_1_NOOPEN 0x00000040 +#define DF_1_ORIGIN 0x00000080 +#define DF_1_DIRECT 0x00000100 +#define DF_1_TRANS 0x00000200 +#define DF_1_INTERPOSE 0x00000400 +#define DF_1_NODEFLIB 0x00000800 +#define DF_1_NODUMP 0x00001000 +#define DF_1_CONFALT 0x00002000 +#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_DISPRELDNE 0x00008000 +#define DF_1_DISPRELPND 0x00010000 +#define DF_1_NODIRECT 0x00020000 +#define DF_1_IGNMULDEF 0x00040000 +#define DF_1_NOKSYMS 0x00080000 +#define DF_1_NOHDR 0x00100000 +#define DF_1_EDITED 0x00200000 +#define DF_1_NORELOC 0x00400000 +#define DF_1_SYMINTPOSE 0x00800000 +#define DF_1_GLOBAUDIT 0x01000000 +#define DF_1_SINGLETON 0x02000000 +#define DF_1_STUB 0x04000000 +#define DF_1_PIE 0x08000000 + +#define DTF_1_PARINIT 0x00000001 +#define DTF_1_CONFEXP 0x00000002 + + +#define DF_P1_LAZYLOAD 0x00000001 +#define DF_P1_GROUPPERM 0x00000002 + + + + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE 0 +#define VER_DEF_CURRENT 1 +#define VER_DEF_NUM 2 + + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_LORESERVE 0xff00 +#define VER_NDX_ELIMINATE 0xff01 + + + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + + + + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM 2 + + + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK 0x2 + + + +typedef struct { + uint32_t a_type; + union { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + uint64_t a_type; + union { + uint64_t a_val; + } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL 0 +#define AT_IGNORE 1 +#define AT_EXECFD 2 +#define AT_PHDR 3 +#define AT_PHENT 4 +#define AT_PHNUM 5 +#define AT_PAGESZ 6 +#define AT_BASE 7 +#define AT_FLAGS 8 +#define AT_ENTRY 9 +#define AT_NOTELF 10 +#define AT_UID 11 +#define AT_EUID 12 +#define AT_GID 13 +#define AT_EGID 14 +#define AT_CLKTCK 17 + + +#define AT_PLATFORM 15 +#define AT_HWCAP 16 + + + + +#define AT_FPUCW 18 + + +#define AT_DCACHEBSIZE 19 +#define AT_ICACHEBSIZE 20 +#define AT_UCACHEBSIZE 21 + + + +#define AT_IGNOREPPC 22 + +#define AT_SECURE 23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM 25 + +#define AT_HWCAP2 26 + +#define AT_EXECFN 31 + + + +#define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 + + + +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 + +#define AT_L1I_CACHESIZE 40 +#define AT_L1I_CACHEGEOMETRY 41 +#define AT_L1D_CACHESIZE 42 +#define AT_L1D_CACHEGEOMETRY 43 +#define AT_L2_CACHESIZE 44 +#define AT_L2_CACHEGEOMETRY 45 +#define AT_L3_CACHESIZE 46 +#define AT_L3_CACHEGEOMETRY 47 + +#define AT_MINSIGSTKSZ 51 + + +typedef struct { + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS "SUNW Solaris" + + +#define ELF_NOTE_GNU "GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT 1 + + +#define NT_GNU_ABI_TAG 1 +#define ELF_NOTE_ABI NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX 0 +#define ELF_NOTE_OS_GNU 1 +#define ELF_NOTE_OS_SOLARIS2 2 +#define ELF_NOTE_OS_FREEBSD 3 + +#define NT_GNU_BUILD_ID 3 +#define NT_GNU_GOLD_VERSION 4 + + + +typedef struct { + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info) ((info) >> 8) +#define ELF32_M_SIZE(info) ((unsigned char) (info)) +#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info) ELF32_M_SYM (info) +#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) + +#define EF_CPU32 0x00810000 + +#define R_68K_NONE 0 +#define R_68K_32 1 +#define R_68K_16 2 +#define R_68K_8 3 +#define R_68K_PC32 4 +#define R_68K_PC16 5 +#define R_68K_PC8 6 +#define R_68K_GOT32 7 +#define R_68K_GOT16 8 +#define R_68K_GOT8 9 +#define R_68K_GOT32O 10 +#define R_68K_GOT16O 11 +#define R_68K_GOT8O 12 +#define R_68K_PLT32 13 +#define R_68K_PLT16 14 +#define R_68K_PLT8 15 +#define R_68K_PLT32O 16 +#define R_68K_PLT16O 17 +#define R_68K_PLT8O 18 +#define R_68K_COPY 19 +#define R_68K_GLOB_DAT 20 +#define R_68K_JMP_SLOT 21 +#define R_68K_RELATIVE 22 +#define R_68K_TLS_GD32 25 +#define R_68K_TLS_GD16 26 +#define R_68K_TLS_GD8 27 +#define R_68K_TLS_LDM32 28 +#define R_68K_TLS_LDM16 29 +#define R_68K_TLS_LDM8 30 +#define R_68K_TLS_LDO32 31 +#define R_68K_TLS_LDO16 32 +#define R_68K_TLS_LDO8 33 +#define R_68K_TLS_IE32 34 +#define R_68K_TLS_IE16 35 +#define R_68K_TLS_IE8 36 +#define R_68K_TLS_LE32 37 +#define R_68K_TLS_LE16 38 +#define R_68K_TLS_LE8 39 +#define R_68K_TLS_DTPMOD32 40 +#define R_68K_TLS_DTPREL32 41 +#define R_68K_TLS_TPREL32 42 +#define R_68K_NUM 43 + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_GOT32X 43 +#define R_386_NUM 44 + + + + + +#define STT_SPARC_REGISTER 13 + + + +#define EF_SPARCV9_MM 3 +#define EF_SPARCV9_TSO 0 +#define EF_SPARCV9_PSO 1 +#define EF_SPARCV9_RMO 2 +#define EF_SPARC_LEDATA 0x800000 +#define EF_SPARC_EXT_MASK 0xFFFF00 +#define EF_SPARC_32PLUS 0x000100 +#define EF_SPARC_SUN_US1 0x000200 +#define EF_SPARC_HAL_R1 0x000400 +#define EF_SPARC_SUN_US3 0x000800 + + + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 + + + +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 + +#define R_SPARC_NUM 253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM 2 + + +#define EF_MIPS_NOREORDER 1 +#define EF_MIPS_PIC 2 +#define EF_MIPS_CPIC 4 +#define EF_MIPS_XGOT 8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2 32 +#define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_FP64 512 +#define EF_MIPS_NAN2008 1024 +#define EF_MIPS_ARCH 0xf0000000 + + + +#define EF_MIPS_ARCH_1 0x00000000 +#define EF_MIPS_ARCH_2 0x10000000 +#define EF_MIPS_ARCH_3 0x20000000 +#define EF_MIPS_ARCH_4 0x30000000 +#define EF_MIPS_ARCH_5 0x40000000 +#define EF_MIPS_ARCH_32 0x50000000 +#define EF_MIPS_ARCH_64 0x60000000 +#define EF_MIPS_ARCH_32R2 0x70000000 +#define EF_MIPS_ARCH_64R2 0x80000000 + + +#define E_MIPS_ARCH_1 0x00000000 +#define E_MIPS_ARCH_2 0x10000000 +#define E_MIPS_ARCH_3 0x20000000 +#define E_MIPS_ARCH_4 0x30000000 +#define E_MIPS_ARCH_5 0x40000000 +#define E_MIPS_ARCH_32 0x50000000 +#define E_MIPS_ARCH_64 0x60000000 + + + +#define SHN_MIPS_ACOMMON 0xff00 +#define SHN_MIPS_TEXT 0xff01 +#define SHN_MIPS_DATA 0xff02 +#define SHN_MIPS_SCOMMON 0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_SHDR 0x70000010 +#define SHT_MIPS_FDESC 0x70000011 +#define SHT_MIPS_EXTSYM 0x70000012 +#define SHT_MIPS_DENSE 0x70000013 +#define SHT_MIPS_PDESC 0x70000014 +#define SHT_MIPS_LOCSYM 0x70000015 +#define SHT_MIPS_AUXSYM 0x70000016 +#define SHT_MIPS_OPTSYM 0x70000017 +#define SHT_MIPS_LOCSTR 0x70000018 +#define SHT_MIPS_LINE 0x70000019 +#define SHT_MIPS_RFDESC 0x7000001a +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL 0x10000000 +#define SHF_MIPS_MERGE 0x20000000 +#define SHF_MIPS_ADDR 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL 0x04000000 +#define SHF_MIPS_NAMES 0x02000000 +#define SHF_MIPS_NODUPE 0x01000000 + + + + + +#define STO_MIPS_DEFAULT 0x0 +#define STO_MIPS_INTERNAL 0x1 +#define STO_MIPS_HIDDEN 0x2 +#define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 +#define STO_MIPS_SC_ALIGN_UNUSED 0xff + + +#define STB_MIPS_SPLIT_COMMON 13 + + + +typedef union { + struct { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct { + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL 0 +#define ODK_REGINFO 1 +#define ODK_EXCEPTIONS 2 +#define ODK_PAD 3 +#define ODK_HWPATCH 4 +#define ODK_FILL 5 +#define ODK_TAGS 6 +#define ODK_HWAND 7 +#define ODK_HWOR 8 + + + +#define OEX_FPU_MIN 0x1f +#define OEX_FPU_MAX 0x1f00 +#define OEX_PAGE0 0x10000 +#define OEX_SMM 0x20000 +#define OEX_FPDBUG 0x40000 +#define OEX_PRECISEFP OEX_FPDBUG +#define OEX_DISMISS 0x80000 + +#define OEX_FPU_INVAL 0x10 +#define OEX_FPU_DIV0 0x08 +#define OEX_FPU_OFLO 0x04 +#define OEX_FPU_UFLO 0x02 +#define OEX_FPU_INEX 0x01 + + + +#define OHW_R4KEOP 0x1 +#define OHW_R8KPFETCH 0x2 +#define OHW_R5KEOP 0x4 +#define OHW_R5KCVTL 0x8 + +#define OPAD_PREFIX 0x1 +#define OPAD_POSTFIX 0x2 +#define OPAD_SYMBOL 0x4 + + + +typedef struct { + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED 0x00000001 +#define OHWA1_R4KEOP_CLEAN 0x00000002 + + + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 +#define R_MIPS_GPREL16 7 +#define R_MIPS_LITERAL 8 +#define R_MIPS_GOT16 9 +#define R_MIPS_PC16 10 +#define R_MIPS_CALL16 11 +#define R_MIPS_GPREL32 12 + +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_DTPMOD32 38 +#define R_MIPS_TLS_DTPREL32 39 +#define R_MIPS_TLS_DTPMOD64 40 +#define R_MIPS_TLS_DTPREL64 41 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_TLS_LDM 43 +#define R_MIPS_TLS_DTPREL_HI16 44 +#define R_MIPS_TLS_DTPREL_LO16 45 +#define R_MIPS_TLS_GOTTPREL 46 +#define R_MIPS_TLS_TPREL32 47 +#define R_MIPS_TLS_TPREL64 48 +#define R_MIPS_TLS_TPREL_HI16 49 +#define R_MIPS_TLS_TPREL_LO16 50 +#define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_MIPS_NUM 128 + + + +#define PT_MIPS_REGINFO 0x70000000 +#define PT_MIPS_RTPROC 0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 +#define PT_MIPS_ABIFLAGS 0x70000003 + + + +#define PF_MIPS_LOCAL 0x10000000 + + + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM 0x70000007 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 + +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC 0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM 0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX 0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 + +#define DT_MIPS_PLTGOT 0x70000032 + +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_RLD_MAP_REL 0x70000035 +#define DT_MIPS_NUM 0x36 + + + +#define RHF_NONE 0 +#define RHF_QUICKSTART (1 << 0) +#define RHF_NOTPOT (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE (1 << 3) +#define RHF_SGI_ONLY (1 << 4) +#define RHF_GUARANTEE_INIT (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS (1 << 6) +#define RHF_GUARANTEE_START_INIT (1 << 7) +#define RHF_PIXIE (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD (1 << 9) +#define RHF_REQUICKSTART (1 << 10) +#define RHF_REQUICKSTARTED (1 << 11) +#define RHF_CORD (1 << 12) +#define RHF_NO_UNRES_UNDEF (1 << 13) +#define RHF_RLD_ORDER_SAFE (1 << 14) + + + +typedef struct { + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct { + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE 0 +#define LL_EXACT_MATCH (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR (1 << 2) +#define LL_EXPORTS (1 << 3) +#define LL_DELAY_LOAD (1 << 4) +#define LL_DELTA (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + +typedef struct { + Elf32_Half version; + unsigned char isa_level; + unsigned char isa_rev; + unsigned char gpr_size; + unsigned char cpr1_size; + unsigned char cpr2_size; + unsigned char fp_abi; + Elf32_Word isa_ext; + Elf32_Word ases; + Elf32_Word flags1; + Elf32_Word flags2; +} Elf_MIPS_ABIFlags_v0; + +#define MIPS_AFL_REG_NONE 0x00 +#define MIPS_AFL_REG_32 0x01 +#define MIPS_AFL_REG_64 0x02 +#define MIPS_AFL_REG_128 0x03 + +#define MIPS_AFL_ASE_DSP 0x00000001 +#define MIPS_AFL_ASE_DSPR2 0x00000002 +#define MIPS_AFL_ASE_EVA 0x00000004 +#define MIPS_AFL_ASE_MCU 0x00000008 +#define MIPS_AFL_ASE_MDMX 0x00000010 +#define MIPS_AFL_ASE_MIPS3D 0x00000020 +#define MIPS_AFL_ASE_MT 0x00000040 +#define MIPS_AFL_ASE_SMARTMIPS 0x00000080 +#define MIPS_AFL_ASE_VIRT 0x00000100 +#define MIPS_AFL_ASE_MSA 0x00000200 +#define MIPS_AFL_ASE_MIPS16 0x00000400 +#define MIPS_AFL_ASE_MICROMIPS 0x00000800 +#define MIPS_AFL_ASE_XPA 0x00001000 +#define MIPS_AFL_ASE_MASK 0x00001fff + +#define MIPS_AFL_EXT_XLR 1 +#define MIPS_AFL_EXT_OCTEON2 2 +#define MIPS_AFL_EXT_OCTEONP 3 +#define MIPS_AFL_EXT_LOONGSON_3A 4 +#define MIPS_AFL_EXT_OCTEON 5 +#define MIPS_AFL_EXT_5900 6 +#define MIPS_AFL_EXT_4650 7 +#define MIPS_AFL_EXT_4010 8 +#define MIPS_AFL_EXT_4100 9 +#define MIPS_AFL_EXT_3900 10 +#define MIPS_AFL_EXT_10000 11 +#define MIPS_AFL_EXT_SB1 12 +#define MIPS_AFL_EXT_4111 13 +#define MIPS_AFL_EXT_4120 14 +#define MIPS_AFL_EXT_5400 15 +#define MIPS_AFL_EXT_5500 16 +#define MIPS_AFL_EXT_LOONGSON_2E 17 +#define MIPS_AFL_EXT_LOONGSON_2F 18 + +#define MIPS_AFL_FLAGS1_ODDSPREG 1 + +enum +{ + Val_GNU_MIPS_ABI_FP_ANY = 0, + Val_GNU_MIPS_ABI_FP_DOUBLE = 1, + Val_GNU_MIPS_ABI_FP_SINGLE = 2, + Val_GNU_MIPS_ABI_FP_SOFT = 3, + Val_GNU_MIPS_ABI_FP_OLD_64 = 4, + Val_GNU_MIPS_ABI_FP_XX = 5, + Val_GNU_MIPS_ABI_FP_64 = 6, + Val_GNU_MIPS_ABI_FP_64A = 7, + Val_GNU_MIPS_ABI_FP_MAX = 7 +}; + + + + +#define EF_PARISC_TRAPNIL 0x00010000 +#define EF_PARISC_EXT 0x00020000 +#define EF_PARISC_LSB 0x00040000 +#define EF_PARISC_WIDE 0x00080000 +#define EF_PARISC_NO_KABP 0x00100000 + +#define EF_PARISC_LAZYSWAP 0x00400000 +#define EF_PARISC_ARCH 0x0000ffff + + + +#define EFA_PARISC_1_0 0x020b +#define EFA_PARISC_1_1 0x0210 +#define EFA_PARISC_2_0 0x0214 + + + +#define SHN_PARISC_ANSI_COMMON 0xff00 + +#define SHN_PARISC_HUGE_COMMON 0xff01 + + + +#define SHT_PARISC_EXT 0x70000000 +#define SHT_PARISC_UNWIND 0x70000001 +#define SHT_PARISC_DOC 0x70000002 + + + +#define SHF_PARISC_SHORT 0x20000000 +#define SHF_PARISC_HUGE 0x40000000 +#define SHF_PARISC_SBP 0x80000000 + + + +#define STT_PARISC_MILLICODE 13 + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + + + +#define R_PARISC_NONE 0 +#define R_PARISC_DIR32 1 +#define R_PARISC_DIR21L 2 +#define R_PARISC_DIR17R 3 +#define R_PARISC_DIR17F 4 +#define R_PARISC_DIR14R 6 +#define R_PARISC_PCREL32 9 +#define R_PARISC_PCREL21L 10 +#define R_PARISC_PCREL17R 11 +#define R_PARISC_PCREL17F 12 +#define R_PARISC_PCREL14R 14 +#define R_PARISC_DPREL21L 18 +#define R_PARISC_DPREL14R 22 +#define R_PARISC_GPREL21L 26 +#define R_PARISC_GPREL14R 30 +#define R_PARISC_LTOFF21L 34 +#define R_PARISC_LTOFF14R 38 +#define R_PARISC_SECREL32 41 +#define R_PARISC_SEGBASE 48 +#define R_PARISC_SEGREL32 49 +#define R_PARISC_PLTOFF21L 50 +#define R_PARISC_PLTOFF14R 54 +#define R_PARISC_LTOFF_FPTR32 57 +#define R_PARISC_LTOFF_FPTR21L 58 +#define R_PARISC_LTOFF_FPTR14R 62 +#define R_PARISC_FPTR64 64 +#define R_PARISC_PLABEL32 65 +#define R_PARISC_PLABEL21L 66 +#define R_PARISC_PLABEL14R 70 +#define R_PARISC_PCREL64 72 +#define R_PARISC_PCREL22F 74 +#define R_PARISC_PCREL14WR 75 +#define R_PARISC_PCREL14DR 76 +#define R_PARISC_PCREL16F 77 +#define R_PARISC_PCREL16WF 78 +#define R_PARISC_PCREL16DF 79 +#define R_PARISC_DIR64 80 +#define R_PARISC_DIR14WR 83 +#define R_PARISC_DIR14DR 84 +#define R_PARISC_DIR16F 85 +#define R_PARISC_DIR16WF 86 +#define R_PARISC_DIR16DF 87 +#define R_PARISC_GPREL64 88 +#define R_PARISC_GPREL14WR 91 +#define R_PARISC_GPREL14DR 92 +#define R_PARISC_GPREL16F 93 +#define R_PARISC_GPREL16WF 94 +#define R_PARISC_GPREL16DF 95 +#define R_PARISC_LTOFF64 96 +#define R_PARISC_LTOFF14WR 99 +#define R_PARISC_LTOFF14DR 100 +#define R_PARISC_LTOFF16F 101 +#define R_PARISC_LTOFF16WF 102 +#define R_PARISC_LTOFF16DF 103 +#define R_PARISC_SECREL64 104 +#define R_PARISC_SEGREL64 112 +#define R_PARISC_PLTOFF14WR 115 +#define R_PARISC_PLTOFF14DR 116 +#define R_PARISC_PLTOFF16F 117 +#define R_PARISC_PLTOFF16WF 118 +#define R_PARISC_PLTOFF16DF 119 +#define R_PARISC_LTOFF_FPTR64 120 +#define R_PARISC_LTOFF_FPTR14WR 123 +#define R_PARISC_LTOFF_FPTR14DR 124 +#define R_PARISC_LTOFF_FPTR16F 125 +#define R_PARISC_LTOFF_FPTR16WF 126 +#define R_PARISC_LTOFF_FPTR16DF 127 +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 +#define R_PARISC_IPLT 129 +#define R_PARISC_EPLT 130 +#define R_PARISC_TPREL32 153 +#define R_PARISC_TPREL21L 154 +#define R_PARISC_TPREL14R 158 +#define R_PARISC_LTOFF_TP21L 162 +#define R_PARISC_LTOFF_TP14R 166 +#define R_PARISC_LTOFF_TP14F 167 +#define R_PARISC_TPREL64 216 +#define R_PARISC_TPREL14WR 219 +#define R_PARISC_TPREL14DR 220 +#define R_PARISC_TPREL16F 221 +#define R_PARISC_TPREL16WF 222 +#define R_PARISC_TPREL16DF 223 +#define R_PARISC_LTOFF_TP64 224 +#define R_PARISC_LTOFF_TP14WR 227 +#define R_PARISC_LTOFF_TP14DR 228 +#define R_PARISC_LTOFF_TP16F 229 +#define R_PARISC_LTOFF_TP16WF 230 +#define R_PARISC_LTOFF_TP16DF 231 +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 +#define R_PARISC_TLS_GD14R 235 +#define R_PARISC_TLS_GDCALL 236 +#define R_PARISC_TLS_LDM21L 237 +#define R_PARISC_TLS_LDM14R 238 +#define R_PARISC_TLS_LDMCALL 239 +#define R_PARISC_TLS_LDO21L 240 +#define R_PARISC_TLS_LDO14R 241 +#define R_PARISC_TLS_DTPMOD32 242 +#define R_PARISC_TLS_DTPMOD64 243 +#define R_PARISC_TLS_DTPOFF32 244 +#define R_PARISC_TLS_DTPOFF64 245 +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE 255 + + + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + + + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + + + + + + +#define EF_ALPHA_32BIT 1 +#define EF_ALPHA_CANRELAX 2 + + + + +#define SHT_ALPHA_DEBUG 0x70000001 +#define SHT_ALPHA_REGINFO 0x70000002 + + + +#define SHF_ALPHA_GPREL 0x10000000 + + +#define STO_ALPHA_NOPV 0x80 +#define STO_ALPHA_STD_GPLOAD 0x88 + + + +#define R_ALPHA_NONE 0 +#define R_ALPHA_REFLONG 1 +#define R_ALPHA_REFQUAD 2 +#define R_ALPHA_GPREL32 3 +#define R_ALPHA_LITERAL 4 +#define R_ALPHA_LITUSE 5 +#define R_ALPHA_GPDISP 6 +#define R_ALPHA_BRADDR 7 +#define R_ALPHA_HINT 8 +#define R_ALPHA_SREL16 9 +#define R_ALPHA_SREL32 10 +#define R_ALPHA_SREL64 11 +#define R_ALPHA_GPRELHIGH 17 +#define R_ALPHA_GPRELLOW 18 +#define R_ALPHA_GPREL16 19 +#define R_ALPHA_COPY 24 +#define R_ALPHA_GLOB_DAT 25 +#define R_ALPHA_JMP_SLOT 26 +#define R_ALPHA_RELATIVE 27 +#define R_ALPHA_TLS_GD_HI 28 +#define R_ALPHA_TLSGD 29 +#define R_ALPHA_TLS_LDM 30 +#define R_ALPHA_DTPMOD64 31 +#define R_ALPHA_GOTDTPREL 32 +#define R_ALPHA_DTPREL64 33 +#define R_ALPHA_DTPRELHI 34 +#define R_ALPHA_DTPRELLO 35 +#define R_ALPHA_DTPREL16 36 +#define R_ALPHA_GOTTPREL 37 +#define R_ALPHA_TPREL64 38 +#define R_ALPHA_TPRELHI 39 +#define R_ALPHA_TPRELLO 40 +#define R_ALPHA_TPREL16 41 + +#define R_ALPHA_NUM 46 + + +#define LITUSE_ALPHA_ADDR 0 +#define LITUSE_ALPHA_BASE 1 +#define LITUSE_ALPHA_BYTOFF 2 +#define LITUSE_ALPHA_JSR 3 +#define LITUSE_ALPHA_TLS_GD 4 +#define LITUSE_ALPHA_TLS_LDM 5 + + +#define DT_ALPHA_PLTRO (DT_LOPROC + 0) +#define DT_ALPHA_NUM 1 + + + + +#define EF_PPC_EMB 0x80000000 + + +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + + + +#define R_PPC_NONE 0 +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + + +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 +#define R_PPC_GOT_DTPREL16 91 +#define R_PPC_GOT_DTPREL16_LO 92 +#define R_PPC_GOT_DTPREL16_HI 93 +#define R_PPC_GOT_DTPREL16_HA 94 +#define R_PPC_TLSGD 95 +#define R_PPC_TLSLD 96 + + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + + +#define R_PPC_DIAB_SDA21_LO 180 +#define R_PPC_DIAB_SDA21_HI 181 +#define R_PPC_DIAB_SDA21_HA 182 +#define R_PPC_DIAB_RELSDA_LO 183 +#define R_PPC_DIAB_RELSDA_HI 184 +#define R_PPC_DIAB_RELSDA_HA 185 + + +#define R_PPC_IRELATIVE 248 + + +#define R_PPC_REL16 249 +#define R_PPC_REL16_LO 250 +#define R_PPC_REL16_HI 251 +#define R_PPC_REL16_HA 252 + + + +#define R_PPC_TOC16 255 + + +#define DT_PPC_GOT (DT_LOPROC + 0) +#define DT_PPC_OPT (DT_LOPROC + 1) +#define DT_PPC_NUM 2 + +#define PPC_OPT_TLS 1 + + +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 +#define R_PPC64_ADDR24 R_PPC_ADDR24 +#define R_PPC64_ADDR16 R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA +#define R_PPC64_ADDR14 R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 +#define R_PPC64_REL14 R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_PLTGOT16 52 +#define R_PPC64_PLTGOT16_LO 53 +#define R_PPC64_PLTGOT16_HI 54 +#define R_PPC64_PLTGOT16_HA 55 + +#define R_PPC64_ADDR16_DS 56 +#define R_PPC64_ADDR16_LO_DS 57 +#define R_PPC64_GOT16_DS 58 +#define R_PPC64_GOT16_LO_DS 59 +#define R_PPC64_PLT16_LO_DS 60 +#define R_PPC64_SECTOFF_DS 61 +#define R_PPC64_SECTOFF_LO_DS 62 +#define R_PPC64_TOC16_DS 63 +#define R_PPC64_TOC16_LO_DS 64 +#define R_PPC64_PLTGOT16_DS 65 +#define R_PPC64_PLTGOT16_LO_DS 66 + + +#define R_PPC64_TLS 67 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL16 69 +#define R_PPC64_TPREL16_LO 70 +#define R_PPC64_TPREL16_HI 71 +#define R_PPC64_TPREL16_HA 72 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL16 74 +#define R_PPC64_DTPREL16_LO 75 +#define R_PPC64_DTPREL16_HI 76 +#define R_PPC64_DTPREL16_HA 77 +#define R_PPC64_DTPREL64 78 +#define R_PPC64_GOT_TLSGD16 79 +#define R_PPC64_GOT_TLSGD16_LO 80 +#define R_PPC64_GOT_TLSGD16_HI 81 +#define R_PPC64_GOT_TLSGD16_HA 82 +#define R_PPC64_GOT_TLSLD16 83 +#define R_PPC64_GOT_TLSLD16_LO 84 +#define R_PPC64_GOT_TLSLD16_HI 85 +#define R_PPC64_GOT_TLSLD16_HA 86 +#define R_PPC64_GOT_TPREL16_DS 87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI 89 +#define R_PPC64_GOT_TPREL16_HA 90 +#define R_PPC64_GOT_DTPREL16_DS 91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI 93 +#define R_PPC64_GOT_DTPREL16_HA 94 +#define R_PPC64_TPREL16_DS 95 +#define R_PPC64_TPREL16_LO_DS 96 +#define R_PPC64_TPREL16_HIGHER 97 +#define R_PPC64_TPREL16_HIGHERA 98 +#define R_PPC64_TPREL16_HIGHEST 99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS 101 +#define R_PPC64_DTPREL16_LO_DS 102 +#define R_PPC64_DTPREL16_HIGHER 103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 +#define R_PPC64_TLSGD 107 +#define R_PPC64_TLSLD 108 +#define R_PPC64_TOCSAVE 109 +#define R_PPC64_ADDR16_HIGH 110 +#define R_PPC64_ADDR16_HIGHA 111 +#define R_PPC64_TPREL16_HIGH 112 +#define R_PPC64_TPREL16_HIGHA 113 +#define R_PPC64_DTPREL16_HIGH 114 +#define R_PPC64_DTPREL16_HIGHA 115 + + +#define R_PPC64_JMP_IREL 247 +#define R_PPC64_IRELATIVE 248 +#define R_PPC64_REL16 249 +#define R_PPC64_REL16_LO 250 +#define R_PPC64_REL16_HI 251 +#define R_PPC64_REL16_HA 252 + +#define EF_PPC64_ABI 3 + +#define DT_PPC64_GLINK (DT_LOPROC + 0) +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_OPT (DT_LOPROC + 3) +#define DT_PPC64_NUM 4 + +#define PPC64_OPT_TLS 1 +#define PPC64_OPT_MULTI_TOC 2 +#define PPC64_OPT_LOCALENTRY 4 + +#define STO_PPC64_LOCAL_BIT 5 +#define STO_PPC64_LOCAL_MASK 0xe0 +#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc) + + +#define EF_ARM_RELEXEC 0x01 +#define EF_ARM_HASENTRY 0x02 +#define EF_ARM_INTERWORK 0x04 +#define EF_ARM_APCS_26 0x08 +#define EF_ARM_APCS_FLOAT 0x10 +#define EF_ARM_PIC 0x20 +#define EF_ARM_ALIGN8 0x40 +#define EF_ARM_NEW_ABI 0x80 +#define EF_ARM_OLD_ABI 0x100 +#define EF_ARM_SOFT_FLOAT 0x200 +#define EF_ARM_VFP_FLOAT 0x400 +#define EF_ARM_MAVERICK_FLOAT 0x800 + +#define EF_ARM_ABI_FLOAT_SOFT 0x200 +#define EF_ARM_ABI_FLOAT_HARD 0x400 + + +#define EF_ARM_SYMSARESORTED 0x04 +#define EF_ARM_DYNSYMSUSESEGIDX 0x08 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_EABIMASK 0XFF000000 + + +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_LE8 0x00400000 + +#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 + + +#define STT_ARM_TFUNC STT_LOPROC +#define STT_ARM_16BIT STT_HIPROC + + +#define SHF_ARM_ENTRYSECT 0x10000000 +#define SHF_ARM_COMDEF 0x80000000 + + + +#define PF_ARM_SB 0x10000000 + +#define PF_ARM_PI 0x20000000 +#define PF_ARM_ABS 0x40000000 + + +#define PT_ARM_EXIDX (PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX (SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) + +#define R_AARCH64_NONE 0 +#define R_AARCH64_P32_ABS32 1 +#define R_AARCH64_P32_COPY 180 +#define R_AARCH64_P32_GLOB_DAT 181 +#define R_AARCH64_P32_JUMP_SLOT 182 +#define R_AARCH64_P32_RELATIVE 183 +#define R_AARCH64_P32_TLS_DTPMOD 184 +#define R_AARCH64_P32_TLS_DTPREL 185 +#define R_AARCH64_P32_TLS_TPREL 186 +#define R_AARCH64_P32_TLSDESC 187 +#define R_AARCH64_P32_IRELATIVE 188 +#define R_AARCH64_ABS64 257 +#define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 +#define R_AARCH64_COPY 1024 +#define R_AARCH64_GLOB_DAT 1025 +#define R_AARCH64_JUMP_SLOT 1026 +#define R_AARCH64_RELATIVE 1027 +#define R_AARCH64_TLS_DTPMOD 1028 +#define R_AARCH64_TLS_DTPMOD64 1028 +#define R_AARCH64_TLS_DTPREL 1029 +#define R_AARCH64_TLS_DTPREL64 1029 +#define R_AARCH64_TLS_TPREL 1030 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 + + +#define R_ARM_NONE 0 +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_TLS_DESC 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 +#define R_ARM_TLS_DTPOFF32 18 +#define R_ARM_TLS_TPOFF32 19 +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 +#define R_ARM_GOTOFF 24 +#define R_ARM_GOTPC 25 +#define R_ARM_GOT32 26 +#define R_ARM_PLT32 27 +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_ALU_PCREL_7_0 32 +#define R_ARM_ALU_PCREL_15_8 33 +#define R_ARM_ALU_PCREL_23_15 34 +#define R_ARM_LDR_SBREL_11_0 35 +#define R_ARM_ALU_SBREL_19_12 36 +#define R_ARM_ALU_SBREL_27_20 37 +#define R_ARM_TARGET1 38 +#define R_ARM_SBREL31 39 +#define R_ARM_V4BX 40 +#define R_ARM_TARGET2 41 +#define R_ARM_PREL31 42 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 +#define R_ARM_THM_JUMP6 52 +#define R_ARM_THM_ALU_PREL_11_0 53 +#define R_ARM_THM_PC12 54 +#define R_ARM_ABS32_NOI 55 +#define R_ARM_REL32_NOI 56 +#define R_ARM_ALU_PC_G0_NC 57 +#define R_ARM_ALU_PC_G0 58 +#define R_ARM_ALU_PC_G1_NC 59 +#define R_ARM_ALU_PC_G1 60 +#define R_ARM_ALU_PC_G2 61 +#define R_ARM_LDR_PC_G1 62 +#define R_ARM_LDR_PC_G2 63 +#define R_ARM_LDRS_PC_G0 64 +#define R_ARM_LDRS_PC_G1 65 +#define R_ARM_LDRS_PC_G2 66 +#define R_ARM_LDC_PC_G0 67 +#define R_ARM_LDC_PC_G1 68 +#define R_ARM_LDC_PC_G2 69 +#define R_ARM_ALU_SB_G0_NC 70 +#define R_ARM_ALU_SB_G0 71 +#define R_ARM_ALU_SB_G1_NC 72 +#define R_ARM_ALU_SB_G1 73 +#define R_ARM_ALU_SB_G2 74 +#define R_ARM_LDR_SB_G0 75 +#define R_ARM_LDR_SB_G1 76 +#define R_ARM_LDR_SB_G2 77 +#define R_ARM_LDRS_SB_G0 78 +#define R_ARM_LDRS_SB_G1 79 +#define R_ARM_LDRS_SB_G2 80 +#define R_ARM_LDC_SB_G0 81 +#define R_ARM_LDC_SB_G1 82 +#define R_ARM_LDC_SB_G2 83 +#define R_ARM_MOVW_BREL_NC 84 +#define R_ARM_MOVT_BREL 85 +#define R_ARM_MOVW_BREL 86 +#define R_ARM_THM_MOVW_BREL_NC 87 +#define R_ARM_THM_MOVT_BREL 88 +#define R_ARM_THM_MOVW_BREL 89 +#define R_ARM_TLS_GOTDESC 90 +#define R_ARM_TLS_CALL 91 +#define R_ARM_TLS_DESCSEQ 92 +#define R_ARM_THM_TLS_CALL 93 +#define R_ARM_PLT32_ABS 94 +#define R_ARM_GOT_ABS 95 +#define R_ARM_GOT_PREL 96 +#define R_ARM_GOT_BREL12 97 +#define R_ARM_GOTOFF12 98 +#define R_ARM_GOTRELAX 99 +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_THM_PC11 102 +#define R_ARM_THM_PC9 103 +#define R_ARM_TLS_GD32 104 + +#define R_ARM_TLS_LDM32 105 + +#define R_ARM_TLS_LDO32 106 + +#define R_ARM_TLS_IE32 107 + +#define R_ARM_TLS_LE32 108 +#define R_ARM_TLS_LDO12 109 +#define R_ARM_TLS_LE12 110 +#define R_ARM_TLS_IE12GP 111 +#define R_ARM_ME_TOO 128 +#define R_ARM_THM_TLS_DESCSEQ 129 +#define R_ARM_THM_TLS_DESCSEQ16 129 +#define R_ARM_THM_TLS_DESCSEQ32 130 +#define R_ARM_THM_GOT_BREL12 131 +#define R_ARM_IRELATIVE 160 +#define R_ARM_RXPC25 249 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS22 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +#define R_ARM_NUM 256 + + +#define R_CKCORE_NONE 0 +#define R_CKCORE_ADDR32 1 +#define R_CKCORE_PCRELIMM8BY4 2 +#define R_CKCORE_PCRELIMM11BY2 3 +#define R_CKCORE_PCREL32 5 +#define R_CKCORE_PCRELJSR_IMM11BY2 6 +#define R_CKCORE_RELATIVE 9 +#define R_CKCORE_COPY 10 +#define R_CKCORE_GLOB_DAT 11 +#define R_CKCORE_JUMP_SLOT 12 +#define R_CKCORE_GOTOFF 13 +#define R_CKCORE_GOTPC 14 +#define R_CKCORE_GOT32 15 +#define R_CKCORE_PLT32 16 +#define R_CKCORE_ADDRGOT 17 +#define R_CKCORE_ADDRPLT 18 +#define R_CKCORE_PCREL_IMM26BY2 19 +#define R_CKCORE_PCREL_IMM16BY2 20 +#define R_CKCORE_PCREL_IMM16BY4 21 +#define R_CKCORE_PCREL_IMM10BY2 22 +#define R_CKCORE_PCREL_IMM10BY4 23 +#define R_CKCORE_ADDR_HI16 24 +#define R_CKCORE_ADDR_LO16 25 +#define R_CKCORE_GOTPC_HI16 26 +#define R_CKCORE_GOTPC_LO16 27 +#define R_CKCORE_GOTOFF_HI16 28 +#define R_CKCORE_GOTOFF_LO16 29 +#define R_CKCORE_GOT12 30 +#define R_CKCORE_GOT_HI16 31 +#define R_CKCORE_GOT_LO16 32 +#define R_CKCORE_PLT12 33 +#define R_CKCORE_PLT_HI16 34 +#define R_CKCORE_PLT_LO16 35 +#define R_CKCORE_ADDRGOT_HI16 36 +#define R_CKCORE_ADDRGOT_LO16 37 +#define R_CKCORE_ADDRPLT_HI16 38 +#define R_CKCORE_ADDRPLT_LO16 39 +#define R_CKCORE_PCREL_JSR_IMM26BY2 40 +#define R_CKCORE_TOFFSET_LO16 41 +#define R_CKCORE_DOFFSET_LO16 42 +#define R_CKCORE_PCREL_IMM18BY2 43 +#define R_CKCORE_DOFFSET_IMM18 44 +#define R_CKCORE_DOFFSET_IMM18BY2 45 +#define R_CKCORE_DOFFSET_IMM18BY4 46 +#define R_CKCORE_GOT_IMM18BY4 48 +#define R_CKCORE_PLT_IMM18BY4 49 +#define R_CKCORE_PCREL_IMM7BY4 50 +#define R_CKCORE_TLS_LE32 51 +#define R_CKCORE_TLS_IE32 52 +#define R_CKCORE_TLS_GD32 53 +#define R_CKCORE_TLS_LDM32 54 +#define R_CKCORE_TLS_LDO32 55 +#define R_CKCORE_TLS_DTPMOD32 56 +#define R_CKCORE_TLS_DTPOFF32 57 +#define R_CKCORE_TLS_TPOFF32 58 + + +#define EF_IA_64_MASKOS 0x0000000f +#define EF_IA_64_ABI64 0x00000010 +#define EF_IA_64_ARCH 0xff000000 + + +#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) +#define PT_IA_64_UNWIND (PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV 0x80000000 + + +#define SHT_IA_64_EXT (SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT 0x10000000 +#define SHF_IA_64_NORECOV 0x20000000 + + +#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) +#define DT_IA_64_NUM 1 + + +#define R_IA64_NONE 0x00 +#define R_IA64_IMM14 0x21 +#define R_IA64_IMM22 0x22 +#define R_IA64_IMM64 0x23 +#define R_IA64_DIR32MSB 0x24 +#define R_IA64_DIR32LSB 0x25 +#define R_IA64_DIR64MSB 0x26 +#define R_IA64_DIR64LSB 0x27 +#define R_IA64_GPREL22 0x2a +#define R_IA64_GPREL64I 0x2b +#define R_IA64_GPREL32MSB 0x2c +#define R_IA64_GPREL32LSB 0x2d +#define R_IA64_GPREL64MSB 0x2e +#define R_IA64_GPREL64LSB 0x2f +#define R_IA64_LTOFF22 0x32 +#define R_IA64_LTOFF64I 0x33 +#define R_IA64_PLTOFF22 0x3a +#define R_IA64_PLTOFF64I 0x3b +#define R_IA64_PLTOFF64MSB 0x3e +#define R_IA64_PLTOFF64LSB 0x3f +#define R_IA64_FPTR64I 0x43 +#define R_IA64_FPTR32MSB 0x44 +#define R_IA64_FPTR32LSB 0x45 +#define R_IA64_FPTR64MSB 0x46 +#define R_IA64_FPTR64LSB 0x47 +#define R_IA64_PCREL60B 0x48 +#define R_IA64_PCREL21B 0x49 +#define R_IA64_PCREL21M 0x4a +#define R_IA64_PCREL21F 0x4b +#define R_IA64_PCREL32MSB 0x4c +#define R_IA64_PCREL32LSB 0x4d +#define R_IA64_PCREL64MSB 0x4e +#define R_IA64_PCREL64LSB 0x4f +#define R_IA64_LTOFF_FPTR22 0x52 +#define R_IA64_LTOFF_FPTR64I 0x53 +#define R_IA64_LTOFF_FPTR32MSB 0x54 +#define R_IA64_LTOFF_FPTR32LSB 0x55 +#define R_IA64_LTOFF_FPTR64MSB 0x56 +#define R_IA64_LTOFF_FPTR64LSB 0x57 +#define R_IA64_SEGREL32MSB 0x5c +#define R_IA64_SEGREL32LSB 0x5d +#define R_IA64_SEGREL64MSB 0x5e +#define R_IA64_SEGREL64LSB 0x5f +#define R_IA64_SECREL32MSB 0x64 +#define R_IA64_SECREL32LSB 0x65 +#define R_IA64_SECREL64MSB 0x66 +#define R_IA64_SECREL64LSB 0x67 +#define R_IA64_REL32MSB 0x6c +#define R_IA64_REL32LSB 0x6d +#define R_IA64_REL64MSB 0x6e +#define R_IA64_REL64LSB 0x6f +#define R_IA64_LTV32MSB 0x74 +#define R_IA64_LTV32LSB 0x75 +#define R_IA64_LTV64MSB 0x76 +#define R_IA64_LTV64LSB 0x77 +#define R_IA64_PCREL21BI 0x79 +#define R_IA64_PCREL22 0x7a +#define R_IA64_PCREL64I 0x7b +#define R_IA64_IPLTMSB 0x80 +#define R_IA64_IPLTLSB 0x81 +#define R_IA64_COPY 0x84 +#define R_IA64_SUB 0x85 +#define R_IA64_LTOFF22X 0x86 +#define R_IA64_LDXMOV 0x87 +#define R_IA64_TPREL14 0x91 +#define R_IA64_TPREL22 0x92 +#define R_IA64_TPREL64I 0x93 +#define R_IA64_TPREL64MSB 0x96 +#define R_IA64_TPREL64LSB 0x97 +#define R_IA64_LTOFF_TPREL22 0x9a +#define R_IA64_DTPMOD64MSB 0xa6 +#define R_IA64_DTPMOD64LSB 0xa7 +#define R_IA64_LTOFF_DTPMOD22 0xaa +#define R_IA64_DTPREL14 0xb1 +#define R_IA64_DTPREL22 0xb2 +#define R_IA64_DTPREL64I 0xb3 +#define R_IA64_DTPREL32MSB 0xb4 +#define R_IA64_DTPREL32LSB 0xb5 +#define R_IA64_DTPREL64MSB 0xb6 +#define R_IA64_DTPREL64LSB 0xb7 +#define R_IA64_LTOFF_DTPREL22 0xba + + +#define EF_SH_MACH_MASK 0x1f +#define EF_SH_UNKNOWN 0x0 +#define EF_SH1 0x1 +#define EF_SH2 0x2 +#define EF_SH3 0x3 +#define EF_SH_DSP 0x4 +#define EF_SH3_DSP 0x5 +#define EF_SH4AL_DSP 0x6 +#define EF_SH3E 0x8 +#define EF_SH4 0x9 +#define EF_SH2E 0xb +#define EF_SH4A 0xc +#define EF_SH2A 0xd +#define EF_SH4_NOFPU 0x10 +#define EF_SH4A_NOFPU 0x11 +#define EF_SH4_NOMMU_NOFPU 0x12 +#define EF_SH2A_NOFPU 0x13 +#define EF_SH3_NOMMU 0x14 +#define EF_SH2A_SH4_NOFPU 0x15 +#define EF_SH2A_SH3_NOFPU 0x16 +#define EF_SH2A_SH4 0x17 +#define EF_SH2A_SH3E 0x18 + +#define R_SH_NONE 0 +#define R_SH_DIR32 1 +#define R_SH_REL32 2 +#define R_SH_DIR8WPN 3 +#define R_SH_IND12W 4 +#define R_SH_DIR8WPL 5 +#define R_SH_DIR8WPZ 6 +#define R_SH_DIR8BP 7 +#define R_SH_DIR8W 8 +#define R_SH_DIR8L 9 +#define R_SH_SWITCH16 25 +#define R_SH_SWITCH32 26 +#define R_SH_USES 27 +#define R_SH_COUNT 28 +#define R_SH_ALIGN 29 +#define R_SH_CODE 30 +#define R_SH_DATA 31 +#define R_SH_LABEL 32 +#define R_SH_SWITCH8 33 +#define R_SH_GNU_VTINHERIT 34 +#define R_SH_GNU_VTENTRY 35 +#define R_SH_TLS_GD_32 144 +#define R_SH_TLS_LD_32 145 +#define R_SH_TLS_LDO_32 146 +#define R_SH_TLS_IE_32 147 +#define R_SH_TLS_LE_32 148 +#define R_SH_TLS_DTPMOD32 149 +#define R_SH_TLS_DTPOFF32 150 +#define R_SH_TLS_TPOFF32 151 +#define R_SH_GOT32 160 +#define R_SH_PLT32 161 +#define R_SH_COPY 162 +#define R_SH_GLOB_DAT 163 +#define R_SH_JMP_SLOT 164 +#define R_SH_RELATIVE 165 +#define R_SH_GOTOFF 166 +#define R_SH_GOTPC 167 +#define R_SH_GOT20 201 +#define R_SH_GOTOFF20 202 +#define R_SH_GOTFUNCDESC 203 +#define R_SH_GOTFUNCDEST20 204 +#define R_SH_GOTOFFFUNCDESC 205 +#define R_SH_GOTOFFFUNCDEST20 206 +#define R_SH_FUNCDESC 207 +#define R_SH_FUNCDESC_VALUE 208 + +#define R_SH_NUM 256 + + + +#define R_390_NONE 0 +#define R_390_8 1 +#define R_390_12 2 +#define R_390_16 3 +#define R_390_32 4 +#define R_390_PC32 5 +#define R_390_GOT12 6 +#define R_390_GOT32 7 +#define R_390_PLT32 8 +#define R_390_COPY 9 +#define R_390_GLOB_DAT 10 +#define R_390_JMP_SLOT 11 +#define R_390_RELATIVE 12 +#define R_390_GOTOFF32 13 +#define R_390_GOTPC 14 +#define R_390_GOT16 15 +#define R_390_PC16 16 +#define R_390_PC16DBL 17 +#define R_390_PLT16DBL 18 +#define R_390_PC32DBL 19 +#define R_390_PLT32DBL 20 +#define R_390_GOTPCDBL 21 +#define R_390_64 22 +#define R_390_PC64 23 +#define R_390_GOT64 24 +#define R_390_PLT64 25 +#define R_390_GOTENT 26 +#define R_390_GOTOFF16 27 +#define R_390_GOTOFF64 28 +#define R_390_GOTPLT12 29 +#define R_390_GOTPLT16 30 +#define R_390_GOTPLT32 31 +#define R_390_GOTPLT64 32 +#define R_390_GOTPLTENT 33 +#define R_390_PLTOFF16 34 +#define R_390_PLTOFF32 35 +#define R_390_PLTOFF64 36 +#define R_390_TLS_LOAD 37 +#define R_390_TLS_GDCALL 38 + +#define R_390_TLS_LDCALL 39 + +#define R_390_TLS_GD32 40 + +#define R_390_TLS_GD64 41 + +#define R_390_TLS_GOTIE12 42 + +#define R_390_TLS_GOTIE32 43 + +#define R_390_TLS_GOTIE64 44 + +#define R_390_TLS_LDM32 45 + +#define R_390_TLS_LDM64 46 + +#define R_390_TLS_IE32 47 + +#define R_390_TLS_IE64 48 + +#define R_390_TLS_IEENT 49 + +#define R_390_TLS_LE32 50 + +#define R_390_TLS_LE64 51 + +#define R_390_TLS_LDO32 52 + +#define R_390_TLS_LDO64 53 + +#define R_390_TLS_DTPMOD 54 +#define R_390_TLS_DTPOFF 55 +#define R_390_TLS_TPOFF 56 + +#define R_390_20 57 +#define R_390_GOT20 58 +#define R_390_GOTPLT20 59 +#define R_390_TLS_GOTIE20 60 + + +#define R_390_NUM 61 + + + +#define R_CRIS_NONE 0 +#define R_CRIS_8 1 +#define R_CRIS_16 2 +#define R_CRIS_32 3 +#define R_CRIS_8_PCREL 4 +#define R_CRIS_16_PCREL 5 +#define R_CRIS_32_PCREL 6 +#define R_CRIS_GNU_VTINHERIT 7 +#define R_CRIS_GNU_VTENTRY 8 +#define R_CRIS_COPY 9 +#define R_CRIS_GLOB_DAT 10 +#define R_CRIS_JUMP_SLOT 11 +#define R_CRIS_RELATIVE 12 +#define R_CRIS_16_GOT 13 +#define R_CRIS_32_GOT 14 +#define R_CRIS_16_GOTPLT 15 +#define R_CRIS_32_GOTPLT 16 +#define R_CRIS_32_GOTREL 17 +#define R_CRIS_32_PLT_GOTREL 18 +#define R_CRIS_32_PLT_PCREL 19 + +#define R_CRIS_NUM 20 + + + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 + +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 + +#define R_X86_64_TLSLD 20 + +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 + +#define R_X86_64_TPOFF32 23 +#define R_X86_64_PC64 24 +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 + +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 +#define R_X86_64_RELATIVE64 38 +#define R_X86_64_GOTPCRELX 41 +#define R_X86_64_REX_GOTPCRELX 42 +#define R_X86_64_NUM 43 + + + +#define R_MN10300_NONE 0 +#define R_MN10300_32 1 +#define R_MN10300_16 2 +#define R_MN10300_8 3 +#define R_MN10300_PCREL32 4 +#define R_MN10300_PCREL16 5 +#define R_MN10300_PCREL8 6 +#define R_MN10300_GNU_VTINHERIT 7 +#define R_MN10300_GNU_VTENTRY 8 +#define R_MN10300_24 9 +#define R_MN10300_GOTPC32 10 +#define R_MN10300_GOTPC16 11 +#define R_MN10300_GOTOFF32 12 +#define R_MN10300_GOTOFF24 13 +#define R_MN10300_GOTOFF16 14 +#define R_MN10300_PLT32 15 +#define R_MN10300_PLT16 16 +#define R_MN10300_GOT32 17 +#define R_MN10300_GOT24 18 +#define R_MN10300_GOT16 19 +#define R_MN10300_COPY 20 +#define R_MN10300_GLOB_DAT 21 +#define R_MN10300_JMP_SLOT 22 +#define R_MN10300_RELATIVE 23 + +#define R_MN10300_NUM 24 + + + +#define R_M32R_NONE 0 +#define R_M32R_16 1 +#define R_M32R_32 2 +#define R_M32R_24 3 +#define R_M32R_10_PCREL 4 +#define R_M32R_18_PCREL 5 +#define R_M32R_26_PCREL 6 +#define R_M32R_HI16_ULO 7 +#define R_M32R_HI16_SLO 8 +#define R_M32R_LO16 9 +#define R_M32R_SDA16 10 +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 + +#define R_M32R_16_RELA 33 +#define R_M32R_32_RELA 34 +#define R_M32R_24_RELA 35 +#define R_M32R_10_PCREL_RELA 36 +#define R_M32R_18_PCREL_RELA 37 +#define R_M32R_26_PCREL_RELA 38 +#define R_M32R_HI16_ULO_RELA 39 +#define R_M32R_HI16_SLO_RELA 40 +#define R_M32R_LO16_RELA 41 +#define R_M32R_SDA16_RELA 42 +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 +#define R_M32R_REL32 45 + +#define R_M32R_GOT24 48 +#define R_M32R_26_PLTREL 49 +#define R_M32R_COPY 50 +#define R_M32R_GLOB_DAT 51 +#define R_M32R_JMP_SLOT 52 +#define R_M32R_RELATIVE 53 +#define R_M32R_GOTOFF 54 +#define R_M32R_GOTPC24 55 +#define R_M32R_GOT16_HI_ULO 56 + +#define R_M32R_GOT16_HI_SLO 57 + +#define R_M32R_GOT16_LO 58 +#define R_M32R_GOTPC_HI_ULO 59 + +#define R_M32R_GOTPC_HI_SLO 60 + +#define R_M32R_GOTPC_LO 61 + +#define R_M32R_GOTOFF_HI_ULO 62 + +#define R_M32R_GOTOFF_HI_SLO 63 + +#define R_M32R_GOTOFF_LO 64 +#define R_M32R_NUM 256 + +#define R_MICROBLAZE_NONE 0 +#define R_MICROBLAZE_32 1 +#define R_MICROBLAZE_32_PCREL 2 +#define R_MICROBLAZE_64_PCREL 3 +#define R_MICROBLAZE_32_PCREL_LO 4 +#define R_MICROBLAZE_64 5 +#define R_MICROBLAZE_32_LO 6 +#define R_MICROBLAZE_SRO32 7 +#define R_MICROBLAZE_SRW32 8 +#define R_MICROBLAZE_64_NONE 9 +#define R_MICROBLAZE_32_SYM_OP_SYM 10 +#define R_MICROBLAZE_GNU_VTINHERIT 11 +#define R_MICROBLAZE_GNU_VTENTRY 12 +#define R_MICROBLAZE_GOTPC_64 13 +#define R_MICROBLAZE_GOT_64 14 +#define R_MICROBLAZE_PLT_64 15 +#define R_MICROBLAZE_REL 16 +#define R_MICROBLAZE_JUMP_SLOT 17 +#define R_MICROBLAZE_GLOB_DAT 18 +#define R_MICROBLAZE_GOTOFF_64 19 +#define R_MICROBLAZE_GOTOFF_32 20 +#define R_MICROBLAZE_COPY 21 +#define R_MICROBLAZE_TLS 22 +#define R_MICROBLAZE_TLSGD 23 +#define R_MICROBLAZE_TLSLD 24 +#define R_MICROBLAZE_TLSDTPMOD32 25 +#define R_MICROBLAZE_TLSDTPREL32 26 +#define R_MICROBLAZE_TLSDTPREL64 27 +#define R_MICROBLAZE_TLSGOTTPREL32 28 +#define R_MICROBLAZE_TLSTPREL32 29 + +#define DT_NIOS2_GP 0x70000002 + +#define R_NIOS2_NONE 0 +#define R_NIOS2_S16 1 +#define R_NIOS2_U16 2 +#define R_NIOS2_PCREL16 3 +#define R_NIOS2_CALL26 4 +#define R_NIOS2_IMM5 5 +#define R_NIOS2_CACHE_OPX 6 +#define R_NIOS2_IMM6 7 +#define R_NIOS2_IMM8 8 +#define R_NIOS2_HI16 9 +#define R_NIOS2_LO16 10 +#define R_NIOS2_HIADJ16 11 +#define R_NIOS2_BFD_RELOC_32 12 +#define R_NIOS2_BFD_RELOC_16 13 +#define R_NIOS2_BFD_RELOC_8 14 +#define R_NIOS2_GPREL 15 +#define R_NIOS2_GNU_VTINHERIT 16 +#define R_NIOS2_GNU_VTENTRY 17 +#define R_NIOS2_UJMP 18 +#define R_NIOS2_CJMP 19 +#define R_NIOS2_CALLR 20 +#define R_NIOS2_ALIGN 21 +#define R_NIOS2_GOT16 22 +#define R_NIOS2_CALL16 23 +#define R_NIOS2_GOTOFF_LO 24 +#define R_NIOS2_GOTOFF_HA 25 +#define R_NIOS2_PCREL_LO 26 +#define R_NIOS2_PCREL_HA 27 +#define R_NIOS2_TLS_GD16 28 +#define R_NIOS2_TLS_LDM16 29 +#define R_NIOS2_TLS_LDO16 30 +#define R_NIOS2_TLS_IE16 31 +#define R_NIOS2_TLS_LE16 32 +#define R_NIOS2_TLS_DTPMOD 33 +#define R_NIOS2_TLS_DTPREL 34 +#define R_NIOS2_TLS_TPREL 35 +#define R_NIOS2_COPY 36 +#define R_NIOS2_GLOB_DAT 37 +#define R_NIOS2_JUMP_SLOT 38 +#define R_NIOS2_RELATIVE 39 +#define R_NIOS2_GOTOFF 40 +#define R_NIOS2_CALL26_NOAT 41 +#define R_NIOS2_GOT_LO 42 +#define R_NIOS2_GOT_HA 43 +#define R_NIOS2_CALL_LO 44 +#define R_NIOS2_CALL_HA 45 + +#define R_OR1K_NONE 0 +#define R_OR1K_32 1 +#define R_OR1K_16 2 +#define R_OR1K_8 3 +#define R_OR1K_LO_16_IN_INSN 4 +#define R_OR1K_HI_16_IN_INSN 5 +#define R_OR1K_INSN_REL_26 6 +#define R_OR1K_GNU_VTENTRY 7 +#define R_OR1K_GNU_VTINHERIT 8 +#define R_OR1K_32_PCREL 9 +#define R_OR1K_16_PCREL 10 +#define R_OR1K_8_PCREL 11 +#define R_OR1K_GOTPC_HI16 12 +#define R_OR1K_GOTPC_LO16 13 +#define R_OR1K_GOT16 14 +#define R_OR1K_PLT26 15 +#define R_OR1K_GOTOFF_HI16 16 +#define R_OR1K_GOTOFF_LO16 17 +#define R_OR1K_COPY 18 +#define R_OR1K_GLOB_DAT 19 +#define R_OR1K_JMP_SLOT 20 +#define R_OR1K_RELATIVE 21 +#define R_OR1K_TLS_GD_HI16 22 +#define R_OR1K_TLS_GD_LO16 23 +#define R_OR1K_TLS_LDM_HI16 24 +#define R_OR1K_TLS_LDM_LO16 25 +#define R_OR1K_TLS_LDO_HI16 26 +#define R_OR1K_TLS_LDO_LO16 27 +#define R_OR1K_TLS_IE_HI16 28 +#define R_OR1K_TLS_IE_LO16 29 +#define R_OR1K_TLS_LE_HI16 30 +#define R_OR1K_TLS_LE_LO16 31 +#define R_OR1K_TLS_TPOFF 32 +#define R_OR1K_TLS_DTPOFF 33 +#define R_OR1K_TLS_DTPMOD 34 + +#define R_BPF_NONE 0 +#define R_BPF_MAP_FD 1 + +#define R_RISCV_NONE 0 +#define R_RISCV_32 1 +#define R_RISCV_64 2 +#define R_RISCV_RELATIVE 3 +#define R_RISCV_COPY 4 +#define R_RISCV_JUMP_SLOT 5 +#define R_RISCV_TLS_DTPMOD32 6 +#define R_RISCV_TLS_DTPMOD64 7 +#define R_RISCV_TLS_DTPREL32 8 +#define R_RISCV_TLS_DTPREL64 9 +#define R_RISCV_TLS_TPREL32 10 +#define R_RISCV_TLS_TPREL64 11 + +#define R_RISCV_BRANCH 16 +#define R_RISCV_JAL 17 +#define R_RISCV_CALL 18 +#define R_RISCV_CALL_PLT 19 +#define R_RISCV_GOT_HI20 20 +#define R_RISCV_TLS_GOT_HI20 21 +#define R_RISCV_TLS_GD_HI20 22 +#define R_RISCV_PCREL_HI20 23 +#define R_RISCV_PCREL_LO12_I 24 +#define R_RISCV_PCREL_LO12_S 25 +#define R_RISCV_HI20 26 +#define R_RISCV_LO12_I 27 +#define R_RISCV_LO12_S 28 +#define R_RISCV_TPREL_HI20 29 +#define R_RISCV_TPREL_LO12_I 30 +#define R_RISCV_TPREL_LO12_S 31 +#define R_RISCV_TPREL_ADD 32 +#define R_RISCV_ADD8 33 +#define R_RISCV_ADD16 34 +#define R_RISCV_ADD32 35 +#define R_RISCV_ADD64 36 +#define R_RISCV_SUB8 37 +#define R_RISCV_SUB16 38 +#define R_RISCV_SUB32 39 +#define R_RISCV_SUB64 40 +#define R_RISCV_GNU_VTINHERIT 41 +#define R_RISCV_GNU_VTENTRY 42 +#define R_RISCV_ALIGN 43 +#define R_RISCV_RVC_BRANCH 44 +#define R_RISCV_RVC_JUMP 45 +#define R_RISCV_RVC_LUI 46 +#define R_RISCV_GPREL_I 47 +#define R_RISCV_GPREL_S 48 +#define R_RISCV_TPREL_I 49 +#define R_RISCV_TPREL_S 50 +#define R_RISCV_RELAX 51 +#define R_RISCV_SUB6 52 +#define R_RISCV_SET6 53 +#define R_RISCV_SET8 54 +#define R_RISCV_SET16 55 +#define R_RISCV_SET32 56 +#define R_RISCV_32_PCREL 57 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/vendor/modernc.org/libc/musl/include/endian.h b/vendor/modernc.org/libc/musl/include/endian.h new file mode 100644 index 000000000..172c43203 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/endian.h @@ -0,0 +1,80 @@ +#ifndef _ENDIAN_H +#define _ENDIAN_H + +#include + +#define __NEED_uint16_t +#define __NEED_uint32_t +#define __NEED_uint64_t + +#include + +#define __PDP_ENDIAN 3412 + +#define BIG_ENDIAN __BIG_ENDIAN +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#define PDP_ENDIAN __PDP_ENDIAN +#define BYTE_ORDER __BYTE_ORDER + +static __inline uint16_t __bswap16(uint16_t __x) +{ + return __x<<8 | __x>>8; +} + +static __inline uint32_t __bswap32(uint32_t __x) +{ + return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24; +} + +static __inline uint64_t __bswap64(uint64_t __x) +{ + return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32); +} + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define htobe16(x) __bswap16(x) +#define be16toh(x) __bswap16(x) +#define htobe32(x) __bswap32(x) +#define be32toh(x) __bswap32(x) +#define htobe64(x) __bswap64(x) +#define be64toh(x) __bswap64(x) +#define htole16(x) (uint16_t)(x) +#define le16toh(x) (uint16_t)(x) +#define htole32(x) (uint32_t)(x) +#define le32toh(x) (uint32_t)(x) +#define htole64(x) (uint64_t)(x) +#define le64toh(x) (uint64_t)(x) +#else +#define htobe16(x) (uint16_t)(x) +#define be16toh(x) (uint16_t)(x) +#define htobe32(x) (uint32_t)(x) +#define be32toh(x) (uint32_t)(x) +#define htobe64(x) (uint64_t)(x) +#define be64toh(x) (uint64_t)(x) +#define htole16(x) __bswap16(x) +#define le16toh(x) __bswap16(x) +#define htole32(x) __bswap32(x) +#define le32toh(x) __bswap32(x) +#define htole64(x) __bswap64(x) +#define le64toh(x) __bswap64(x) +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define betoh16(x) __bswap16(x) +#define betoh32(x) __bswap32(x) +#define betoh64(x) __bswap64(x) +#define letoh16(x) (uint16_t)(x) +#define letoh32(x) (uint32_t)(x) +#define letoh64(x) (uint64_t)(x) +#else +#define betoh16(x) (uint16_t)(x) +#define betoh32(x) (uint32_t)(x) +#define betoh64(x) (uint64_t)(x) +#define letoh16(x) __bswap16(x) +#define letoh32(x) __bswap32(x) +#define letoh64(x) __bswap64(x) +#endif +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/err.h b/vendor/modernc.org/libc/musl/include/err.h new file mode 100644 index 000000000..9f5cb6b9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/err.h @@ -0,0 +1,25 @@ +#ifndef _ERR_H +#define _ERR_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void warn(const char *, ...); +void vwarn(const char *, va_list); +void warnx(const char *, ...); +void vwarnx(const char *, va_list); + +_Noreturn void err(int, const char *, ...); +_Noreturn void verr(int, const char *, va_list); +_Noreturn void errx(int, const char *, ...); +_Noreturn void verrx(int, const char *, va_list); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/errno.h b/vendor/modernc.org/libc/musl/include/errno.h new file mode 100644 index 000000000..0361b33ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/errno.h @@ -0,0 +1,27 @@ +#ifndef _ERRNO_H +#define _ERRNO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +#ifdef __GNUC__ +__attribute__((const)) +#endif +int *__errno_location(void); +#define errno (*__errno_location()) + +#ifdef _GNU_SOURCE +extern char *program_invocation_short_name, *program_invocation_name; +#endif + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/vendor/modernc.org/libc/musl/include/fcntl.h b/vendor/modernc.org/libc/musl/include/fcntl.h new file mode 100644 index 000000000..b664cdc44 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/fcntl.h @@ -0,0 +1,216 @@ +#ifndef _FCNTL_H +#define _FCNTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_mode_t + +#ifdef _GNU_SOURCE +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_struct_iovec +#endif + +#include + +#include + +struct flock { + short l_type; + short l_whence; + off_t l_start; + off_t l_len; + pid_t l_pid; +}; + +int creat(const char *, mode_t); +int fcntl(int, int, ...); +int open(const char *, int, ...); +int openat(int, const char *, int, ...); +int posix_fadvise(int, off_t, off_t, int); +int posix_fallocate(int, off_t, off_t); + +#define O_SEARCH O_PATH +#define O_EXEC O_PATH +#define O_TTY_INIT 0 + +#define O_ACCMODE (03|O_SEARCH) +#define O_RDONLY 00 +#define O_WRONLY 01 +#define O_RDWR 02 + +#define F_OFD_GETLK 36 +#define F_OFD_SETLK 37 +#define F_OFD_SETLKW 38 + +#define F_DUPFD_CLOEXEC 1030 + +#define F_RDLCK 0 +#define F_WRLCK 1 +#define F_UNLCK 2 + +#define FD_CLOEXEC 1 + +#define AT_FDCWD (-100) +#define AT_SYMLINK_NOFOLLOW 0x100 +#define AT_REMOVEDIR 0x200 +#define AT_SYMLINK_FOLLOW 0x400 +#define AT_EACCESS 0x200 + +#define POSIX_FADV_NORMAL 0 +#define POSIX_FADV_RANDOM 1 +#define POSIX_FADV_SEQUENTIAL 2 +#define POSIX_FADV_WILLNEED 3 +#ifndef POSIX_FADV_DONTNEED +#define POSIX_FADV_DONTNEED 4 +#define POSIX_FADV_NOREUSE 5 +#endif + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#ifndef S_IRUSR +#define S_ISUID 04000 +#define S_ISGID 02000 +#define S_ISVTX 01000 +#define S_IRUSR 0400 +#define S_IWUSR 0200 +#define S_IXUSR 0100 +#define S_IRWXU 0700 +#define S_IRGRP 0040 +#define S_IWGRP 0020 +#define S_IXGRP 0010 +#define S_IRWXG 0070 +#define S_IROTH 0004 +#define S_IWOTH 0002 +#define S_IXOTH 0001 +#define S_IRWXO 0007 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define AT_NO_AUTOMOUNT 0x800 +#define AT_EMPTY_PATH 0x1000 +#define AT_STATX_SYNC_TYPE 0x6000 +#define AT_STATX_SYNC_AS_STAT 0x0000 +#define AT_STATX_FORCE_SYNC 0x2000 +#define AT_STATX_DONT_SYNC 0x4000 +#define AT_RECURSIVE 0x8000 + +#define FAPPEND O_APPEND +#define FFSYNC O_SYNC +#define FASYNC O_ASYNC +#define FNONBLOCK O_NONBLOCK +#define FNDELAY O_NDELAY + +#define F_OK 0 +#define R_OK 4 +#define W_OK 2 +#define X_OK 1 +#define F_ULOCK 0 +#define F_LOCK 1 +#define F_TLOCK 2 +#define F_TEST 3 + +#define F_SETLEASE 1024 +#define F_GETLEASE 1025 +#define F_NOTIFY 1026 +#define F_CANCELLK 1029 +#define F_SETPIPE_SZ 1031 +#define F_GETPIPE_SZ 1032 +#define F_ADD_SEALS 1033 +#define F_GET_SEALS 1034 + +#define F_SEAL_SEAL 0x0001 +#define F_SEAL_SHRINK 0x0002 +#define F_SEAL_GROW 0x0004 +#define F_SEAL_WRITE 0x0008 +#define F_SEAL_FUTURE_WRITE 0x0010 + +#define F_GET_RW_HINT 1035 +#define F_SET_RW_HINT 1036 +#define F_GET_FILE_RW_HINT 1037 +#define F_SET_FILE_RW_HINT 1038 + +#define RWF_WRITE_LIFE_NOT_SET 0 +#define RWH_WRITE_LIFE_NONE 1 +#define RWH_WRITE_LIFE_SHORT 2 +#define RWH_WRITE_LIFE_MEDIUM 3 +#define RWH_WRITE_LIFE_LONG 4 +#define RWH_WRITE_LIFE_EXTREME 5 + +#define DN_ACCESS 0x00000001 +#define DN_MODIFY 0x00000002 +#define DN_CREATE 0x00000004 +#define DN_DELETE 0x00000008 +#define DN_RENAME 0x00000010 +#define DN_ATTRIB 0x00000020 +#define DN_MULTISHOT 0x80000000 + +int lockf(int, int, off_t); +#endif + +#if defined(_GNU_SOURCE) +#define F_OWNER_TID 0 +#define F_OWNER_PID 1 +#define F_OWNER_PGRP 2 +#define F_OWNER_GID 2 +struct file_handle { + unsigned handle_bytes; + int handle_type; + unsigned char f_handle[]; +}; +struct f_owner_ex { + int type; + pid_t pid; +}; +#define FALLOC_FL_KEEP_SIZE 1 +#define FALLOC_FL_PUNCH_HOLE 2 +#define MAX_HANDLE_SZ 128 +#define SYNC_FILE_RANGE_WAIT_BEFORE 1 +#define SYNC_FILE_RANGE_WRITE 2 +#define SYNC_FILE_RANGE_WAIT_AFTER 4 +#define SPLICE_F_MOVE 1 +#define SPLICE_F_NONBLOCK 2 +#define SPLICE_F_MORE 4 +#define SPLICE_F_GIFT 8 +int fallocate(int, int, off_t, off_t); +#define fallocate64 fallocate +int name_to_handle_at(int, const char *, struct file_handle *, int *, int); +int open_by_handle_at(int, struct file_handle *, int); +ssize_t readahead(int, off_t, size_t); +int sync_file_range(int, off_t, off_t, unsigned); +ssize_t vmsplice(int, const struct iovec *, size_t, unsigned); +ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned); +ssize_t tee(int, int, size_t, unsigned); +#define loff_t off_t +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define F_GETLK64 F_GETLK +#define F_SETLK64 F_SETLK +#define F_SETLKW64 F_SETLKW +#define flock64 flock +#define open64 open +#define openat64 openat +#define creat64 creat +#define lockf64 lockf +#define posix_fadvise64 posix_fadvise +#define posix_fallocate64 posix_fallocate +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/features.h b/vendor/modernc.org/libc/musl/include/features.h new file mode 100644 index 000000000..85cfb72a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/features.h @@ -0,0 +1,40 @@ +#ifndef _FEATURES_H +#define _FEATURES_H + +#if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE) +#define _GNU_SOURCE 1 +#endif + +#if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE) +#define _BSD_SOURCE 1 +#endif + +#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \ + && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \ + && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__) +#define _BSD_SOURCE 1 +#define _XOPEN_SOURCE 700 +#endif + +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + +#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) +#define __inline inline +#elif !defined(__GNUC__) +#define __inline +#endif + +#if __STDC_VERSION__ >= 201112L +#elif defined(__GNUC__) +#define _Noreturn __attribute__((__noreturn__)) +#else +#define _Noreturn +#endif + +#define __REDIR(x,y) __typeof__(x) x __asm__(#y) + +#endif diff --git a/vendor/modernc.org/libc/musl/include/fenv.h b/vendor/modernc.org/libc/musl/include/fenv.h new file mode 100644 index 000000000..05de990c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/fenv.h @@ -0,0 +1,28 @@ +#ifndef _FENV_H +#define _FENV_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +int feclearexcept(int); +int fegetexceptflag(fexcept_t *, int); +int feraiseexcept(int); +int fesetexceptflag(const fexcept_t *, int); +int fetestexcept(int); + +int fegetround(void); +int fesetround(int); + +int fegetenv(fenv_t *); +int feholdexcept(fenv_t *); +int fesetenv(const fenv_t *); +int feupdateenv(const fenv_t *); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/vendor/modernc.org/libc/musl/include/float.h b/vendor/modernc.org/libc/musl/include/float.h new file mode 100644 index 000000000..713aadb90 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/float.h @@ -0,0 +1,52 @@ +#ifndef _FLOAT_H +#define _FLOAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +int __flt_rounds(void); +#define FLT_ROUNDS (__flt_rounds()) + +#define FLT_RADIX 2 + +#define FLT_TRUE_MIN 1.40129846432481707092e-45F +#define FLT_MIN 1.17549435082228750797e-38F +#define FLT_MAX 3.40282346638528859812e+38F +#define FLT_EPSILON 1.1920928955078125e-07F + +#define FLT_MANT_DIG 24 +#define FLT_MIN_EXP (-125) +#define FLT_MAX_EXP 128 +#define FLT_HAS_SUBNORM 1 + +#define FLT_DIG 6 +#define FLT_DECIMAL_DIG 9 +#define FLT_MIN_10_EXP (-37) +#define FLT_MAX_10_EXP 38 + +#define DBL_TRUE_MIN 4.94065645841246544177e-324 +#define DBL_MIN 2.22507385850720138309e-308 +#define DBL_MAX 1.79769313486231570815e+308 +#define DBL_EPSILON 2.22044604925031308085e-16 + +#define DBL_MANT_DIG 53 +#define DBL_MIN_EXP (-1021) +#define DBL_MAX_EXP 1024 +#define DBL_HAS_SUBNORM 1 + +#define DBL_DIG 15 +#define DBL_DECIMAL_DIG 17 +#define DBL_MIN_10_EXP (-307) +#define DBL_MAX_10_EXP 308 + +#define LDBL_HAS_SUBNORM 1 +#define LDBL_DECIMAL_DIG DECIMAL_DIG + +#include + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/fmtmsg.h b/vendor/modernc.org/libc/musl/include/fmtmsg.h new file mode 100644 index 000000000..d944b06f8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/fmtmsg.h @@ -0,0 +1,47 @@ +#ifndef _FMTMSG_H +#define _FMTMSG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define MM_HARD 1 +#define MM_SOFT 2 +#define MM_FIRM 4 + +#define MM_APPL 8 +#define MM_UTIL 16 +#define MM_OPSYS 32 + +#define MM_RECOVER 64 +#define MM_NRECOV 128 + +#define MM_PRINT 256 +#define MM_CONSOLE 512 + +#define MM_NULLMC 0L + +#define MM_HALT 1 +#define MM_ERROR 2 +#define MM_WARNING 3 +#define MM_INFO 4 +#define MM_NOSEV 0 + +#define MM_OK 0 +#define MM_NOTOK (-1) +#define MM_NOMSG 1 +#define MM_NOCON 4 + +#define MM_NULLLBL ((char*)0) +#define MM_NULLTXT ((char*)0) +#define MM_NULLACT ((char*)0) +#define MM_NULLTAG ((char*)0) +#define MM_NULLSEV 0 + +int fmtmsg(long, const char *, int, const char *, const char *, const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/fnmatch.h b/vendor/modernc.org/libc/musl/include/fnmatch.h new file mode 100644 index 000000000..f9593217f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/fnmatch.h @@ -0,0 +1,24 @@ +#ifndef _FNMATCH_H +#define _FNMATCH_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define FNM_PATHNAME 0x1 +#define FNM_NOESCAPE 0x2 +#define FNM_PERIOD 0x4 +#define FNM_LEADING_DIR 0x8 +#define FNM_CASEFOLD 0x10 +#define FNM_FILE_NAME FNM_PATHNAME + +#define FNM_NOMATCH 1 +#define FNM_NOSYS (-1) + +int fnmatch(const char *, const char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/ftw.h b/vendor/modernc.org/libc/musl/include/ftw.h new file mode 100644 index 000000000..b15c062a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ftw.h @@ -0,0 +1,41 @@ +#ifndef _FTW_H +#define _FTW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define FTW_F 1 +#define FTW_D 2 +#define FTW_DNR 3 +#define FTW_NS 4 +#define FTW_SL 5 +#define FTW_DP 6 +#define FTW_SLN 7 + +#define FTW_PHYS 1 +#define FTW_MOUNT 2 +#define FTW_CHDIR 4 +#define FTW_DEPTH 8 + +struct FTW { + int base; + int level; +}; + +int ftw(const char *, int (*)(const char *, const struct stat *, int), int); +int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int); + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define ftw64 ftw +#define nftw64 nftw +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/getopt.h b/vendor/modernc.org/libc/musl/include/getopt.h new file mode 100644 index 000000000..35cbd358b --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/getopt.h @@ -0,0 +1,30 @@ +#ifndef _GETOPT_H +#define _GETOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +int getopt(int, char * const [], const char *); +extern char *optarg; +extern int optind, opterr, optopt, optreset; + +struct option { + const char *name; + int has_arg; + int *flag; + int val; +}; + +int getopt_long(int, char *const *, const char *, const struct option *, int *); +int getopt_long_only(int, char *const *, const char *, const struct option *, int *); + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/glob.h b/vendor/modernc.org/libc/musl/include/glob.h new file mode 100644 index 000000000..4a562a206 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/glob.h @@ -0,0 +1,52 @@ +#ifndef _GLOB_H +#define _GLOB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t + +#include + +typedef struct { + size_t gl_pathc; + char **gl_pathv; + size_t gl_offs; + int __dummy1; + void *__dummy2[5]; +} glob_t; + +int glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict); +void globfree(glob_t *); + +#define GLOB_ERR 0x01 +#define GLOB_MARK 0x02 +#define GLOB_NOSORT 0x04 +#define GLOB_DOOFFS 0x08 +#define GLOB_NOCHECK 0x10 +#define GLOB_APPEND 0x20 +#define GLOB_NOESCAPE 0x40 +#define GLOB_PERIOD 0x80 + +#define GLOB_TILDE 0x1000 +#define GLOB_TILDE_CHECK 0x4000 + +#define GLOB_NOSPACE 1 +#define GLOB_ABORTED 2 +#define GLOB_NOMATCH 3 +#define GLOB_NOSYS 4 + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define glob64 glob +#define globfree64 globfree +#define glob64_t glob_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/grp.h b/vendor/modernc.org/libc/musl/include/grp.h new file mode 100644 index 000000000..27e8c5e6c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/grp.h @@ -0,0 +1,53 @@ +#ifndef _GRP_H +#define _GRP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_gid_t + +#ifdef _GNU_SOURCE +#define __NEED_FILE +#endif + +#include + +struct group { + char *gr_name; + char *gr_passwd; + gid_t gr_gid; + char **gr_mem; +}; + +struct group *getgrgid(gid_t); +struct group *getgrnam(const char *); + +int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **); +int getgrnam_r(const char *, struct group *, char *, size_t, struct group **); + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +struct group *getgrent(void); +void endgrent(void); +void setgrent(void); +#endif + +#ifdef _GNU_SOURCE +struct group *fgetgrent(FILE *); +int putgrent(const struct group *, FILE *); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int getgrouplist(const char *, gid_t, gid_t *, int *); +int setgroups(size_t, const gid_t *); +int initgroups(const char *, gid_t); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/iconv.h b/vendor/modernc.org/libc/musl/include/iconv.h new file mode 100644 index 000000000..ebe9bfda3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/iconv.h @@ -0,0 +1,24 @@ +#ifndef _ICONV_H +#define _ICONV_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t + +#include + +typedef void *iconv_t; + +iconv_t iconv_open(const char *, const char *); +size_t iconv(iconv_t, char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict); +int iconv_close(iconv_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/ifaddrs.h b/vendor/modernc.org/libc/musl/include/ifaddrs.h new file mode 100644 index 000000000..c0328a8ea --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ifaddrs.h @@ -0,0 +1,35 @@ +#ifndef _IFADDRS_H +#define _IFADDRS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +struct ifaddrs { + struct ifaddrs *ifa_next; + char *ifa_name; + unsigned ifa_flags; + struct sockaddr *ifa_addr; + struct sockaddr *ifa_netmask; + union { + struct sockaddr *ifu_broadaddr; + struct sockaddr *ifu_dstaddr; + } ifa_ifu; + void *ifa_data; +}; +#define ifa_broadaddr ifa_ifu.ifu_broadaddr +#define ifa_dstaddr ifa_ifu.ifu_dstaddr + +void freeifaddrs(struct ifaddrs *); +int getifaddrs(struct ifaddrs **); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/vendor/modernc.org/libc/musl/include/inttypes.h b/vendor/modernc.org/libc/musl/include/inttypes.h new file mode 100644 index 000000000..61dcb7273 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/inttypes.h @@ -0,0 +1,229 @@ +#ifndef _INTTYPES_H +#define _INTTYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define __NEED_wchar_t +#include + +typedef struct { intmax_t quot, rem; } imaxdiv_t; + +intmax_t imaxabs(intmax_t); +imaxdiv_t imaxdiv(intmax_t, intmax_t); + +intmax_t strtoimax(const char *__restrict, char **__restrict, int); +uintmax_t strtoumax(const char *__restrict, char **__restrict, int); + +intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int); +uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int); + +#if UINTPTR_MAX == UINT64_MAX +#define __PRI64 "l" +#define __PRIPTR "l" +#else +#define __PRI64 "ll" +#define __PRIPTR "" +#endif + +#define PRId8 "d" +#define PRId16 "d" +#define PRId32 "d" +#define PRId64 __PRI64 "d" + +#define PRIdLEAST8 "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "d" +#define PRIdLEAST64 __PRI64 "d" + +#define PRIdFAST8 "d" +#define PRIdFAST16 "d" +#define PRIdFAST32 "d" +#define PRIdFAST64 __PRI64 "d" + +#define PRIi8 "i" +#define PRIi16 "i" +#define PRIi32 "i" +#define PRIi64 __PRI64 "i" + +#define PRIiLEAST8 "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "i" +#define PRIiLEAST64 __PRI64 "i" + +#define PRIiFAST8 "i" +#define PRIiFAST16 "i" +#define PRIiFAST32 "i" +#define PRIiFAST64 __PRI64 "i" + +#define PRIo8 "o" +#define PRIo16 "o" +#define PRIo32 "o" +#define PRIo64 __PRI64 "o" + +#define PRIoLEAST8 "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "o" +#define PRIoLEAST64 __PRI64 "o" + +#define PRIoFAST8 "o" +#define PRIoFAST16 "o" +#define PRIoFAST32 "o" +#define PRIoFAST64 __PRI64 "o" + +#define PRIu8 "u" +#define PRIu16 "u" +#define PRIu32 "u" +#define PRIu64 __PRI64 "u" + +#define PRIuLEAST8 "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "u" +#define PRIuLEAST64 __PRI64 "u" + +#define PRIuFAST8 "u" +#define PRIuFAST16 "u" +#define PRIuFAST32 "u" +#define PRIuFAST64 __PRI64 "u" + +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "x" +#define PRIx64 __PRI64 "x" + +#define PRIxLEAST8 "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "x" +#define PRIxLEAST64 __PRI64 "x" + +#define PRIxFAST8 "x" +#define PRIxFAST16 "x" +#define PRIxFAST32 "x" +#define PRIxFAST64 __PRI64 "x" + +#define PRIX8 "X" +#define PRIX16 "X" +#define PRIX32 "X" +#define PRIX64 __PRI64 "X" + +#define PRIXLEAST8 "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "X" +#define PRIXLEAST64 __PRI64 "X" + +#define PRIXFAST8 "X" +#define PRIXFAST16 "X" +#define PRIXFAST32 "X" +#define PRIXFAST64 __PRI64 "X" + +#define PRIdMAX __PRI64 "d" +#define PRIiMAX __PRI64 "i" +#define PRIoMAX __PRI64 "o" +#define PRIuMAX __PRI64 "u" +#define PRIxMAX __PRI64 "x" +#define PRIXMAX __PRI64 "X" + +#define PRIdPTR __PRIPTR "d" +#define PRIiPTR __PRIPTR "i" +#define PRIoPTR __PRIPTR "o" +#define PRIuPTR __PRIPTR "u" +#define PRIxPTR __PRIPTR "x" +#define PRIXPTR __PRIPTR "X" + +#define SCNd8 "hhd" +#define SCNd16 "hd" +#define SCNd32 "d" +#define SCNd64 __PRI64 "d" + +#define SCNdLEAST8 "hhd" +#define SCNdLEAST16 "hd" +#define SCNdLEAST32 "d" +#define SCNdLEAST64 __PRI64 "d" + +#define SCNdFAST8 "hhd" +#define SCNdFAST16 "d" +#define SCNdFAST32 "d" +#define SCNdFAST64 __PRI64 "d" + +#define SCNi8 "hhi" +#define SCNi16 "hi" +#define SCNi32 "i" +#define SCNi64 __PRI64 "i" + +#define SCNiLEAST8 "hhi" +#define SCNiLEAST16 "hi" +#define SCNiLEAST32 "i" +#define SCNiLEAST64 __PRI64 "i" + +#define SCNiFAST8 "hhi" +#define SCNiFAST16 "i" +#define SCNiFAST32 "i" +#define SCNiFAST64 __PRI64 "i" + +#define SCNu8 "hhu" +#define SCNu16 "hu" +#define SCNu32 "u" +#define SCNu64 __PRI64 "u" + +#define SCNuLEAST8 "hhu" +#define SCNuLEAST16 "hu" +#define SCNuLEAST32 "u" +#define SCNuLEAST64 __PRI64 "u" + +#define SCNuFAST8 "hhu" +#define SCNuFAST16 "u" +#define SCNuFAST32 "u" +#define SCNuFAST64 __PRI64 "u" + +#define SCNo8 "hho" +#define SCNo16 "ho" +#define SCNo32 "o" +#define SCNo64 __PRI64 "o" + +#define SCNoLEAST8 "hho" +#define SCNoLEAST16 "ho" +#define SCNoLEAST32 "o" +#define SCNoLEAST64 __PRI64 "o" + +#define SCNoFAST8 "hho" +#define SCNoFAST16 "o" +#define SCNoFAST32 "o" +#define SCNoFAST64 __PRI64 "o" + +#define SCNx8 "hhx" +#define SCNx16 "hx" +#define SCNx32 "x" +#define SCNx64 __PRI64 "x" + +#define SCNxLEAST8 "hhx" +#define SCNxLEAST16 "hx" +#define SCNxLEAST32 "x" +#define SCNxLEAST64 __PRI64 "x" + +#define SCNxFAST8 "hhx" +#define SCNxFAST16 "x" +#define SCNxFAST32 "x" +#define SCNxFAST64 __PRI64 "x" + +#define SCNdMAX __PRI64 "d" +#define SCNiMAX __PRI64 "i" +#define SCNoMAX __PRI64 "o" +#define SCNuMAX __PRI64 "u" +#define SCNxMAX __PRI64 "x" + +#define SCNdPTR __PRIPTR "d" +#define SCNiPTR __PRIPTR "i" +#define SCNoPTR __PRIPTR "o" +#define SCNuPTR __PRIPTR "u" +#define SCNxPTR __PRIPTR "x" + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/vendor/modernc.org/libc/musl/include/iso646.h b/vendor/modernc.org/libc/musl/include/iso646.h new file mode 100644 index 000000000..88ff53d7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/iso646.h @@ -0,0 +1,20 @@ +#ifndef _ISO646_H +#define _ISO646_H + +#ifndef __cplusplus + +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= + +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/langinfo.h b/vendor/modernc.org/libc/musl/include/langinfo.h new file mode 100644 index 000000000..519c06129 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/langinfo.h @@ -0,0 +1,98 @@ +#ifndef _LANGINFO_H +#define _LANGINFO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define __NEED_locale_t + +#include + +#define ABDAY_1 0x20000 +#define ABDAY_2 0x20001 +#define ABDAY_3 0x20002 +#define ABDAY_4 0x20003 +#define ABDAY_5 0x20004 +#define ABDAY_6 0x20005 +#define ABDAY_7 0x20006 + +#define DAY_1 0x20007 +#define DAY_2 0x20008 +#define DAY_3 0x20009 +#define DAY_4 0x2000A +#define DAY_5 0x2000B +#define DAY_6 0x2000C +#define DAY_7 0x2000D + +#define ABMON_1 0x2000E +#define ABMON_2 0x2000F +#define ABMON_3 0x20010 +#define ABMON_4 0x20011 +#define ABMON_5 0x20012 +#define ABMON_6 0x20013 +#define ABMON_7 0x20014 +#define ABMON_8 0x20015 +#define ABMON_9 0x20016 +#define ABMON_10 0x20017 +#define ABMON_11 0x20018 +#define ABMON_12 0x20019 + +#define MON_1 0x2001A +#define MON_2 0x2001B +#define MON_3 0x2001C +#define MON_4 0x2001D +#define MON_5 0x2001E +#define MON_6 0x2001F +#define MON_7 0x20020 +#define MON_8 0x20021 +#define MON_9 0x20022 +#define MON_10 0x20023 +#define MON_11 0x20024 +#define MON_12 0x20025 + +#define AM_STR 0x20026 +#define PM_STR 0x20027 + +#define D_T_FMT 0x20028 +#define D_FMT 0x20029 +#define T_FMT 0x2002A +#define T_FMT_AMPM 0x2002B + +#define ERA 0x2002C +#define ERA_D_FMT 0x2002E +#define ALT_DIGITS 0x2002F +#define ERA_D_T_FMT 0x20030 +#define ERA_T_FMT 0x20031 + +#define CODESET 14 + +#define CRNCYSTR 0x4000F + +#define RADIXCHAR 0x10000 +#define THOUSEP 0x10001 +#define YESEXPR 0x50000 +#define NOEXPR 0x50001 + +#define _NL_LOCALE_NAME(cat) (((cat)<<16) | 0xffff) + +#if defined(_GNU_SOURCE) +#define NL_LOCALE_NAME(cat) _NL_LOCALE_NAME(cat) +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define YESSTR 0x50002 +#define NOSTR 0x50003 +#endif + +char *nl_langinfo(nl_item); +char *nl_langinfo_l(nl_item, locale_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/lastlog.h b/vendor/modernc.org/libc/musl/include/lastlog.h new file mode 100644 index 000000000..5fa45ee47 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/lastlog.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/libgen.h b/vendor/modernc.org/libc/musl/include/libgen.h new file mode 100644 index 000000000..7c7fd9c6d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/libgen.h @@ -0,0 +1,15 @@ +#ifndef _LIBGEN_H +#define _LIBGEN_H + +#ifdef __cplusplus +extern "C" { +#endif + +char *dirname(char *); +char *basename(char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/libintl.h b/vendor/modernc.org/libc/musl/include/libintl.h new file mode 100644 index 000000000..6a707bf0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/libintl.h @@ -0,0 +1,33 @@ +#ifndef _LIBINTL_H +#define _LIBINTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __USE_GNU_GETTEXT 1 +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1) + +#if __GNUC__ >= 3 +#define __fa(n) __attribute__ ((__format_arg__ (n))) +#else +#define __fa(n) +#endif + +char *gettext(const char *) __fa(1); +char *dgettext(const char *, const char *) __fa(2); +char *dcgettext(const char *, const char *, int) __fa(2); +char *ngettext(const char *, const char *, unsigned long) __fa(1) __fa(2); +char *dngettext(const char *, const char *, const char *, unsigned long) __fa(2) __fa(3); +char *dcngettext(const char *, const char *, const char *, unsigned long, int) __fa(2) __fa(3); +char *textdomain(const char *); +char *bindtextdomain (const char *, const char *); +char *bind_textdomain_codeset(const char *, const char *); + +#undef __fa + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/limits.h b/vendor/modernc.org/libc/musl/include/limits.h new file mode 100644 index 000000000..53a27b9de --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/limits.h @@ -0,0 +1,166 @@ +#ifndef _LIMITS_H +#define _LIMITS_H + +#include + +#include /* __LONG_MAX */ + +/* Support signed or unsigned plain-char */ + +#if '\xff' > 0 +#define CHAR_MIN 0 +#define CHAR_MAX 255 +#else +#define CHAR_MIN (-128) +#define CHAR_MAX 127 +#endif + +#define CHAR_BIT 8 +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 +#define SHRT_MIN (-1-0x7fff) +#define SHRT_MAX 0x7fff +#define USHRT_MAX 0xffff +#define INT_MIN (-1-0x7fffffff) +#define INT_MAX 0x7fffffff +#define UINT_MAX 0xffffffffU +#define LONG_MIN (-LONG_MAX-1) +#define LONG_MAX __LONG_MAX +#define ULONG_MAX (2UL*LONG_MAX+1) +#define LLONG_MIN (-LLONG_MAX-1) +#define LLONG_MAX 0x7fffffffffffffffLL +#define ULLONG_MAX (2ULL*LLONG_MAX+1) + +#define MB_LEN_MAX 4 + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#include + +#define PIPE_BUF 4096 +#define FILESIZEBITS 64 +#ifndef NAME_MAX +#define NAME_MAX 255 +#endif +#define PATH_MAX 4096 +#define NGROUPS_MAX 32 +#define ARG_MAX 131072 +#define IOV_MAX 1024 +#define SYMLOOP_MAX 40 +#define WORD_BIT 32 +#define SSIZE_MAX LONG_MAX +#define TZNAME_MAX 6 +#define TTY_NAME_MAX 32 +#define HOST_NAME_MAX 255 + +#if LONG_MAX == 0x7fffffffL +#define LONG_BIT 32 +#else +#define LONG_BIT 64 +#endif + +/* Implementation choices... */ + +#define PTHREAD_KEYS_MAX 128 +#define PTHREAD_STACK_MIN 2048 +#define PTHREAD_DESTRUCTOR_ITERATIONS 4 +#define SEM_VALUE_MAX 0x7fffffff +#define SEM_NSEMS_MAX 256 +#define DELAYTIMER_MAX 0x7fffffff +#define MQ_PRIO_MAX 32768 +#define LOGIN_NAME_MAX 256 + +/* Arbitrary numbers... */ + +#define BC_BASE_MAX 99 +#define BC_DIM_MAX 2048 +#define BC_SCALE_MAX 99 +#define BC_STRING_MAX 1000 +#define CHARCLASS_NAME_MAX 14 +#define COLL_WEIGHTS_MAX 2 +#define EXPR_NEST_MAX 32 +#define LINE_MAX 4096 +#define RE_DUP_MAX 255 + +#define NL_ARGMAX 9 +#define NL_MSGMAX 32767 +#define NL_SETMAX 255 +#define NL_TEXTMAX 2048 + +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) + +#ifdef PAGESIZE +#define PAGE_SIZE PAGESIZE +#endif +#define NZERO 20 +#define NL_LANGMAX 32 + +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) + +#define NL_NMAX 16 + +#endif + +/* POSIX/SUS requirements follow. These numbers come directly + * from SUS and have nothing to do with the host system. */ + +#define _POSIX_AIO_LISTIO_MAX 2 +#define _POSIX_AIO_MAX 1 +#define _POSIX_ARG_MAX 4096 +#define _POSIX_CHILD_MAX 25 +#define _POSIX_CLOCKRES_MIN 20000000 +#define _POSIX_DELAYTIMER_MAX 32 +#define _POSIX_HOST_NAME_MAX 255 +#define _POSIX_LINK_MAX 8 +#define _POSIX_LOGIN_NAME_MAX 9 +#define _POSIX_MAX_CANON 255 +#define _POSIX_MAX_INPUT 255 +#define _POSIX_MQ_OPEN_MAX 8 +#define _POSIX_MQ_PRIO_MAX 32 +#define _POSIX_NAME_MAX 14 +#define _POSIX_NGROUPS_MAX 8 +#define _POSIX_OPEN_MAX 20 +#define _POSIX_PATH_MAX 256 +#define _POSIX_PIPE_BUF 512 +#define _POSIX_RE_DUP_MAX 255 +#define _POSIX_RTSIG_MAX 8 +#define _POSIX_SEM_NSEMS_MAX 256 +#define _POSIX_SEM_VALUE_MAX 32767 +#define _POSIX_SIGQUEUE_MAX 32 +#define _POSIX_SSIZE_MAX 32767 +#define _POSIX_STREAM_MAX 8 +#define _POSIX_SS_REPL_MAX 4 +#define _POSIX_SYMLINK_MAX 255 +#define _POSIX_SYMLOOP_MAX 8 +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +#define _POSIX_THREAD_KEYS_MAX 128 +#define _POSIX_THREAD_THREADS_MAX 64 +#define _POSIX_TIMER_MAX 32 +#define _POSIX_TRACE_EVENT_NAME_MAX 30 +#define _POSIX_TRACE_NAME_MAX 8 +#define _POSIX_TRACE_SYS_MAX 8 +#define _POSIX_TRACE_USER_EVENT_MAX 32 +#define _POSIX_TTY_NAME_MAX 9 +#define _POSIX_TZNAME_MAX 6 +#define _POSIX2_BC_BASE_MAX 99 +#define _POSIX2_BC_DIM_MAX 2048 +#define _POSIX2_BC_SCALE_MAX 99 +#define _POSIX2_BC_STRING_MAX 1000 +#define _POSIX2_CHARCLASS_NAME_MAX 14 +#define _POSIX2_COLL_WEIGHTS_MAX 2 +#define _POSIX2_EXPR_NEST_MAX 32 +#define _POSIX2_LINE_MAX 2048 +#define _POSIX2_RE_DUP_MAX 255 + +#define _XOPEN_IOV_MAX 16 +#define _XOPEN_NAME_MAX 255 +#define _XOPEN_PATH_MAX 1024 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/link.h b/vendor/modernc.org/libc/musl/include/link.h new file mode 100644 index 000000000..815018594 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/link.h @@ -0,0 +1,53 @@ +#ifndef _LINK_H +#define _LINK_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#define __NEED_size_t +#define __NEED_uint32_t +#include + +#if UINTPTR_MAX > 0xffffffff +#define ElfW(type) Elf64_ ## type +#else +#define ElfW(type) Elf32_ ## type +#endif + +#include + +struct dl_phdr_info { + ElfW(Addr) dlpi_addr; + const char *dlpi_name; + const ElfW(Phdr) *dlpi_phdr; + ElfW(Half) dlpi_phnum; + unsigned long long int dlpi_adds; + unsigned long long int dlpi_subs; + size_t dlpi_tls_modid; + void *dlpi_tls_data; +}; + +struct link_map { + ElfW(Addr) l_addr; + char *l_name; + ElfW(Dyn) *l_ld; + struct link_map *l_next, *l_prev; +}; + +struct r_debug { + int r_version; + struct link_map *r_map; + ElfW(Addr) r_brk; + enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state; + ElfW(Addr) r_ldbase; +}; + +int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/locale.h b/vendor/modernc.org/libc/musl/include/locale.h new file mode 100644 index 000000000..ce384381c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/locale.h @@ -0,0 +1,86 @@ +#ifndef _LOCALE_H +#define _LOCALE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#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 + +struct lconv { + char *decimal_point; + char *thousands_sep; + char *grouping; + + char *int_curr_symbol; + char *currency_symbol; + char *mon_decimal_point; + char *mon_thousands_sep; + char *mon_grouping; + char *positive_sign; + char *negative_sign; + char int_frac_digits; + char frac_digits; + char p_cs_precedes; + char p_sep_by_space; + char n_cs_precedes; + char n_sep_by_space; + char p_sign_posn; + char n_sign_posn; + char int_p_cs_precedes; + char int_p_sep_by_space; + char int_n_cs_precedes; + char int_n_sep_by_space; + char int_p_sign_posn; + char int_n_sign_posn; +}; + + +char *setlocale (int, const char *); +struct lconv *localeconv(void); + + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#define __NEED_locale_t + +#include + +#define LC_GLOBAL_LOCALE ((locale_t)-1) + +#define LC_CTYPE_MASK (1< + +void *malloc (size_t); +void *calloc (size_t, size_t); +void *realloc (void *, size_t); +void free (void *); +void *valloc (size_t); +void *memalign(size_t, size_t); + +size_t malloc_usable_size(void *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/math.h b/vendor/modernc.org/libc/musl/include/math.h new file mode 100644 index 000000000..14f28ec8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/math.h @@ -0,0 +1,442 @@ +#ifndef _MATH_H +#define _MATH_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_float_t +#define __NEED_double_t +#include + +#if 100*__GNUC__+__GNUC_MINOR__ >= 303 +#define NAN __builtin_nanf("") +#define INFINITY __builtin_inff() +#else +#define NAN (0.0f/0.0f) +#define INFINITY 1e5000f +#endif + +#define HUGE_VALF INFINITY +#define HUGE_VAL ((double)INFINITY) +#define HUGE_VALL ((long double)INFINITY) + +#define MATH_ERRNO 1 +#define MATH_ERREXCEPT 2 +#define math_errhandling 2 + +#define FP_ILOGBNAN (-1-0x7fffffff) +#define FP_ILOGB0 FP_ILOGBNAN + +#define FP_NAN 0 +#define FP_INFINITE 1 +#define FP_ZERO 2 +#define FP_SUBNORMAL 3 +#define FP_NORMAL 4 + +#ifdef __FP_FAST_FMA +#define FP_FAST_FMA 1 +#endif + +#ifdef __FP_FAST_FMAF +#define FP_FAST_FMAF 1 +#endif + +#ifdef __FP_FAST_FMAL +#define FP_FAST_FMAL 1 +#endif + +int __fpclassify(double); +int __fpclassifyf(float); +int __fpclassifyl(long double); + +static __inline unsigned __FLOAT_BITS(float __f) +{ + union {float __f; unsigned __i;} __u; + __u.__f = __f; + return __u.__i; +} +static __inline unsigned long long __DOUBLE_BITS(double __f) +{ + union {double __f; unsigned long long __i;} __u; + __u.__f = __f; + return __u.__i; +} + +#define fpclassify(x) ( \ + sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \ + sizeof(x) == sizeof(double) ? __fpclassify(x) : \ + __fpclassifyl(x) ) + +#define isinf(x) ( \ + sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000 : \ + sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) == 0x7ffULL<<52 : \ + __fpclassifyl(x) == FP_INFINITE) + +#define isnan(x) ( \ + sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000 : \ + sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) > 0x7ffULL<<52 : \ + __fpclassifyl(x) == FP_NAN) + +#define isnormal(x) ( \ + sizeof(x) == sizeof(float) ? ((__FLOAT_BITS(x)+0x00800000) & 0x7fffffff) >= 0x01000000 : \ + sizeof(x) == sizeof(double) ? ((__DOUBLE_BITS(x)+(1ULL<<52)) & -1ULL>>1) >= 1ULL<<53 : \ + __fpclassifyl(x) == FP_NORMAL) + +#define isfinite(x) ( \ + sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000 : \ + sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) < 0x7ffULL<<52 : \ + __fpclassifyl(x) > FP_INFINITE) + +int __signbit(double); +int __signbitf(float); +int __signbitl(long double); + +#define signbit(x) ( \ + sizeof(x) == sizeof(float) ? (int)(__FLOAT_BITS(x)>>31) : \ + sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x)>>63) : \ + __signbitl(x) ) + +#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y))) + +#define __ISREL_DEF(rel, op, type) \ +static __inline int __is##rel(type __x, type __y) \ +{ return !isunordered(__x,__y) && __x op __y; } + +__ISREL_DEF(lessf, <, float_t) +__ISREL_DEF(less, <, double_t) +__ISREL_DEF(lessl, <, long double) +__ISREL_DEF(lessequalf, <=, float_t) +__ISREL_DEF(lessequal, <=, double_t) +__ISREL_DEF(lessequall, <=, long double) +__ISREL_DEF(lessgreaterf, !=, float_t) +__ISREL_DEF(lessgreater, !=, double_t) +__ISREL_DEF(lessgreaterl, !=, long double) +__ISREL_DEF(greaterf, >, float_t) +__ISREL_DEF(greater, >, double_t) +__ISREL_DEF(greaterl, >, long double) +__ISREL_DEF(greaterequalf, >=, float_t) +__ISREL_DEF(greaterequal, >=, double_t) +__ISREL_DEF(greaterequall, >=, long double) + +#define __tg_pred_2(x, y, p) ( \ + sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \ + sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \ + p##l(x, y) ) + +#define isless(x, y) __tg_pred_2(x, y, __isless) +#define islessequal(x, y) __tg_pred_2(x, y, __islessequal) +#define islessgreater(x, y) __tg_pred_2(x, y, __islessgreater) +#define isgreater(x, y) __tg_pred_2(x, y, __isgreater) +#define isgreaterequal(x, y) __tg_pred_2(x, y, __isgreaterequal) + +double acos(double); +float acosf(float); +long double acosl(long double); + +double acosh(double); +float acoshf(float); +long double acoshl(long double); + +double asin(double); +float asinf(float); +long double asinl(long double); + +double asinh(double); +float asinhf(float); +long double asinhl(long double); + +double atan(double); +float atanf(float); +long double atanl(long double); + +double atan2(double, double); +float atan2f(float, float); +long double atan2l(long double, long double); + +double atanh(double); +float atanhf(float); +long double atanhl(long double); + +double cbrt(double); +float cbrtf(float); +long double cbrtl(long double); + +double ceil(double); +float ceilf(float); +long double ceill(long double); + +double copysign(double, double); +float copysignf(float, float); +long double copysignl(long double, long double); + +double cos(double); +float cosf(float); +long double cosl(long double); + +double cosh(double); +float coshf(float); +long double coshl(long double); + +double erf(double); +float erff(float); +long double erfl(long double); + +double erfc(double); +float erfcf(float); +long double erfcl(long double); + +double exp(double); +float expf(float); +long double expl(long double); + +double exp2(double); +float exp2f(float); +long double exp2l(long double); + +double expm1(double); +float expm1f(float); +long double expm1l(long double); + +double fabs(double); +float fabsf(float); +long double fabsl(long double); + +double fdim(double, double); +float fdimf(float, float); +long double fdiml(long double, long double); + +double floor(double); +float floorf(float); +long double floorl(long double); + +double fma(double, double, double); +float fmaf(float, float, float); +long double fmal(long double, long double, long double); + +double fmax(double, double); +float fmaxf(float, float); +long double fmaxl(long double, long double); + +double fmin(double, double); +float fminf(float, float); +long double fminl(long double, long double); + +double fmod(double, double); +float fmodf(float, float); +long double fmodl(long double, long double); + +double frexp(double, int *); +float frexpf(float, int *); +long double frexpl(long double, int *); + +double hypot(double, double); +float hypotf(float, float); +long double hypotl(long double, long double); + +int ilogb(double); +int ilogbf(float); +int ilogbl(long double); + +double ldexp(double, int); +float ldexpf(float, int); +long double ldexpl(long double, int); + +double lgamma(double); +float lgammaf(float); +long double lgammal(long double); + +long long llrint(double); +long long llrintf(float); +long long llrintl(long double); + +long long llround(double); +long long llroundf(float); +long long llroundl(long double); + +double log(double); +float logf(float); +long double logl(long double); + +double log10(double); +float log10f(float); +long double log10l(long double); + +double log1p(double); +float log1pf(float); +long double log1pl(long double); + +double log2(double); +float log2f(float); +long double log2l(long double); + +double logb(double); +float logbf(float); +long double logbl(long double); + +long lrint(double); +long lrintf(float); +long lrintl(long double); + +long lround(double); +long lroundf(float); +long lroundl(long double); + +double modf(double, double *); +float modff(float, float *); +long double modfl(long double, long double *); + +double nan(const char *); +float nanf(const char *); +long double nanl(const char *); + +double nearbyint(double); +float nearbyintf(float); +long double nearbyintl(long double); + +double nextafter(double, double); +float nextafterf(float, float); +long double nextafterl(long double, long double); + +double nexttoward(double, long double); +float nexttowardf(float, long double); +long double nexttowardl(long double, long double); + +double pow(double, double); +float powf(float, float); +long double powl(long double, long double); + +double remainder(double, double); +float remainderf(float, float); +long double remainderl(long double, long double); + +double remquo(double, double, int *); +float remquof(float, float, int *); +long double remquol(long double, long double, int *); + +double rint(double); +float rintf(float); +long double rintl(long double); + +double round(double); +float roundf(float); +long double roundl(long double); + +double scalbln(double, long); +float scalblnf(float, long); +long double scalblnl(long double, long); + +double scalbn(double, int); +float scalbnf(float, int); +long double scalbnl(long double, int); + +double sin(double); +float sinf(float); +long double sinl(long double); + +double sinh(double); +float sinhf(float); +long double sinhl(long double); + +double sqrt(double); +float sqrtf(float); +long double sqrtl(long double); + +double tan(double); +float tanf(float); +long double tanl(long double); + +double tanh(double); +float tanhf(float); +long double tanhl(long double); + +double tgamma(double); +float tgammaf(float); +long double tgammal(long double); + +double trunc(double); +float truncf(float); +long double truncl(long double); + + +#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) +#undef MAXFLOAT +#define MAXFLOAT 3.40282346638528859812e+38F +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define M_E 2.7182818284590452354 /* e */ +#define M_LOG2E 1.4426950408889634074 /* log_2 e */ +#define M_LOG10E 0.43429448190325182765 /* log_10 e */ +#define M_LN2 0.69314718055994530942 /* log_e 2 */ +#define M_LN10 2.30258509299404568402 /* log_e 10 */ +#define M_PI 3.14159265358979323846 /* pi */ +#define M_PI_2 1.57079632679489661923 /* pi/2 */ +#define M_PI_4 0.78539816339744830962 /* pi/4 */ +#define M_1_PI 0.31830988618379067154 /* 1/pi */ +#define M_2_PI 0.63661977236758134308 /* 2/pi */ +#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ +#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ +#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ + +extern int signgam; + +double j0(double); +double j1(double); +double jn(int, double); + +double y0(double); +double y1(double); +double yn(int, double); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define HUGE 3.40282346638528859812e+38F + +double drem(double, double); +float dremf(float, float); + +int finite(double); +int finitef(float); + +double scalb(double, double); +float scalbf(float, float); + +double significand(double); +float significandf(float); + +double lgamma_r(double, int*); +float lgammaf_r(float, int*); + +float j0f(float); +float j1f(float); +float jnf(int, float); + +float y0f(float); +float y1f(float); +float ynf(int, float); +#endif + +#ifdef _GNU_SOURCE +long double lgammal_r(long double, int*); + +void sincos(double, double*, double*); +void sincosf(float, float*, float*); +void sincosl(long double, long double*, long double*); + +double exp10(double); +float exp10f(float); +long double exp10l(long double); + +double pow10(double); +float pow10f(float); +long double pow10l(long double); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/memory.h b/vendor/modernc.org/libc/musl/include/memory.h new file mode 100644 index 000000000..3b2f59002 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/memory.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/mntent.h b/vendor/modernc.org/libc/musl/include/mntent.h new file mode 100644 index 000000000..3492a1d6d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/mntent.h @@ -0,0 +1,43 @@ +#ifndef _MNTENT_H +#define _MNTENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_FILE +#include + +#define MOUNTED "/etc/mtab" + +#define MNTTYPE_IGNORE "ignore" +#define MNTTYPE_NFS "nfs" +#define MNTTYPE_SWAP "swap" +#define MNTOPT_DEFAULTS "defaults" +#define MNTOPT_RO "ro" +#define MNTOPT_RW "rw" +#define MNTOPT_SUID "suid" +#define MNTOPT_NOSUID "nosuid" +#define MNTOPT_NOAUTO "noauto" + +struct mntent { + char *mnt_fsname; + char *mnt_dir; + char *mnt_type; + char *mnt_opts; + int mnt_freq; + int mnt_passno; +}; + +FILE *setmntent(const char *, const char *); +int endmntent(FILE *); +struct mntent *getmntent(FILE *); +struct mntent *getmntent_r(FILE *, struct mntent *, char *, int); +int addmntent(FILE *, const struct mntent *); +char *hasmntopt(const struct mntent *, const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/monetary.h b/vendor/modernc.org/libc/musl/include/monetary.h new file mode 100644 index 000000000..a91fa5655 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/monetary.h @@ -0,0 +1,23 @@ +#ifndef _MONETARY_H +#define _MONETARY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_ssize_t +#define __NEED_size_t +#define __NEED_locale_t + +#include + +ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...); +ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/mqueue.h b/vendor/modernc.org/libc/musl/include/mqueue.h new file mode 100644 index 000000000..0c807ea0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/mqueue.h @@ -0,0 +1,41 @@ +#ifndef _MQUEUE_H +#define _MQUEUE_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_pthread_attr_t +#define __NEED_time_t +#define __NEED_struct_timespec +#include + +typedef int mqd_t; +struct mq_attr { + long mq_flags, mq_maxmsg, mq_msgsize, mq_curmsgs, __unused[4]; +}; +struct sigevent; + +int mq_close(mqd_t); +int mq_getattr(mqd_t, struct mq_attr *); +int mq_notify(mqd_t, const struct sigevent *); +mqd_t mq_open(const char *, int, ...); +ssize_t mq_receive(mqd_t, char *, size_t, unsigned *); +int mq_send(mqd_t, const char *, size_t, unsigned); +int mq_setattr(mqd_t, const struct mq_attr *__restrict, struct mq_attr *__restrict); +ssize_t mq_timedreceive(mqd_t, char *__restrict, size_t, unsigned *__restrict, const struct timespec *__restrict); +int mq_timedsend(mqd_t, const char *, size_t, unsigned, const struct timespec *); +int mq_unlink(const char *); + +#if _REDIR_TIME64 +__REDIR(mq_timedreceive, __mq_timedreceive_time64); +__REDIR(mq_timedsend, __mq_timedsend_time64); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/net/ethernet.h b/vendor/modernc.org/libc/musl/include/net/ethernet.h new file mode 100644 index 000000000..c8d4177fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/net/ethernet.h @@ -0,0 +1,55 @@ +#ifndef _NET_ETHERNET_H +#define _NET_ETHERNET_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +struct ether_addr { + uint8_t ether_addr_octet[ETH_ALEN]; +}; + +struct ether_header { + uint8_t ether_dhost[ETH_ALEN]; + uint8_t ether_shost[ETH_ALEN]; + uint16_t ether_type; +}; + +#define ETHERTYPE_PUP 0x0200 +#define ETHERTYPE_SPRITE 0x0500 +#define ETHERTYPE_IP 0x0800 +#define ETHERTYPE_ARP 0x0806 +#define ETHERTYPE_REVARP 0x8035 +#define ETHERTYPE_AT 0x809B +#define ETHERTYPE_AARP 0x80F3 +#define ETHERTYPE_VLAN 0x8100 +#define ETHERTYPE_IPX 0x8137 +#define ETHERTYPE_IPV6 0x86dd +#define ETHERTYPE_LOOPBACK 0x9000 + + +#define ETHER_ADDR_LEN ETH_ALEN +#define ETHER_TYPE_LEN 2 +#define ETHER_CRC_LEN 4 +#define ETHER_HDR_LEN ETH_HLEN +#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN) +#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN) + +#define ETHER_IS_VALID_LEN(foo) \ + ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) + +#define ETHERTYPE_TRAIL 0x1000 +#define ETHERTYPE_NTRAILER 16 + +#define ETHERMTU ETH_DATA_LEN +#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/net/if.h b/vendor/modernc.org/libc/musl/include/net/if.h new file mode 100644 index 000000000..774cbff0b --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/net/if.h @@ -0,0 +1,141 @@ +#ifndef _NET_IF_H +#define _NET_IF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define IF_NAMESIZE 16 + +struct if_nameindex { + unsigned int if_index; + char *if_name; +}; + +unsigned int if_nametoindex (const char *); +char *if_indextoname (unsigned int, char *); +struct if_nameindex *if_nameindex (void); +void if_freenameindex (struct if_nameindex *); + + + + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#include + +#define IFF_UP 0x1 +#define IFF_BROADCAST 0x2 +#define IFF_DEBUG 0x4 +#define IFF_LOOPBACK 0x8 +#define IFF_POINTOPOINT 0x10 +#define IFF_NOTRAILERS 0x20 +#define IFF_RUNNING 0x40 +#define IFF_NOARP 0x80 +#define IFF_PROMISC 0x100 +#define IFF_ALLMULTI 0x200 +#define IFF_MASTER 0x400 +#define IFF_SLAVE 0x800 +#define IFF_MULTICAST 0x1000 +#define IFF_PORTSEL 0x2000 +#define IFF_AUTOMEDIA 0x4000 +#define IFF_DYNAMIC 0x8000 +#define IFF_LOWER_UP 0x10000 +#define IFF_DORMANT 0x20000 +#define IFF_ECHO 0x40000 +#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \ + IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) + +struct ifaddr { + struct sockaddr ifa_addr; + union { + struct sockaddr ifu_broadaddr; + struct sockaddr ifu_dstaddr; + } ifa_ifu; + struct iface *ifa_ifp; + struct ifaddr *ifa_next; +}; + +#define ifa_broadaddr ifa_ifu.ifu_broadaddr +#define ifa_dstaddr ifa_ifu.ifu_dstaddr + +struct ifmap { + unsigned long int mem_start; + unsigned long int mem_end; + unsigned short int base_addr; + unsigned char irq; + unsigned char dma; + unsigned char port; +}; + +#define IFHWADDRLEN 6 +#define IFNAMSIZ IF_NAMESIZE + +struct ifreq { + union { + char ifrn_name[IFNAMSIZ]; + } ifr_ifrn; + union { + struct sockaddr ifru_addr; + struct sockaddr ifru_dstaddr; + struct sockaddr ifru_broadaddr; + struct sockaddr ifru_netmask; + struct sockaddr ifru_hwaddr; + short int ifru_flags; + int ifru_ivalue; + int ifru_mtu; + struct ifmap ifru_map; + char ifru_slave[IFNAMSIZ]; + char ifru_newname[IFNAMSIZ]; + char *ifru_data; + } ifr_ifru; +}; + +#define ifr_name ifr_ifrn.ifrn_name +#define ifr_hwaddr ifr_ifru.ifru_hwaddr +#define ifr_addr ifr_ifru.ifru_addr +#define ifr_dstaddr ifr_ifru.ifru_dstaddr +#define ifr_broadaddr ifr_ifru.ifru_broadaddr +#define ifr_netmask ifr_ifru.ifru_netmask +#define ifr_flags ifr_ifru.ifru_flags +#define ifr_metric ifr_ifru.ifru_ivalue +#define ifr_mtu ifr_ifru.ifru_mtu +#define ifr_map ifr_ifru.ifru_map +#define ifr_slave ifr_ifru.ifru_slave +#define ifr_data ifr_ifru.ifru_data +#define ifr_ifindex ifr_ifru.ifru_ivalue +#define ifr_bandwidth ifr_ifru.ifru_ivalue +#define ifr_qlen ifr_ifru.ifru_ivalue +#define ifr_newname ifr_ifru.ifru_newname +#define _IOT_ifreq _IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0) +#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0) +#define _IOT_ifreq_int _IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0) + +struct ifconf { + int ifc_len; + union { + char *ifcu_buf; + struct ifreq *ifcu_req; + } ifc_ifcu; +}; + +#define ifc_buf ifc_ifcu.ifcu_buf +#define ifc_req ifc_ifcu.ifcu_req +#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) + +#define __UAPI_DEF_IF_IFCONF 0 +#define __UAPI_DEF_IF_IFMAP 0 +#define __UAPI_DEF_IF_IFNAMSIZ 0 +#define __UAPI_DEF_IF_IFREQ 0 +#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0 +#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/net/if_arp.h b/vendor/modernc.org/libc/musl/include/net/if_arp.h new file mode 100644 index 000000000..27becc835 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/net/if_arp.h @@ -0,0 +1,142 @@ +/* Nonstandard header */ +#ifndef _NET_IF_ARP_H +#define _NET_IF_ARP_H +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define MAX_ADDR_LEN 7 + +#define ARPOP_REQUEST 1 +#define ARPOP_REPLY 2 +#define ARPOP_RREQUEST 3 +#define ARPOP_RREPLY 4 +#define ARPOP_InREQUEST 8 +#define ARPOP_InREPLY 9 +#define ARPOP_NAK 10 + +struct arphdr { + uint16_t ar_hrd; + uint16_t ar_pro; + uint8_t ar_hln; + uint8_t ar_pln; + uint16_t ar_op; +}; + + +#define ARPHRD_NETROM 0 +#define ARPHRD_ETHER 1 +#define ARPHRD_EETHER 2 +#define ARPHRD_AX25 3 +#define ARPHRD_PRONET 4 +#define ARPHRD_CHAOS 5 +#define ARPHRD_IEEE802 6 +#define ARPHRD_ARCNET 7 +#define ARPHRD_APPLETLK 8 +#define ARPHRD_DLCI 15 +#define ARPHRD_ATM 19 +#define ARPHRD_METRICOM 23 +#define ARPHRD_IEEE1394 24 +#define ARPHRD_EUI64 27 +#define ARPHRD_INFINIBAND 32 +#define ARPHRD_SLIP 256 +#define ARPHRD_CSLIP 257 +#define ARPHRD_SLIP6 258 +#define ARPHRD_CSLIP6 259 +#define ARPHRD_RSRVD 260 +#define ARPHRD_ADAPT 264 +#define ARPHRD_ROSE 270 +#define ARPHRD_X25 271 +#define ARPHRD_HWX25 272 +#define ARPHRD_CAN 280 +#define ARPHRD_PPP 512 +#define ARPHRD_CISCO 513 +#define ARPHRD_HDLC ARPHRD_CISCO +#define ARPHRD_LAPB 516 +#define ARPHRD_DDCMP 517 +#define ARPHRD_RAWHDLC 518 +#define ARPHRD_RAWIP 519 + +#define ARPHRD_TUNNEL 768 +#define ARPHRD_TUNNEL6 769 +#define ARPHRD_FRAD 770 +#define ARPHRD_SKIP 771 +#define ARPHRD_LOOPBACK 772 +#define ARPHRD_LOCALTLK 773 +#define ARPHRD_FDDI 774 +#define ARPHRD_BIF 775 +#define ARPHRD_SIT 776 +#define ARPHRD_IPDDP 777 +#define ARPHRD_IPGRE 778 +#define ARPHRD_PIMREG 779 +#define ARPHRD_HIPPI 780 +#define ARPHRD_ASH 781 +#define ARPHRD_ECONET 782 +#define ARPHRD_IRDA 783 +#define ARPHRD_FCPP 784 +#define ARPHRD_FCAL 785 +#define ARPHRD_FCPL 786 +#define ARPHRD_FCFABRIC 787 +#define ARPHRD_IEEE802_TR 800 +#define ARPHRD_IEEE80211 801 +#define ARPHRD_IEEE80211_PRISM 802 +#define ARPHRD_IEEE80211_RADIOTAP 803 +#define ARPHRD_IEEE802154 804 +#define ARPHRD_IEEE802154_MONITOR 805 +#define ARPHRD_PHONET 820 +#define ARPHRD_PHONET_PIPE 821 +#define ARPHRD_CAIF 822 +#define ARPHRD_IP6GRE 823 +#define ARPHRD_NETLINK 824 +#define ARPHRD_6LOWPAN 825 +#define ARPHRD_VSOCKMON 826 + +#define ARPHRD_VOID 0xFFFF +#define ARPHRD_NONE 0xFFFE + +struct arpreq { + struct sockaddr arp_pa; + struct sockaddr arp_ha; + int arp_flags; + struct sockaddr arp_netmask; + char arp_dev[16]; +}; + +struct arpreq_old { + struct sockaddr arp_pa; + struct sockaddr arp_ha; + int arp_flags; + struct sockaddr arp_netmask; +}; + +#define ATF_COM 0x02 +#define ATF_PERM 0x04 +#define ATF_PUBL 0x08 +#define ATF_USETRAILERS 0x10 +#define ATF_NETMASK 0x20 +#define ATF_DONTPUB 0x40 +#define ATF_MAGIC 0x80 + +#define ARPD_UPDATE 0x01 +#define ARPD_LOOKUP 0x02 +#define ARPD_FLUSH 0x03 + +struct arpd_request { + unsigned short req; + uint32_t ip; + unsigned long dev; + unsigned long stamp; + unsigned long updated; + unsigned char ha[MAX_ADDR_LEN]; +}; + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/net/route.h b/vendor/modernc.org/libc/musl/include/net/route.h new file mode 100644 index 000000000..96ff48e01 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/net/route.h @@ -0,0 +1,124 @@ +#ifndef _NET_ROUTE_H +#define _NET_ROUTE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + + +struct rtentry { + unsigned long int rt_pad1; + struct sockaddr rt_dst; + struct sockaddr rt_gateway; + struct sockaddr rt_genmask; + unsigned short int rt_flags; + short int rt_pad2; + unsigned long int rt_pad3; + unsigned char rt_tos; + unsigned char rt_class; + short int rt_pad4[sizeof(long)/2-1]; + short int rt_metric; + char *rt_dev; + unsigned long int rt_mtu; + unsigned long int rt_window; + unsigned short int rt_irtt; +}; + +#define rt_mss rt_mtu + + +struct in6_rtmsg { + struct in6_addr rtmsg_dst; + struct in6_addr rtmsg_src; + struct in6_addr rtmsg_gateway; + uint32_t rtmsg_type; + uint16_t rtmsg_dst_len; + uint16_t rtmsg_src_len; + uint32_t rtmsg_metric; + unsigned long int rtmsg_info; + uint32_t rtmsg_flags; + int rtmsg_ifindex; +}; + + +#define RTF_UP 0x0001 +#define RTF_GATEWAY 0x0002 + +#define RTF_HOST 0x0004 +#define RTF_REINSTATE 0x0008 +#define RTF_DYNAMIC 0x0010 +#define RTF_MODIFIED 0x0020 +#define RTF_MTU 0x0040 +#define RTF_MSS RTF_MTU +#define RTF_WINDOW 0x0080 +#define RTF_IRTT 0x0100 +#define RTF_REJECT 0x0200 +#define RTF_STATIC 0x0400 +#define RTF_XRESOLVE 0x0800 +#define RTF_NOFORWARD 0x1000 +#define RTF_THROW 0x2000 +#define RTF_NOPMTUDISC 0x4000 + +#define RTF_DEFAULT 0x00010000 +#define RTF_ALLONLINK 0x00020000 +#define RTF_ADDRCONF 0x00040000 + +#define RTF_LINKRT 0x00100000 +#define RTF_NONEXTHOP 0x00200000 + +#define RTF_CACHE 0x01000000 +#define RTF_FLOW 0x02000000 +#define RTF_POLICY 0x04000000 + +#define RTCF_VALVE 0x00200000 +#define RTCF_MASQ 0x00400000 +#define RTCF_NAT 0x00800000 +#define RTCF_DOREDIRECT 0x01000000 +#define RTCF_LOG 0x02000000 +#define RTCF_DIRECTSRC 0x04000000 + +#define RTF_LOCAL 0x80000000 +#define RTF_INTERFACE 0x40000000 +#define RTF_MULTICAST 0x20000000 +#define RTF_BROADCAST 0x10000000 +#define RTF_NAT 0x08000000 + +#define RTF_ADDRCLASSMASK 0xF8000000 +#define RT_ADDRCLASS(flags) ((uint32_t) flags >> 23) + +#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK) + +#define RT_LOCALADDR(flags) ((flags & RTF_ADDRCLASSMASK) \ + == (RTF_LOCAL|RTF_INTERFACE)) + +#define RT_CLASS_UNSPEC 0 +#define RT_CLASS_DEFAULT 253 + +#define RT_CLASS_MAIN 254 +#define RT_CLASS_LOCAL 255 +#define RT_CLASS_MAX 255 + + +#define RTMSG_ACK NLMSG_ACK +#define RTMSG_OVERRUN NLMSG_OVERRUN + +#define RTMSG_NEWDEVICE 0x11 +#define RTMSG_DELDEVICE 0x12 +#define RTMSG_NEWROUTE 0x21 +#define RTMSG_DELROUTE 0x22 +#define RTMSG_NEWRULE 0x31 +#define RTMSG_DELRULE 0x32 +#define RTMSG_CONTROL 0x40 + +#define RTMSG_AR_FAILED 0x51 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netdb.h b/vendor/modernc.org/libc/musl/include/netdb.h new file mode 100644 index 000000000..d096c7818 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netdb.h @@ -0,0 +1,156 @@ +#ifndef _NETDB_H +#define _NETDB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_size_t +#include +#endif + +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + socklen_t ai_addrlen; + struct sockaddr *ai_addr; + char *ai_canonname; + struct addrinfo *ai_next; +}; + +#define AI_PASSIVE 0x01 +#define AI_CANONNAME 0x02 +#define AI_NUMERICHOST 0x04 +#define AI_V4MAPPED 0x08 +#define AI_ALL 0x10 +#define AI_ADDRCONFIG 0x20 +#define AI_NUMERICSERV 0x400 + + +#define NI_NUMERICHOST 0x01 +#define NI_NUMERICSERV 0x02 +#define NI_NOFQDN 0x04 +#define NI_NAMEREQD 0x08 +#define NI_DGRAM 0x10 +#define NI_NUMERICSCOPE 0x100 + +#define EAI_BADFLAGS -1 +#define EAI_NONAME -2 +#define EAI_AGAIN -3 +#define EAI_FAIL -4 +#define EAI_FAMILY -6 +#define EAI_SOCKTYPE -7 +#define EAI_SERVICE -8 +#define EAI_MEMORY -10 +#define EAI_SYSTEM -11 +#define EAI_OVERFLOW -12 + +int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict); +void freeaddrinfo (struct addrinfo *); +int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int); +const char *gai_strerror(int); + + +/* Legacy functions follow (marked OBsolete in SUS) */ + +struct netent { + char *n_name; + char **n_aliases; + int n_addrtype; + uint32_t n_net; +}; + +struct hostent { + char *h_name; + char **h_aliases; + int h_addrtype; + int h_length; + char **h_addr_list; +}; +#define h_addr h_addr_list[0] + +struct servent { + char *s_name; + char **s_aliases; + int s_port; + char *s_proto; +}; + +struct protoent { + char *p_name; + char **p_aliases; + int p_proto; +}; + +void sethostent (int); +void endhostent (void); +struct hostent *gethostent (void); + +void setnetent (int); +void endnetent (void); +struct netent *getnetent (void); +struct netent *getnetbyaddr (uint32_t, int); +struct netent *getnetbyname (const char *); + +void setservent (int); +void endservent (void); +struct servent *getservent (void); +struct servent *getservbyname (const char *, const char *); +struct servent *getservbyport (int, const char *); + +void setprotoent (int); +void endprotoent (void); +struct protoent *getprotoent (void); +struct protoent *getprotobyname (const char *); +struct protoent *getprotobynumber (int); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \ + || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) +struct hostent *gethostbyname (const char *); +struct hostent *gethostbyaddr (const void *, socklen_t, int); +#ifdef __GNUC__ +__attribute__((const)) +#endif +int *__h_errno_location(void); +#define h_errno (*__h_errno_location()) +#define HOST_NOT_FOUND 1 +#define TRY_AGAIN 2 +#define NO_RECOVERY 3 +#define NO_DATA 4 +#define NO_ADDRESS NO_DATA +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +void herror(const char *); +const char *hstrerror(int); +int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *); +int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *); +struct hostent *gethostbyname2(const char *, int); +int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *); +int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **); +int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **); +#define EAI_NODATA -5 +#define EAI_ADDRFAMILY -9 +#define EAI_INPROGRESS -100 +#define EAI_CANCELED -101 +#define EAI_NOTCANCELED -102 +#define EAI_ALLDONE -103 +#define EAI_INTR -104 +#define EAI_IDN_ENCODE -105 +#define NI_MAXHOST 255 +#define NI_MAXSERV 32 +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/ether.h b/vendor/modernc.org/libc/musl/include/netinet/ether.h new file mode 100644 index 000000000..eec7e53ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/ether.h @@ -0,0 +1,22 @@ +#ifndef _NETINET_ETHER_H +#define _NETINET_ETHER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +char *ether_ntoa (const struct ether_addr *); +struct ether_addr *ether_aton (const char *); +char *ether_ntoa_r (const struct ether_addr *, char *); +struct ether_addr *ether_aton_r (const char *, struct ether_addr *); +int ether_line(const char *, struct ether_addr *, char *); +int ether_ntohost(char *, const struct ether_addr *); +int ether_hostton(const char *, struct ether_addr *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/icmp6.h b/vendor/modernc.org/libc/musl/include/netinet/icmp6.h new file mode 100644 index 000000000..01269e7d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/icmp6.h @@ -0,0 +1,305 @@ +#ifndef _NETINET_ICMP6_H +#define _NETINET_ICMP6_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +#define ICMP6_FILTER 1 + +#define ICMP6_FILTER_BLOCK 1 +#define ICMP6_FILTER_PASS 2 +#define ICMP6_FILTER_BLOCKOTHERS 3 +#define ICMP6_FILTER_PASSONLY 4 + +struct icmp6_filter { + uint32_t icmp6_filt[8]; +}; + +struct icmp6_hdr { + uint8_t icmp6_type; + uint8_t icmp6_code; + uint16_t icmp6_cksum; + union { + uint32_t icmp6_un_data32[1]; + uint16_t icmp6_un_data16[2]; + uint8_t icmp6_un_data8[4]; + } icmp6_dataun; +}; + +#define icmp6_data32 icmp6_dataun.icmp6_un_data32 +#define icmp6_data16 icmp6_dataun.icmp6_un_data16 +#define icmp6_data8 icmp6_dataun.icmp6_un_data8 +#define icmp6_pptr icmp6_data32[0] +#define icmp6_mtu icmp6_data32[0] +#define icmp6_id icmp6_data16[0] +#define icmp6_seq icmp6_data16[1] +#define icmp6_maxdelay icmp6_data16[0] + +#define ICMP6_DST_UNREACH 1 +#define ICMP6_PACKET_TOO_BIG 2 +#define ICMP6_TIME_EXCEEDED 3 +#define ICMP6_PARAM_PROB 4 + +#define ICMP6_INFOMSG_MASK 0x80 + +#define ICMP6_ECHO_REQUEST 128 +#define ICMP6_ECHO_REPLY 129 +#define MLD_LISTENER_QUERY 130 +#define MLD_LISTENER_REPORT 131 +#define MLD_LISTENER_REDUCTION 132 + +#define ICMP6_DST_UNREACH_NOROUTE 0 +#define ICMP6_DST_UNREACH_ADMIN 1 +#define ICMP6_DST_UNREACH_BEYONDSCOPE 2 +#define ICMP6_DST_UNREACH_ADDR 3 +#define ICMP6_DST_UNREACH_NOPORT 4 + +#define ICMP6_TIME_EXCEED_TRANSIT 0 +#define ICMP6_TIME_EXCEED_REASSEMBLY 1 + +#define ICMP6_PARAMPROB_HEADER 0 +#define ICMP6_PARAMPROB_NEXTHEADER 1 +#define ICMP6_PARAMPROB_OPTION 2 + +#define ICMP6_FILTER_WILLPASS(type, filterp) \ + ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0) + +#define ICMP6_FILTER_WILLBLOCK(type, filterp) \ + ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0) + +#define ICMP6_FILTER_SETPASS(type, filterp) \ + ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))) + +#define ICMP6_FILTER_SETBLOCK(type, filterp) \ + ((((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))) + +#define ICMP6_FILTER_SETPASSALL(filterp) \ + memset (filterp, 0, sizeof (struct icmp6_filter)); + +#define ICMP6_FILTER_SETBLOCKALL(filterp) \ + memset (filterp, 0xFF, sizeof (struct icmp6_filter)); + +#define ND_ROUTER_SOLICIT 133 +#define ND_ROUTER_ADVERT 134 +#define ND_NEIGHBOR_SOLICIT 135 +#define ND_NEIGHBOR_ADVERT 136 +#define ND_REDIRECT 137 + +struct nd_router_solicit { + struct icmp6_hdr nd_rs_hdr; +}; + +#define nd_rs_type nd_rs_hdr.icmp6_type +#define nd_rs_code nd_rs_hdr.icmp6_code +#define nd_rs_cksum nd_rs_hdr.icmp6_cksum +#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0] + +struct nd_router_advert { + struct icmp6_hdr nd_ra_hdr; + uint32_t nd_ra_reachable; + uint32_t nd_ra_retransmit; +}; + +#define nd_ra_type nd_ra_hdr.icmp6_type +#define nd_ra_code nd_ra_hdr.icmp6_code +#define nd_ra_cksum nd_ra_hdr.icmp6_cksum +#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0] +#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1] +#define ND_RA_FLAG_MANAGED 0x80 +#define ND_RA_FLAG_OTHER 0x40 +#define ND_RA_FLAG_HOME_AGENT 0x20 +#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1] + +struct nd_neighbor_solicit { + struct icmp6_hdr nd_ns_hdr; + struct in6_addr nd_ns_target; +}; + +#define nd_ns_type nd_ns_hdr.icmp6_type +#define nd_ns_code nd_ns_hdr.icmp6_code +#define nd_ns_cksum nd_ns_hdr.icmp6_cksum +#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0] + +struct nd_neighbor_advert { + struct icmp6_hdr nd_na_hdr; + struct in6_addr nd_na_target; +}; + +#define nd_na_type nd_na_hdr.icmp6_type +#define nd_na_code nd_na_hdr.icmp6_code +#define nd_na_cksum nd_na_hdr.icmp6_cksum +#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0] +#if __BYTE_ORDER == __BIG_ENDIAN +#define ND_NA_FLAG_ROUTER 0x80000000 +#define ND_NA_FLAG_SOLICITED 0x40000000 +#define ND_NA_FLAG_OVERRIDE 0x20000000 +#else +#define ND_NA_FLAG_ROUTER 0x00000080 +#define ND_NA_FLAG_SOLICITED 0x00000040 +#define ND_NA_FLAG_OVERRIDE 0x00000020 +#endif + +struct nd_redirect { + struct icmp6_hdr nd_rd_hdr; + struct in6_addr nd_rd_target; + struct in6_addr nd_rd_dst; +}; + +#define nd_rd_type nd_rd_hdr.icmp6_type +#define nd_rd_code nd_rd_hdr.icmp6_code +#define nd_rd_cksum nd_rd_hdr.icmp6_cksum +#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0] + +struct nd_opt_hdr { + uint8_t nd_opt_type; + uint8_t nd_opt_len; +}; + +#define ND_OPT_SOURCE_LINKADDR 1 +#define ND_OPT_TARGET_LINKADDR 2 +#define ND_OPT_PREFIX_INFORMATION 3 +#define ND_OPT_REDIRECTED_HEADER 4 +#define ND_OPT_MTU 5 +#define ND_OPT_RTR_ADV_INTERVAL 7 +#define ND_OPT_HOME_AGENT_INFO 8 + +struct nd_opt_prefix_info { + uint8_t nd_opt_pi_type; + uint8_t nd_opt_pi_len; + uint8_t nd_opt_pi_prefix_len; + uint8_t nd_opt_pi_flags_reserved; + uint32_t nd_opt_pi_valid_time; + uint32_t nd_opt_pi_preferred_time; + uint32_t nd_opt_pi_reserved2; + struct in6_addr nd_opt_pi_prefix; +}; + +#define ND_OPT_PI_FLAG_ONLINK 0x80 +#define ND_OPT_PI_FLAG_AUTO 0x40 +#define ND_OPT_PI_FLAG_RADDR 0x20 + +struct nd_opt_rd_hdr { + uint8_t nd_opt_rh_type; + uint8_t nd_opt_rh_len; + uint16_t nd_opt_rh_reserved1; + uint32_t nd_opt_rh_reserved2; +}; + +struct nd_opt_mtu { + uint8_t nd_opt_mtu_type; + uint8_t nd_opt_mtu_len; + uint16_t nd_opt_mtu_reserved; + uint32_t nd_opt_mtu_mtu; +}; + +struct mld_hdr { + struct icmp6_hdr mld_icmp6_hdr; + struct in6_addr mld_addr; +}; + +#define mld_type mld_icmp6_hdr.icmp6_type +#define mld_code mld_icmp6_hdr.icmp6_code +#define mld_cksum mld_icmp6_hdr.icmp6_cksum +#define mld_maxdelay mld_icmp6_hdr.icmp6_data16[0] +#define mld_reserved mld_icmp6_hdr.icmp6_data16[1] + +#define ICMP6_ROUTER_RENUMBERING 138 + +struct icmp6_router_renum { + struct icmp6_hdr rr_hdr; + uint8_t rr_segnum; + uint8_t rr_flags; + uint16_t rr_maxdelay; + uint32_t rr_reserved; +}; + +#define rr_type rr_hdr.icmp6_type +#define rr_code rr_hdr.icmp6_code +#define rr_cksum rr_hdr.icmp6_cksum +#define rr_seqnum rr_hdr.icmp6_data32[0] + +#define ICMP6_RR_FLAGS_TEST 0x80 +#define ICMP6_RR_FLAGS_REQRESULT 0x40 +#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20 +#define ICMP6_RR_FLAGS_SPECSITE 0x10 +#define ICMP6_RR_FLAGS_PREVDONE 0x08 + +struct rr_pco_match { + uint8_t rpm_code; + uint8_t rpm_len; + uint8_t rpm_ordinal; + uint8_t rpm_matchlen; + uint8_t rpm_minlen; + uint8_t rpm_maxlen; + uint16_t rpm_reserved; + struct in6_addr rpm_prefix; +}; + +#define RPM_PCO_ADD 1 +#define RPM_PCO_CHANGE 2 +#define RPM_PCO_SETGLOBAL 3 + +struct rr_pco_use { + uint8_t rpu_uselen; + uint8_t rpu_keeplen; + uint8_t rpu_ramask; + uint8_t rpu_raflags; + uint32_t rpu_vltime; + uint32_t rpu_pltime; + uint32_t rpu_flags; + struct in6_addr rpu_prefix; +}; + +#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x20 +#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x10 + +#if __BYTE_ORDER == __BIG_ENDIAN +#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000 +#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000 +#else +#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80 +#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40 +#endif + +struct rr_result { + uint16_t rrr_flags; + uint8_t rrr_ordinal; + uint8_t rrr_matchedlen; + uint32_t rrr_ifid; + struct in6_addr rrr_prefix; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define ICMP6_RR_RESULT_FLAGS_OOB 0x0002 +#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001 +#else +#define ICMP6_RR_RESULT_FLAGS_OOB 0x0200 +#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100 +#endif + +struct nd_opt_adv_interval { + uint8_t nd_opt_adv_interval_type; + uint8_t nd_opt_adv_interval_len; + uint16_t nd_opt_adv_interval_reserved; + uint32_t nd_opt_adv_interval_ival; +}; + +struct nd_opt_home_agent_info { + uint8_t nd_opt_home_agent_info_type; + uint8_t nd_opt_home_agent_info_len; + uint16_t nd_opt_home_agent_info_reserved; + uint16_t nd_opt_home_agent_info_preference; + uint16_t nd_opt_home_agent_info_lifetime; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/if_ether.h b/vendor/modernc.org/libc/musl/include/netinet/if_ether.h new file mode 100644 index 000000000..a08485e7f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/if_ether.h @@ -0,0 +1,147 @@ +#ifndef _NETINET_IF_ETHER_H +#define _NETINET_IF_ETHER_H + +#include +#include + +#define ETH_ALEN 6 +#define ETH_TLEN 2 +#define ETH_HLEN 14 +#define ETH_ZLEN 60 +#define ETH_DATA_LEN 1500 +#define ETH_FRAME_LEN 1514 +#define ETH_FCS_LEN 4 +#define ETH_MIN_MTU 68 +#define ETH_MAX_MTU 0xFFFFU + +#define ETH_P_LOOP 0x0060 +#define ETH_P_PUP 0x0200 +#define ETH_P_PUPAT 0x0201 +#define ETH_P_TSN 0x22F0 +#define ETH_P_ERSPAN2 0x22EB +#define ETH_P_IP 0x0800 +#define ETH_P_X25 0x0805 +#define ETH_P_ARP 0x0806 +#define ETH_P_BPQ 0x08FF +#define ETH_P_IEEEPUP 0x0a00 +#define ETH_P_IEEEPUPAT 0x0a01 +#define ETH_P_BATMAN 0x4305 +#define ETH_P_DEC 0x6000 +#define ETH_P_DNA_DL 0x6001 +#define ETH_P_DNA_RC 0x6002 +#define ETH_P_DNA_RT 0x6003 +#define ETH_P_LAT 0x6004 +#define ETH_P_DIAG 0x6005 +#define ETH_P_CUST 0x6006 +#define ETH_P_SCA 0x6007 +#define ETH_P_TEB 0x6558 +#define ETH_P_RARP 0x8035 +#define ETH_P_ATALK 0x809B +#define ETH_P_AARP 0x80F3 +#define ETH_P_8021Q 0x8100 +#define ETH_P_IPX 0x8137 +#define ETH_P_IPV6 0x86DD +#define ETH_P_PAUSE 0x8808 +#define ETH_P_SLOW 0x8809 +#define ETH_P_WCCP 0x883E +#define ETH_P_MPLS_UC 0x8847 +#define ETH_P_MPLS_MC 0x8848 +#define ETH_P_ATMMPOA 0x884c +#define ETH_P_PPP_DISC 0x8863 +#define ETH_P_PPP_SES 0x8864 +#define ETH_P_LINK_CTL 0x886c +#define ETH_P_ATMFATE 0x8884 +#define ETH_P_PAE 0x888E +#define ETH_P_AOE 0x88A2 +#define ETH_P_8021AD 0x88A8 +#define ETH_P_802_EX1 0x88B5 +#define ETH_P_ERSPAN 0x88BE +#define ETH_P_PREAUTH 0x88C7 +#define ETH_P_TIPC 0x88CA +#define ETH_P_LLDP 0x88CC +#define ETH_P_MACSEC 0x88E5 +#define ETH_P_8021AH 0x88E7 +#define ETH_P_MVRP 0x88F5 +#define ETH_P_1588 0x88F7 +#define ETH_P_NCSI 0x88F8 +#define ETH_P_PRP 0x88FB +#define ETH_P_FCOE 0x8906 +#define ETH_P_TDLS 0x890D +#define ETH_P_FIP 0x8914 +#define ETH_P_IBOE 0x8915 +#define ETH_P_80221 0x8917 +#define ETH_P_HSR 0x892F +#define ETH_P_NSH 0x894F +#define ETH_P_LOOPBACK 0x9000 +#define ETH_P_QINQ1 0x9100 +#define ETH_P_QINQ2 0x9200 +#define ETH_P_QINQ3 0x9300 +#define ETH_P_EDSA 0xDADA +#define ETH_P_DSA_8021Q 0xDADB +#define ETH_P_IFE 0xED3E +#define ETH_P_AF_IUCV 0xFBFB + +#define ETH_P_802_3_MIN 0x0600 + +#define ETH_P_802_3 0x0001 +#define ETH_P_AX25 0x0002 +#define ETH_P_ALL 0x0003 +#define ETH_P_802_2 0x0004 +#define ETH_P_SNAP 0x0005 +#define ETH_P_DDCMP 0x0006 +#define ETH_P_WAN_PPP 0x0007 +#define ETH_P_PPP_MP 0x0008 +#define ETH_P_LOCALTALK 0x0009 +#define ETH_P_CAN 0x000C +#define ETH_P_CANFD 0x000D +#define ETH_P_PPPTALK 0x0010 +#define ETH_P_TR_802_2 0x0011 +#define ETH_P_MOBITEX 0x0015 +#define ETH_P_CONTROL 0x0016 +#define ETH_P_IRDA 0x0017 +#define ETH_P_ECONET 0x0018 +#define ETH_P_HDLC 0x0019 +#define ETH_P_ARCNET 0x001A +#define ETH_P_DSA 0x001B +#define ETH_P_TRAILER 0x001C +#define ETH_P_PHONET 0x00F5 +#define ETH_P_IEEE802154 0x00F6 +#define ETH_P_CAIF 0x00F7 +#define ETH_P_XDSA 0x00F8 +#define ETH_P_MAP 0x00F9 + +struct ethhdr { + uint8_t h_dest[ETH_ALEN]; + uint8_t h_source[ETH_ALEN]; + uint16_t h_proto; +}; + +#include +#include + +struct ether_arp { + struct arphdr ea_hdr; + uint8_t arp_sha[ETH_ALEN]; + uint8_t arp_spa[4]; + uint8_t arp_tha[ETH_ALEN]; + uint8_t arp_tpa[4]; +}; +#define arp_hrd ea_hdr.ar_hrd +#define arp_pro ea_hdr.ar_pro +#define arp_hln ea_hdr.ar_hln +#define arp_pln ea_hdr.ar_pln +#define arp_op ea_hdr.ar_op + +#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ +do { \ + (enaddr)[0] = 0x01; \ + (enaddr)[1] = 0x00; \ + (enaddr)[2] = 0x5e; \ + (enaddr)[3] = ((uint8_t *)ipaddr)[1] & 0x7f; \ + (enaddr)[4] = ((uint8_t *)ipaddr)[2]; \ + (enaddr)[5] = ((uint8_t *)ipaddr)[3]; \ +} while(0) + +#define __UAPI_DEF_ETHHDR 0 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/igmp.h b/vendor/modernc.org/libc/musl/include/netinet/igmp.h new file mode 100644 index 000000000..bbe8206a1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/igmp.h @@ -0,0 +1,45 @@ +#ifndef _NETINET_IGMP_H +#define _NETINET_IGMP_H + +#include +#include + +struct igmp { + uint8_t igmp_type; + uint8_t igmp_code; + uint16_t igmp_cksum; + struct in_addr igmp_group; +}; + +#define IGMP_MINLEN 8 + +#define IGMP_MEMBERSHIP_QUERY 0x11 +#define IGMP_V1_MEMBERSHIP_REPORT 0x12 +#define IGMP_V2_MEMBERSHIP_REPORT 0x16 +#define IGMP_V2_LEAVE_GROUP 0x17 + +#define IGMP_DVMRP 0x13 +#define IGMP_PIM 0x14 +#define IGMP_TRACE 0x15 + +#define IGMP_MTRACE_RESP 0x1e +#define IGMP_MTRACE 0x1f + +#define IGMP_MAX_HOST_REPORT_DELAY 10 +#define IGMP_TIMER_SCALE 10 + +#define IGMP_DELAYING_MEMBER 1 +#define IGMP_IDLE_MEMBER 2 +#define IGMP_LAZY_MEMBER 3 +#define IGMP_SLEEPING_MEMBER 4 +#define IGMP_AWAKENING_MEMBER 5 + +#define IGMP_v1_ROUTER 1 +#define IGMP_v2_ROUTER 2 + +#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY +#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT +#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT +#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/in.h b/vendor/modernc.org/libc/musl/include/netinet/in.h new file mode 100644 index 000000000..103d2e044 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/in.h @@ -0,0 +1,413 @@ +#ifndef _NETINET_IN_H +#define _NETINET_IN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +typedef uint16_t in_port_t; +typedef uint32_t in_addr_t; +struct in_addr { in_addr_t s_addr; }; + +struct sockaddr_in { + sa_family_t sin_family; + in_port_t sin_port; + struct in_addr sin_addr; + uint8_t sin_zero[8]; +}; + +struct in6_addr { + union { + uint8_t __s6_addr[16]; + uint16_t __s6_addr16[8]; + uint32_t __s6_addr32[4]; + } __in6_union; +}; +#define s6_addr __in6_union.__s6_addr +#define s6_addr16 __in6_union.__s6_addr16 +#define s6_addr32 __in6_union.__s6_addr32 + +struct sockaddr_in6 { + sa_family_t sin6_family; + in_port_t sin6_port; + uint32_t sin6_flowinfo; + struct in6_addr sin6_addr; + uint32_t sin6_scope_id; +}; + +struct ipv6_mreq { + struct in6_addr ipv6mr_multiaddr; + unsigned ipv6mr_interface; +}; + +#define INADDR_ANY ((in_addr_t) 0x00000000) +#define INADDR_BROADCAST ((in_addr_t) 0xffffffff) +#define INADDR_NONE ((in_addr_t) 0xffffffff) +#define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) + +#define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) +#define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) +#define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) +#define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a) +#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) + +#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } +#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } + +extern const struct in6_addr in6addr_any, in6addr_loopback; + +#define INET_ADDRSTRLEN 16 +#define INET6_ADDRSTRLEN 46 + +uint32_t htonl(uint32_t); +uint16_t htons(uint16_t); +uint32_t ntohl(uint32_t); +uint16_t ntohs(uint16_t); + +#define IPPORT_RESERVED 1024 + +#define IPPROTO_IP 0 +#define IPPROTO_HOPOPTS 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_IPIP 4 +#define IPPROTO_TCP 6 +#define IPPROTO_EGP 8 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_TP 29 +#define IPPROTO_DCCP 33 +#define IPPROTO_IPV6 41 +#define IPPROTO_ROUTING 43 +#define IPPROTO_FRAGMENT 44 +#define IPPROTO_RSVP 46 +#define IPPROTO_GRE 47 +#define IPPROTO_ESP 50 +#define IPPROTO_AH 51 +#define IPPROTO_ICMPV6 58 +#define IPPROTO_NONE 59 +#define IPPROTO_DSTOPTS 60 +#define IPPROTO_MTP 92 +#define IPPROTO_BEETPH 94 +#define IPPROTO_ENCAP 98 +#define IPPROTO_PIM 103 +#define IPPROTO_COMP 108 +#define IPPROTO_SCTP 132 +#define IPPROTO_MH 135 +#define IPPROTO_UDPLITE 136 +#define IPPROTO_MPLS 137 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 + +#define IN6_IS_ADDR_UNSPECIFIED(a) \ + (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ + ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0) + +#define IN6_IS_ADDR_LOOPBACK(a) \ + (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ + ((uint32_t *) (a))[2] == 0 && \ + ((uint8_t *) (a))[12] == 0 && ((uint8_t *) (a))[13] == 0 && \ + ((uint8_t *) (a))[14] == 0 && ((uint8_t *) (a))[15] == 1 ) + +#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff) + +#define IN6_IS_ADDR_LINKLOCAL(a) \ + ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80) + +#define IN6_IS_ADDR_SITELOCAL(a) \ + ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0) + +#define IN6_IS_ADDR_V4MAPPED(a) \ + (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ + ((uint8_t *) (a))[8] == 0 && ((uint8_t *) (a))[9] == 0 && \ + ((uint8_t *) (a))[10] == 0xff && ((uint8_t *) (a))[11] == 0xff) + +#define IN6_IS_ADDR_V4COMPAT(a) \ + (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ + ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1) + +#define IN6_IS_ADDR_MC_NODELOCAL(a) \ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1)) + +#define IN6_IS_ADDR_MC_LINKLOCAL(a) \ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2)) + +#define IN6_IS_ADDR_MC_SITELOCAL(a) \ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5)) + +#define IN6_IS_ADDR_MC_ORGLOCAL(a) \ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8)) + +#define IN6_IS_ADDR_MC_GLOBAL(a) \ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) + +#define __ARE_4_EQUAL(a,b) \ + (!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) )) +#define IN6_ARE_ADDR_EQUAL(a,b) \ + __ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b)) + +#define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) +#define IN_CLASSA_MAX 128 +#define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) +#define IN_CLASSB_MAX 65536 +#define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) +#define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) +#define IN_MULTICAST(a) IN_CLASSD(a) +#define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000) +#define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000) + +#define IN_LOOPBACKNET 127 + + +#define IP_TOS 1 +#define IP_TTL 2 +#define IP_HDRINCL 3 +#define IP_OPTIONS 4 +#define IP_ROUTER_ALERT 5 +#define IP_RECVOPTS 6 +#define IP_RETOPTS 7 +#define IP_PKTINFO 8 +#define IP_PKTOPTIONS 9 +#define IP_PMTUDISC 10 +#define IP_MTU_DISCOVER 10 +#define IP_RECVERR 11 +#define IP_RECVTTL 12 +#define IP_RECVTOS 13 +#define IP_MTU 14 +#define IP_FREEBIND 15 +#define IP_IPSEC_POLICY 16 +#define IP_XFRM_POLICY 17 +#define IP_PASSSEC 18 +#define IP_TRANSPARENT 19 +#define IP_ORIGDSTADDR 20 +#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR +#define IP_MINTTL 21 +#define IP_NODEFRAG 22 +#define IP_CHECKSUM 23 +#define IP_BIND_ADDRESS_NO_PORT 24 +#define IP_RECVFRAGSIZE 25 +#define IP_MULTICAST_IF 32 +#define IP_MULTICAST_TTL 33 +#define IP_MULTICAST_LOOP 34 +#define IP_ADD_MEMBERSHIP 35 +#define IP_DROP_MEMBERSHIP 36 +#define IP_UNBLOCK_SOURCE 37 +#define IP_BLOCK_SOURCE 38 +#define IP_ADD_SOURCE_MEMBERSHIP 39 +#define IP_DROP_SOURCE_MEMBERSHIP 40 +#define IP_MSFILTER 41 +#define IP_MULTICAST_ALL 49 +#define IP_UNICAST_IF 50 + +#define IP_RECVRETOPTS IP_RETOPTS + +#define IP_PMTUDISC_DONT 0 +#define IP_PMTUDISC_WANT 1 +#define IP_PMTUDISC_DO 2 +#define IP_PMTUDISC_PROBE 3 +#define IP_PMTUDISC_INTERFACE 4 +#define IP_PMTUDISC_OMIT 5 + +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_DEFAULT_MULTICAST_LOOP 1 +#define IP_MAX_MEMBERSHIPS 20 + +struct ip_opts { + struct in_addr ip_dst; + char ip_opts[40]; +}; + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#define MCAST_JOIN_GROUP 42 +#define MCAST_BLOCK_SOURCE 43 +#define MCAST_UNBLOCK_SOURCE 44 +#define MCAST_LEAVE_GROUP 45 +#define MCAST_JOIN_SOURCE_GROUP 46 +#define MCAST_LEAVE_SOURCE_GROUP 47 +#define MCAST_MSFILTER 48 + +#define MCAST_EXCLUDE 0 +#define MCAST_INCLUDE 1 + +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; + +struct ip_mreqn { + struct in_addr imr_multiaddr; + struct in_addr imr_address; + int imr_ifindex; +}; + +struct ip_mreq_source { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; + struct in_addr imr_sourceaddr; +}; + +struct ip_msfilter { + struct in_addr imsf_multiaddr; + struct in_addr imsf_interface; + uint32_t imsf_fmode; + uint32_t imsf_numsrc; + struct in_addr imsf_slist[1]; +}; +#define IP_MSFILTER_SIZE(numsrc) \ + (sizeof(struct ip_msfilter) - sizeof(struct in_addr) \ + + (numsrc) * sizeof(struct in_addr)) + +struct group_req { + uint32_t gr_interface; + struct sockaddr_storage gr_group; +}; + +struct group_source_req { + uint32_t gsr_interface; + struct sockaddr_storage gsr_group; + struct sockaddr_storage gsr_source; +}; + +struct group_filter { + uint32_t gf_interface; + struct sockaddr_storage gf_group; + uint32_t gf_fmode; + uint32_t gf_numsrc; + struct sockaddr_storage gf_slist[1]; +}; +#define GROUP_FILTER_SIZE(numsrc) \ + (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \ + + (numsrc) * sizeof(struct sockaddr_storage)) + +struct in_pktinfo { + int ipi_ifindex; + struct in_addr ipi_spec_dst; + struct in_addr ipi_addr; +}; + +struct in6_pktinfo { + struct in6_addr ipi6_addr; + unsigned ipi6_ifindex; +}; + +struct ip6_mtuinfo { + struct sockaddr_in6 ip6m_addr; + uint32_t ip6m_mtu; +}; +#endif + +#define IPV6_ADDRFORM 1 +#define IPV6_2292PKTINFO 2 +#define IPV6_2292HOPOPTS 3 +#define IPV6_2292DSTOPTS 4 +#define IPV6_2292RTHDR 5 +#define IPV6_2292PKTOPTIONS 6 +#define IPV6_CHECKSUM 7 +#define IPV6_2292HOPLIMIT 8 +#define IPV6_NEXTHOP 9 +#define IPV6_AUTHHDR 10 +#define IPV6_UNICAST_HOPS 16 +#define IPV6_MULTICAST_IF 17 +#define IPV6_MULTICAST_HOPS 18 +#define IPV6_MULTICAST_LOOP 19 +#define IPV6_JOIN_GROUP 20 +#define IPV6_LEAVE_GROUP 21 +#define IPV6_ROUTER_ALERT 22 +#define IPV6_MTU_DISCOVER 23 +#define IPV6_MTU 24 +#define IPV6_RECVERR 25 +#define IPV6_V6ONLY 26 +#define IPV6_JOIN_ANYCAST 27 +#define IPV6_LEAVE_ANYCAST 28 +#define IPV6_MULTICAST_ALL 29 +#define IPV6_ROUTER_ALERT_ISOLATE 30 +#define IPV6_IPSEC_POLICY 34 +#define IPV6_XFRM_POLICY 35 +#define IPV6_HDRINCL 36 + +#define IPV6_RECVPKTINFO 49 +#define IPV6_PKTINFO 50 +#define IPV6_RECVHOPLIMIT 51 +#define IPV6_HOPLIMIT 52 +#define IPV6_RECVHOPOPTS 53 +#define IPV6_HOPOPTS 54 +#define IPV6_RTHDRDSTOPTS 55 +#define IPV6_RECVRTHDR 56 +#define IPV6_RTHDR 57 +#define IPV6_RECVDSTOPTS 58 +#define IPV6_DSTOPTS 59 +#define IPV6_RECVPATHMTU 60 +#define IPV6_PATHMTU 61 +#define IPV6_DONTFRAG 62 +#define IPV6_RECVTCLASS 66 +#define IPV6_TCLASS 67 +#define IPV6_AUTOFLOWLABEL 70 +#define IPV6_ADDR_PREFERENCES 72 +#define IPV6_MINHOPCOUNT 73 +#define IPV6_ORIGDSTADDR 74 +#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR +#define IPV6_TRANSPARENT 75 +#define IPV6_UNICAST_IF 76 +#define IPV6_RECVFRAGSIZE 77 +#define IPV6_FREEBIND 78 + +#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP +#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP +#define IPV6_RXHOPOPTS IPV6_HOPOPTS +#define IPV6_RXDSTOPTS IPV6_DSTOPTS + +#define IPV6_PMTUDISC_DONT 0 +#define IPV6_PMTUDISC_WANT 1 +#define IPV6_PMTUDISC_DO 2 +#define IPV6_PMTUDISC_PROBE 3 +#define IPV6_PMTUDISC_INTERFACE 4 +#define IPV6_PMTUDISC_OMIT 5 + +#define IPV6_PREFER_SRC_TMP 0x0001 +#define IPV6_PREFER_SRC_PUBLIC 0x0002 +#define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100 +#define IPV6_PREFER_SRC_COA 0x0004 +#define IPV6_PREFER_SRC_HOME 0x0400 +#define IPV6_PREFER_SRC_CGA 0x0008 +#define IPV6_PREFER_SRC_NONCGA 0x0800 + +#define IPV6_RTHDR_LOOSE 0 +#define IPV6_RTHDR_STRICT 1 + +#define IPV6_RTHDR_TYPE_0 0 + +#define __UAPI_DEF_IN_ADDR 0 +#define __UAPI_DEF_IN_IPPROTO 0 +#define __UAPI_DEF_IN_PKTINFO 0 +#define __UAPI_DEF_IP_MREQ 0 +#define __UAPI_DEF_SOCKADDR_IN 0 +#define __UAPI_DEF_IN_CLASS 0 +#define __UAPI_DEF_IN6_ADDR 0 +#define __UAPI_DEF_IN6_ADDR_ALT 0 +#define __UAPI_DEF_SOCKADDR_IN6 0 +#define __UAPI_DEF_IPV6_MREQ 0 +#define __UAPI_DEF_IPPROTO_V6 0 +#define __UAPI_DEF_IPV6_OPTIONS 0 +#define __UAPI_DEF_IN6_PKTINFO 0 +#define __UAPI_DEF_IP6_MTUINFO 0 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/in_systm.h b/vendor/modernc.org/libc/musl/include/netinet/in_systm.h new file mode 100644 index 000000000..a7b417722 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/in_systm.h @@ -0,0 +1,9 @@ +#ifndef _NETINET_IN_SYSTM_H +#define _NETINET_IN_SYSTM_H + +#include + +typedef uint16_t n_short; +typedef uint32_t n_long, n_time; + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/ip.h b/vendor/modernc.org/libc/musl/include/netinet/ip.h new file mode 100644 index 000000000..0ae132a58 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/ip.h @@ -0,0 +1,199 @@ +#ifndef _NETINET_IP_H +#define _NETINET_IP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +struct timestamp { + uint8_t len; + uint8_t ptr; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int flags:4; + unsigned int overflow:4; +#else + unsigned int overflow:4; + unsigned int flags:4; +#endif + uint32_t data[9]; + }; + +struct iphdr { +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ihl:4; + unsigned int version:4; +#else + unsigned int version:4; + unsigned int ihl:4; +#endif + uint8_t tos; + uint16_t tot_len; + uint16_t id; + uint16_t frag_off; + uint8_t ttl; + uint8_t protocol; + uint16_t check; + uint32_t saddr; + uint32_t daddr; +}; + +struct ip { +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ip_hl:4; + unsigned int ip_v:4; +#else + unsigned int ip_v:4; + unsigned int ip_hl:4; +#endif + uint8_t ip_tos; + uint16_t ip_len; + uint16_t ip_id; + uint16_t ip_off; + uint8_t ip_ttl; + uint8_t ip_p; + uint16_t ip_sum; + struct in_addr ip_src, ip_dst; +}; + +#define IP_RF 0x8000 +#define IP_DF 0x4000 +#define IP_MF 0x2000 +#define IP_OFFMASK 0x1fff + +struct ip_timestamp { + uint8_t ipt_code; + uint8_t ipt_len; + uint8_t ipt_ptr; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int ipt_flg:4; + unsigned int ipt_oflw:4; +#else + unsigned int ipt_oflw:4; + unsigned int ipt_flg:4; +#endif + uint32_t data[9]; +}; + +#define IPVERSION 4 +#define IP_MAXPACKET 65535 + +#define IPTOS_ECN_MASK 0x03 +#define IPTOS_ECN(x) ((x) & IPTOS_ECN_MASK) +#define IPTOS_ECN_NOT_ECT 0x00 +#define IPTOS_ECN_ECT1 0x01 +#define IPTOS_ECN_ECT0 0x02 +#define IPTOS_ECN_CE 0x03 + +#define IPTOS_DSCP_MASK 0xfc +#define IPTOS_DSCP(x) ((x) & IPTOS_DSCP_MASK) +#define IPTOS_DSCP_AF11 0x28 +#define IPTOS_DSCP_AF12 0x30 +#define IPTOS_DSCP_AF13 0x38 +#define IPTOS_DSCP_AF21 0x48 +#define IPTOS_DSCP_AF22 0x50 +#define IPTOS_DSCP_AF23 0x58 +#define IPTOS_DSCP_AF31 0x68 +#define IPTOS_DSCP_AF32 0x70 +#define IPTOS_DSCP_AF33 0x78 +#define IPTOS_DSCP_AF41 0x88 +#define IPTOS_DSCP_AF42 0x90 +#define IPTOS_DSCP_AF43 0x98 +#define IPTOS_DSCP_EF 0xb8 + +#define IPTOS_CLASS_MASK 0xe0 +#define IPTOS_CLASS(x) ((x) & IPTOS_CLASS_MASK) +#define IPTOS_CLASS_CS0 0x00 +#define IPTOS_CLASS_CS1 0x20 +#define IPTOS_CLASS_CS2 0x40 +#define IPTOS_CLASS_CS3 0x60 +#define IPTOS_CLASS_CS4 0x80 +#define IPTOS_CLASS_CS5 0xa0 +#define IPTOS_CLASS_CS6 0xc0 +#define IPTOS_CLASS_CS7 0xe0 +#define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0 + +#define IPTOS_TOS_MASK 0x1E +#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) +#define IPTOS_LOWDELAY 0x10 +#define IPTOS_THROUGHPUT 0x08 +#define IPTOS_RELIABILITY 0x04 +#define IPTOS_LOWCOST 0x02 +#define IPTOS_MINCOST IPTOS_LOWCOST + +#define IPTOS_PREC_MASK 0xe0 +#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) +#define IPTOS_PREC_NETCONTROL 0xe0 +#define IPTOS_PREC_INTERNETCONTROL 0xc0 +#define IPTOS_PREC_CRITIC_ECP 0xa0 +#define IPTOS_PREC_FLASHOVERRIDE 0x80 +#define IPTOS_PREC_FLASH 0x60 +#define IPTOS_PREC_IMMEDIATE 0x40 +#define IPTOS_PREC_PRIORITY 0x20 +#define IPTOS_PREC_ROUTINE 0x00 + +#define IPOPT_COPY 0x80 +#define IPOPT_CLASS_MASK 0x60 +#define IPOPT_NUMBER_MASK 0x1f + +#define IPOPT_COPIED(o) ((o) & IPOPT_COPY) +#define IPOPT_CLASS(o) ((o) & IPOPT_CLASS_MASK) +#define IPOPT_NUMBER(o) ((o) & IPOPT_NUMBER_MASK) + +#define IPOPT_CONTROL 0x00 +#define IPOPT_RESERVED1 0x20 +#define IPOPT_DEBMEAS 0x40 +#define IPOPT_MEASUREMENT IPOPT_DEBMEAS +#define IPOPT_RESERVED2 0x60 + +#define IPOPT_EOL 0 +#define IPOPT_END IPOPT_EOL +#define IPOPT_NOP 1 +#define IPOPT_NOOP IPOPT_NOP + +#define IPOPT_RR 7 +#define IPOPT_TS 68 +#define IPOPT_TIMESTAMP IPOPT_TS +#define IPOPT_SECURITY 130 +#define IPOPT_SEC IPOPT_SECURITY +#define IPOPT_LSRR 131 +#define IPOPT_SATID 136 +#define IPOPT_SID IPOPT_SATID +#define IPOPT_SSRR 137 +#define IPOPT_RA 148 + +#define IPOPT_OPTVAL 0 +#define IPOPT_OLEN 1 +#define IPOPT_OFFSET 2 +#define IPOPT_MINOFF 4 + +#define MAX_IPOPTLEN 40 + +#define IPOPT_TS_TSONLY 0 +#define IPOPT_TS_TSANDADDR 1 +#define IPOPT_TS_PRESPEC 3 + +#define IPOPT_SECUR_UNCLASS 0x0000 +#define IPOPT_SECUR_CONFID 0xf135 +#define IPOPT_SECUR_EFTO 0x789a +#define IPOPT_SECUR_MMMM 0xbc4d +#define IPOPT_SECUR_RESTR 0xaf13 +#define IPOPT_SECUR_SECRET 0xd788 +#define IPOPT_SECUR_TOPSECRET 0x6bc5 + +#define MAXTTL 255 +#define IPDEFTTL 64 +#define IPFRAGTTL 60 +#define IPTTLDEC 1 + +#define IP_MSS 576 + +#define __UAPI_DEF_IPHDR 0 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/ip6.h b/vendor/modernc.org/libc/musl/include/netinet/ip6.h new file mode 100644 index 000000000..50c626a69 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/ip6.h @@ -0,0 +1,141 @@ +#ifndef _NETINET_IP6_H +#define _NETINET_IP6_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +struct ip6_hdr { + union { + struct ip6_hdrctl { + uint32_t ip6_un1_flow; + uint16_t ip6_un1_plen; + uint8_t ip6_un1_nxt; + uint8_t ip6_un1_hlim; + } ip6_un1; + uint8_t ip6_un2_vfc; + } ip6_ctlun; + struct in6_addr ip6_src; + struct in6_addr ip6_dst; +}; + +#define ip6_vfc ip6_ctlun.ip6_un2_vfc +#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow +#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen +#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt +#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim +#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim + +struct ip6_ext { + uint8_t ip6e_nxt; + uint8_t ip6e_len; +}; + +struct ip6_hbh { + uint8_t ip6h_nxt; + uint8_t ip6h_len; +}; + +struct ip6_dest { + uint8_t ip6d_nxt; + uint8_t ip6d_len; +}; + +struct ip6_rthdr { + uint8_t ip6r_nxt; + uint8_t ip6r_len; + uint8_t ip6r_type; + uint8_t ip6r_segleft; +}; + +struct ip6_rthdr0 { + uint8_t ip6r0_nxt; + uint8_t ip6r0_len; + uint8_t ip6r0_type; + uint8_t ip6r0_segleft; + uint8_t ip6r0_reserved; + uint8_t ip6r0_slmap[3]; + struct in6_addr ip6r0_addr[]; +}; + +struct ip6_frag { + uint8_t ip6f_nxt; + uint8_t ip6f_reserved; + uint16_t ip6f_offlg; + uint32_t ip6f_ident; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define IP6F_OFF_MASK 0xfff8 +#define IP6F_RESERVED_MASK 0x0006 +#define IP6F_MORE_FRAG 0x0001 +#else +#define IP6F_OFF_MASK 0xf8ff +#define IP6F_RESERVED_MASK 0x0600 +#define IP6F_MORE_FRAG 0x0100 +#endif + +struct ip6_opt { + uint8_t ip6o_type; + uint8_t ip6o_len; +}; + +#define IP6OPT_TYPE(o) ((o) & 0xc0) +#define IP6OPT_TYPE_SKIP 0x00 +#define IP6OPT_TYPE_DISCARD 0x40 +#define IP6OPT_TYPE_FORCEICMP 0x80 +#define IP6OPT_TYPE_ICMP 0xc0 +#define IP6OPT_TYPE_MUTABLE 0x20 + +#define IP6OPT_PAD1 0 +#define IP6OPT_PADN 1 + +#define IP6OPT_JUMBO 0xc2 +#define IP6OPT_NSAP_ADDR 0xc3 +#define IP6OPT_TUNNEL_LIMIT 0x04 +#define IP6OPT_ROUTER_ALERT 0x05 + +struct ip6_opt_jumbo { + uint8_t ip6oj_type; + uint8_t ip6oj_len; + uint8_t ip6oj_jumbo_len[4]; +}; +#define IP6OPT_JUMBO_LEN 6 + +struct ip6_opt_nsap { + uint8_t ip6on_type; + uint8_t ip6on_len; + uint8_t ip6on_src_nsap_len; + uint8_t ip6on_dst_nsap_len; +}; + +struct ip6_opt_tunnel { + uint8_t ip6ot_type; + uint8_t ip6ot_len; + uint8_t ip6ot_encap_limit; +}; + +struct ip6_opt_router { + uint8_t ip6or_type; + uint8_t ip6or_len; + uint8_t ip6or_value[2]; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define IP6_ALERT_MLD 0x0000 +#define IP6_ALERT_RSVP 0x0001 +#define IP6_ALERT_AN 0x0002 +#else +#define IP6_ALERT_MLD 0x0000 +#define IP6_ALERT_RSVP 0x0100 +#define IP6_ALERT_AN 0x0200 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/ip_icmp.h b/vendor/modernc.org/libc/musl/include/netinet/ip_icmp.h new file mode 100644 index 000000000..b9e0df899 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/ip_icmp.h @@ -0,0 +1,193 @@ +#ifndef _NETINET_IP_ICMP_H +#define _NETINET_IP_ICMP_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct icmphdr { + uint8_t type; + uint8_t code; + uint16_t checksum; + union { + struct { + uint16_t id; + uint16_t sequence; + } echo; + uint32_t gateway; + struct { + uint16_t __unused; + uint16_t mtu; + } frag; + uint8_t reserved[4]; + } un; +}; + +#define ICMP_ECHOREPLY 0 +#define ICMP_DEST_UNREACH 3 +#define ICMP_SOURCE_QUENCH 4 +#define ICMP_REDIRECT 5 +#define ICMP_ECHO 8 +#define ICMP_TIME_EXCEEDED 11 +#define ICMP_PARAMETERPROB 12 +#define ICMP_TIMESTAMP 13 +#define ICMP_TIMESTAMPREPLY 14 +#define ICMP_INFO_REQUEST 15 +#define ICMP_INFO_REPLY 16 +#define ICMP_ADDRESS 17 +#define ICMP_ADDRESSREPLY 18 +#define NR_ICMP_TYPES 18 + + +#define ICMP_NET_UNREACH 0 +#define ICMP_HOST_UNREACH 1 +#define ICMP_PROT_UNREACH 2 +#define ICMP_PORT_UNREACH 3 +#define ICMP_FRAG_NEEDED 4 +#define ICMP_SR_FAILED 5 +#define ICMP_NET_UNKNOWN 6 +#define ICMP_HOST_UNKNOWN 7 +#define ICMP_HOST_ISOLATED 8 +#define ICMP_NET_ANO 9 +#define ICMP_HOST_ANO 10 +#define ICMP_NET_UNR_TOS 11 +#define ICMP_HOST_UNR_TOS 12 +#define ICMP_PKT_FILTERED 13 +#define ICMP_PREC_VIOLATION 14 +#define ICMP_PREC_CUTOFF 15 +#define NR_ICMP_UNREACH 15 + +#define ICMP_REDIR_NET 0 +#define ICMP_REDIR_HOST 1 +#define ICMP_REDIR_NETTOS 2 +#define ICMP_REDIR_HOSTTOS 3 + +#define ICMP_EXC_TTL 0 +#define ICMP_EXC_FRAGTIME 1 + + +struct icmp_ra_addr { + uint32_t ira_addr; + uint32_t ira_preference; +}; + +struct icmp { + uint8_t icmp_type; + uint8_t icmp_code; + uint16_t icmp_cksum; + union { + uint8_t ih_pptr; + struct in_addr ih_gwaddr; + struct ih_idseq { + uint16_t icd_id; + uint16_t icd_seq; + } ih_idseq; + uint32_t ih_void; + + struct ih_pmtu { + uint16_t ipm_void; + uint16_t ipm_nextmtu; + } ih_pmtu; + + struct ih_rtradv { + uint8_t irt_num_addrs; + uint8_t irt_wpa; + uint16_t irt_lifetime; + } ih_rtradv; + } icmp_hun; + union { + struct { + uint32_t its_otime; + uint32_t its_rtime; + uint32_t its_ttime; + } id_ts; + struct { + struct ip idi_ip; + } id_ip; + struct icmp_ra_addr id_radv; + uint32_t id_mask; + uint8_t id_data[1]; + } icmp_dun; +}; + +#define icmp_pptr icmp_hun.ih_pptr +#define icmp_gwaddr icmp_hun.ih_gwaddr +#define icmp_id icmp_hun.ih_idseq.icd_id +#define icmp_seq icmp_hun.ih_idseq.icd_seq +#define icmp_void icmp_hun.ih_void +#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void +#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu +#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs +#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa +#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime +#define icmp_otime icmp_dun.id_ts.its_otime +#define icmp_rtime icmp_dun.id_ts.its_rtime +#define icmp_ttime icmp_dun.id_ts.its_ttime +#define icmp_ip icmp_dun.id_ip.idi_ip +#define icmp_radv icmp_dun.id_radv +#define icmp_mask icmp_dun.id_mask +#define icmp_data icmp_dun.id_data + +#define ICMP_MINLEN 8 +#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) +#define ICMP_MASKLEN 12 +#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) +#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) + +#define ICMP_UNREACH 3 +#define ICMP_SOURCEQUENCH 4 +#define ICMP_ROUTERADVERT 9 +#define ICMP_ROUTERSOLICIT 10 +#define ICMP_TIMXCEED 11 +#define ICMP_PARAMPROB 12 +#define ICMP_TSTAMP 13 +#define ICMP_TSTAMPREPLY 14 +#define ICMP_IREQ 15 +#define ICMP_IREQREPLY 16 +#define ICMP_MASKREQ 17 +#define ICMP_MASKREPLY 18 +#define ICMP_MAXTYPE 18 + +#define ICMP_UNREACH_NET 0 +#define ICMP_UNREACH_HOST 1 +#define ICMP_UNREACH_PROTOCOL 2 +#define ICMP_UNREACH_PORT 3 +#define ICMP_UNREACH_NEEDFRAG 4 +#define ICMP_UNREACH_SRCFAIL 5 +#define ICMP_UNREACH_NET_UNKNOWN 6 +#define ICMP_UNREACH_HOST_UNKNOWN 7 +#define ICMP_UNREACH_ISOLATED 8 +#define ICMP_UNREACH_NET_PROHIB 9 +#define ICMP_UNREACH_HOST_PROHIB 10 +#define ICMP_UNREACH_TOSNET 11 +#define ICMP_UNREACH_TOSHOST 12 +#define ICMP_UNREACH_FILTER_PROHIB 13 +#define ICMP_UNREACH_HOST_PRECEDENCE 14 +#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 + +#define ICMP_REDIRECT_NET 0 +#define ICMP_REDIRECT_HOST 1 +#define ICMP_REDIRECT_TOSNET 2 +#define ICMP_REDIRECT_TOSHOST 3 + +#define ICMP_TIMXCEED_INTRANS 0 +#define ICMP_TIMXCEED_REASS 1 + +#define ICMP_PARAMPROB_OPTABSENT 1 + +#define ICMP_INFOTYPE(type) \ + ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ + (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ + (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ + (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ + (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/tcp.h b/vendor/modernc.org/libc/musl/include/netinet/tcp.h new file mode 100644 index 000000000..44a007aaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/tcp.h @@ -0,0 +1,282 @@ +#ifndef _NETINET_TCP_H +#define _NETINET_TCP_H + +#include + +#define TCP_NODELAY 1 +#define TCP_MAXSEG 2 +#define TCP_CORK 3 +#define TCP_KEEPIDLE 4 +#define TCP_KEEPINTVL 5 +#define TCP_KEEPCNT 6 +#define TCP_SYNCNT 7 +#define TCP_LINGER2 8 +#define TCP_DEFER_ACCEPT 9 +#define TCP_WINDOW_CLAMP 10 +#define TCP_INFO 11 +#define TCP_QUICKACK 12 +#define TCP_CONGESTION 13 +#define TCP_MD5SIG 14 +#define TCP_THIN_LINEAR_TIMEOUTS 16 +#define TCP_THIN_DUPACK 17 +#define TCP_USER_TIMEOUT 18 +#define TCP_REPAIR 19 +#define TCP_REPAIR_QUEUE 20 +#define TCP_QUEUE_SEQ 21 +#define TCP_REPAIR_OPTIONS 22 +#define TCP_FASTOPEN 23 +#define TCP_TIMESTAMP 24 +#define TCP_NOTSENT_LOWAT 25 +#define TCP_CC_INFO 26 +#define TCP_SAVE_SYN 27 +#define TCP_SAVED_SYN 28 +#define TCP_REPAIR_WINDOW 29 +#define TCP_FASTOPEN_CONNECT 30 +#define TCP_ULP 31 +#define TCP_MD5SIG_EXT 32 +#define TCP_FASTOPEN_KEY 33 +#define TCP_FASTOPEN_NO_COOKIE 34 +#define TCP_ZEROCOPY_RECEIVE 35 +#define TCP_INQ 36 +#define TCP_TX_DELAY 37 + +#define TCP_CM_INQ TCP_INQ + +#define TCP_ESTABLISHED 1 +#define TCP_SYN_SENT 2 +#define TCP_SYN_RECV 3 +#define TCP_FIN_WAIT1 4 +#define TCP_FIN_WAIT2 5 +#define TCP_TIME_WAIT 6 +#define TCP_CLOSE 7 +#define TCP_CLOSE_WAIT 8 +#define TCP_LAST_ACK 9 +#define TCP_LISTEN 10 +#define TCP_CLOSING 11 + +enum { + TCP_NLA_PAD, + TCP_NLA_BUSY, + TCP_NLA_RWND_LIMITED, + TCP_NLA_SNDBUF_LIMITED, + TCP_NLA_DATA_SEGS_OUT, + TCP_NLA_TOTAL_RETRANS, + TCP_NLA_PACING_RATE, + TCP_NLA_DELIVERY_RATE, + TCP_NLA_SND_CWND, + TCP_NLA_REORDERING, + TCP_NLA_MIN_RTT, + TCP_NLA_RECUR_RETRANS, + TCP_NLA_DELIVERY_RATE_APP_LMT, + TCP_NLA_SNDQ_SIZE, + TCP_NLA_CA_STATE, + TCP_NLA_SND_SSTHRESH, + TCP_NLA_DELIVERED, + TCP_NLA_DELIVERED_CE, + TCP_NLA_BYTES_SENT, + TCP_NLA_BYTES_RETRANS, + TCP_NLA_DSACK_DUPS, + TCP_NLA_REORD_SEEN, + TCP_NLA_SRTT, +}; + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define TCPOPT_EOL 0 +#define TCPOPT_NOP 1 +#define TCPOPT_MAXSEG 2 +#define TCPOPT_WINDOW 3 +#define TCPOPT_SACK_PERMITTED 4 +#define TCPOPT_SACK 5 +#define TCPOPT_TIMESTAMP 8 +#define TCPOLEN_SACK_PERMITTED 2 +#define TCPOLEN_WINDOW 3 +#define TCPOLEN_MAXSEG 4 +#define TCPOLEN_TIMESTAMP 10 + +#define SOL_TCP 6 + +#include +#include +#include + +typedef uint32_t tcp_seq; + +#define TH_FIN 0x01 +#define TH_SYN 0x02 +#define TH_RST 0x04 +#define TH_PUSH 0x08 +#define TH_ACK 0x10 +#define TH_URG 0x20 + +struct tcphdr { +#ifdef _GNU_SOURCE +#ifdef __GNUC__ + __extension__ +#endif + union { struct { + + uint16_t source; + uint16_t dest; + uint32_t seq; + uint32_t ack_seq; +#if __BYTE_ORDER == __LITTLE_ENDIAN + uint16_t res1:4; + uint16_t doff:4; + uint16_t fin:1; + uint16_t syn:1; + uint16_t rst:1; + uint16_t psh:1; + uint16_t ack:1; + uint16_t urg:1; + uint16_t res2:2; +#else + uint16_t doff:4; + uint16_t res1:4; + uint16_t res2:2; + uint16_t urg:1; + uint16_t ack:1; + uint16_t psh:1; + uint16_t rst:1; + uint16_t syn:1; + uint16_t fin:1; +#endif + uint16_t window; + uint16_t check; + uint16_t urg_ptr; + + }; struct { +#endif + + uint16_t th_sport; + uint16_t th_dport; + uint32_t th_seq; + uint32_t th_ack; +#if __BYTE_ORDER == __LITTLE_ENDIAN + uint8_t th_x2:4; + uint8_t th_off:4; +#else + uint8_t th_off:4; + uint8_t th_x2:4; +#endif + uint8_t th_flags; + uint16_t th_win; + uint16_t th_sum; + uint16_t th_urp; + +#ifdef _GNU_SOURCE + }; }; +#endif +}; +#endif + +#ifdef _GNU_SOURCE +#define TCPI_OPT_TIMESTAMPS 1 +#define TCPI_OPT_SACK 2 +#define TCPI_OPT_WSCALE 4 +#define TCPI_OPT_ECN 8 + +#define TCP_CA_Open 0 +#define TCP_CA_Disorder 1 +#define TCP_CA_CWR 2 +#define TCP_CA_Recovery 3 +#define TCP_CA_Loss 4 + +struct tcp_info { + uint8_t tcpi_state; + uint8_t tcpi_ca_state; + uint8_t tcpi_retransmits; + uint8_t tcpi_probes; + uint8_t tcpi_backoff; + uint8_t tcpi_options; + uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; + uint8_t tcpi_delivery_rate_app_limited : 1; + uint32_t tcpi_rto; + uint32_t tcpi_ato; + uint32_t tcpi_snd_mss; + uint32_t tcpi_rcv_mss; + uint32_t tcpi_unacked; + uint32_t tcpi_sacked; + uint32_t tcpi_lost; + uint32_t tcpi_retrans; + uint32_t tcpi_fackets; + uint32_t tcpi_last_data_sent; + uint32_t tcpi_last_ack_sent; + uint32_t tcpi_last_data_recv; + uint32_t tcpi_last_ack_recv; + uint32_t tcpi_pmtu; + uint32_t tcpi_rcv_ssthresh; + uint32_t tcpi_rtt; + uint32_t tcpi_rttvar; + uint32_t tcpi_snd_ssthresh; + uint32_t tcpi_snd_cwnd; + uint32_t tcpi_advmss; + uint32_t tcpi_reordering; + uint32_t tcpi_rcv_rtt; + uint32_t tcpi_rcv_space; + uint32_t tcpi_total_retrans; + uint64_t tcpi_pacing_rate; + uint64_t tcpi_max_pacing_rate; + uint64_t tcpi_bytes_acked; + uint64_t tcpi_bytes_received; + uint32_t tcpi_segs_out; + uint32_t tcpi_segs_in; + uint32_t tcpi_notsent_bytes; + uint32_t tcpi_min_rtt; + uint32_t tcpi_data_segs_in; + uint32_t tcpi_data_segs_out; + uint64_t tcpi_delivery_rate; + uint64_t tcpi_busy_time; + uint64_t tcpi_rwnd_limited; + uint64_t tcpi_sndbuf_limited; + uint32_t tcpi_delivered; + uint32_t tcpi_delivered_ce; + uint64_t tcpi_bytes_sent; + uint64_t tcpi_bytes_retrans; + uint32_t tcpi_dsack_dups; + uint32_t tcpi_reord_seen; + uint32_t tcpi_rcv_ooopack; + uint32_t tcpi_snd_wnd; +}; + +#define TCP_MD5SIG_MAXKEYLEN 80 + +#define TCP_MD5SIG_FLAG_PREFIX 1 + +struct tcp_md5sig { + struct sockaddr_storage tcpm_addr; + uint8_t tcpm_flags; + uint8_t tcpm_prefixlen; + uint16_t tcpm_keylen; + uint32_t __tcpm_pad; + uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; +}; + +struct tcp_diag_md5sig { + uint8_t tcpm_family; + uint8_t tcpm_prefixlen; + uint16_t tcpm_keylen; + uint32_t tcpm_addr[4]; + uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; +}; + +#define TCP_REPAIR_ON 1 +#define TCP_REPAIR_OFF 0 +#define TCP_REPAIR_OFF_NO_WP -1 + +struct tcp_repair_window { + uint32_t snd_wl1; + uint32_t snd_wnd; + uint32_t max_window; + uint32_t rcv_wnd; + uint32_t rcv_wup; +}; + +struct tcp_zerocopy_receive { + uint64_t address; + uint32_t length; + uint32_t recv_skip_hint; +}; + +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netinet/udp.h b/vendor/modernc.org/libc/musl/include/netinet/udp.h new file mode 100644 index 000000000..ffd890796 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netinet/udp.h @@ -0,0 +1,45 @@ +#ifndef _NETINET_UDP_H +#define _NETINET_UDP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef _GNU_SOURCE +#define uh_sport source +#define uh_dport dest +#define uh_ulen len +#define uh_sum check +#endif + +struct udphdr { + uint16_t uh_sport; + uint16_t uh_dport; + uint16_t uh_ulen; + uint16_t uh_sum; +}; + +#define UDP_CORK 1 +#define UDP_ENCAP 100 +#define UDP_NO_CHECK6_TX 101 +#define UDP_NO_CHECK6_RX 102 +#define UDP_SEGMENT 103 +#define UDP_GRO 104 + +#define UDP_ENCAP_ESPINUDP_NON_IKE 1 +#define UDP_ENCAP_ESPINUDP 2 +#define UDP_ENCAP_L2TPINUDP 3 +#define UDP_ENCAP_GTP0 4 +#define UDP_ENCAP_GTP1U 5 +#define UDP_ENCAP_RXRPC 6 + +#define SOL_UDP 17 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/netpacket/packet.h b/vendor/modernc.org/libc/musl/include/netpacket/packet.h new file mode 100644 index 000000000..b36e092ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/netpacket/packet.h @@ -0,0 +1,62 @@ +#ifndef _NETPACKET_PACKET_H +#define _NETPACKET_PACKET_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct sockaddr_ll { + unsigned short sll_family, sll_protocol; + int sll_ifindex; + unsigned short sll_hatype; + unsigned char sll_pkttype, sll_halen; + unsigned char sll_addr[8]; +}; + +struct packet_mreq { + int mr_ifindex; + unsigned short int mr_type, mr_alen; + unsigned char mr_address[8]; +}; + +#define PACKET_HOST 0 +#define PACKET_BROADCAST 1 +#define PACKET_MULTICAST 2 +#define PACKET_OTHERHOST 3 +#define PACKET_OUTGOING 4 +#define PACKET_LOOPBACK 5 +#define PACKET_FASTROUTE 6 + +#define PACKET_ADD_MEMBERSHIP 1 +#define PACKET_DROP_MEMBERSHIP 2 +#define PACKET_RECV_OUTPUT 3 +#define PACKET_RX_RING 5 +#define PACKET_STATISTICS 6 +#define PACKET_COPY_THRESH 7 +#define PACKET_AUXDATA 8 +#define PACKET_ORIGDEV 9 +#define PACKET_VERSION 10 +#define PACKET_HDRLEN 11 +#define PACKET_RESERVE 12 +#define PACKET_TX_RING 13 +#define PACKET_LOSS 14 +#define PACKET_VNET_HDR 15 +#define PACKET_TX_TIMESTAMP 16 +#define PACKET_TIMESTAMP 17 +#define PACKET_FANOUT 18 +#define PACKET_TX_HAS_OFF 19 +#define PACKET_QDISC_BYPASS 20 +#define PACKET_ROLLOVER_STATS 21 +#define PACKET_FANOUT_DATA 22 +#define PACKET_IGNORE_OUTGOING 23 + +#define PACKET_MR_MULTICAST 0 +#define PACKET_MR_PROMISC 1 +#define PACKET_MR_ALLMULTI 2 +#define PACKET_MR_UNICAST 3 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/nl_types.h b/vendor/modernc.org/libc/musl/include/nl_types.h new file mode 100644 index 000000000..7c2d48e0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/nl_types.h @@ -0,0 +1,22 @@ +#ifndef _NL_TYPES_H +#define _NL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define NL_SETD 1 +#define NL_CAT_LOCALE 1 + +typedef int nl_item; +typedef void *nl_catd; + +nl_catd catopen (const char *, int); +char *catgets (nl_catd, int, int, const char *); +int catclose (nl_catd); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/paths.h b/vendor/modernc.org/libc/musl/include/paths.h new file mode 100644 index 000000000..67de6b3c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/paths.h @@ -0,0 +1,31 @@ +#ifndef _PATHS_H +#define _PATHS_H + +#define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin" +#define _PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin" + +#define _PATH_BSHELL "/bin/sh" +#define _PATH_CONSOLE "/dev/console" +#define _PATH_DEVNULL "/dev/null" +#define _PATH_KLOG "/proc/kmsg" +#define _PATH_LASTLOG "/var/log/lastlog" +#define _PATH_MAILDIR "/var/mail" +#define _PATH_MAN "/usr/share/man" +#define _PATH_MNTTAB "/etc/fstab" +#define _PATH_MOUNTED "/etc/mtab" +#define _PATH_NOLOGIN "/etc/nologin" +#define _PATH_SENDMAIL "/usr/sbin/sendmail" +#define _PATH_SHADOW "/etc/shadow" +#define _PATH_SHELLS "/etc/shells" +#define _PATH_TTY "/dev/tty" +#define _PATH_UTMP "/dev/null/utmp" +#define _PATH_VI "/usr/bin/vi" +#define _PATH_WTMP "/dev/null/wtmp" + +#define _PATH_DEV "/dev/" +#define _PATH_TMP "/tmp/" +#define _PATH_VARDB "/var/lib/misc/" +#define _PATH_VARRUN "/var/run/" +#define _PATH_VARTMP "/var/tmp/" + +#endif diff --git a/vendor/modernc.org/libc/musl/include/poll.h b/vendor/modernc.org/libc/musl/include/poll.h new file mode 100644 index 000000000..472e4b847 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/poll.h @@ -0,0 +1,57 @@ +#ifndef _POLL_H +#define _POLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +#define POLLIN 0x001 +#define POLLPRI 0x002 +#define POLLOUT 0x004 +#define POLLERR 0x008 +#define POLLHUP 0x010 +#define POLLNVAL 0x020 +#define POLLRDNORM 0x040 +#define POLLRDBAND 0x080 +#ifndef POLLWRNORM +#define POLLWRNORM 0x100 +#define POLLWRBAND 0x200 +#endif +#ifndef POLLMSG +#define POLLMSG 0x400 +#define POLLRDHUP 0x2000 +#endif + +typedef unsigned long nfds_t; + +struct pollfd { + int fd; + short events; + short revents; +}; + +int poll (struct pollfd *, nfds_t, int); + +#ifdef _GNU_SOURCE +#define __NEED_time_t +#define __NEED_struct_timespec +#define __NEED_sigset_t +#include +int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *); +#endif + +#if _REDIR_TIME64 +#ifdef _GNU_SOURCE +__REDIR(ppoll, __ppoll_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/pthread.h b/vendor/modernc.org/libc/musl/include/pthread.h new file mode 100644 index 000000000..0492f26a6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/pthread.h @@ -0,0 +1,243 @@ +#ifndef _PTHREAD_H +#define _PTHREAD_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_time_t +#define __NEED_clockid_t +#define __NEED_struct_timespec +#define __NEED_sigset_t +#define __NEED_pthread_t +#define __NEED_pthread_attr_t +#define __NEED_pthread_mutexattr_t +#define __NEED_pthread_condattr_t +#define __NEED_pthread_rwlockattr_t +#define __NEED_pthread_barrierattr_t +#define __NEED_pthread_mutex_t +#define __NEED_pthread_cond_t +#define __NEED_pthread_rwlock_t +#define __NEED_pthread_barrier_t +#define __NEED_pthread_spinlock_t +#define __NEED_pthread_key_t +#define __NEED_pthread_once_t +#define __NEED_size_t + +#include + +#include +#include + +#define PTHREAD_CREATE_JOINABLE 0 +#define PTHREAD_CREATE_DETACHED 1 + +#define PTHREAD_MUTEX_NORMAL 0 +#define PTHREAD_MUTEX_DEFAULT 0 +#define PTHREAD_MUTEX_RECURSIVE 1 +#define PTHREAD_MUTEX_ERRORCHECK 2 + +#define PTHREAD_MUTEX_STALLED 0 +#define PTHREAD_MUTEX_ROBUST 1 + +#define PTHREAD_PRIO_NONE 0 +#define PTHREAD_PRIO_INHERIT 1 +#define PTHREAD_PRIO_PROTECT 2 + +#define PTHREAD_INHERIT_SCHED 0 +#define PTHREAD_EXPLICIT_SCHED 1 + +#define PTHREAD_SCOPE_SYSTEM 0 +#define PTHREAD_SCOPE_PROCESS 1 + +#define PTHREAD_PROCESS_PRIVATE 0 +#define PTHREAD_PROCESS_SHARED 1 + + +#define PTHREAD_MUTEX_INITIALIZER {{{0}}} +#define PTHREAD_RWLOCK_INITIALIZER {{{0}}} +#define PTHREAD_COND_INITIALIZER {{{0}}} +#define PTHREAD_ONCE_INIT 0 + + +#define PTHREAD_CANCEL_ENABLE 0 +#define PTHREAD_CANCEL_DISABLE 1 +#define PTHREAD_CANCEL_MASKED 2 + +#define PTHREAD_CANCEL_DEFERRED 0 +#define PTHREAD_CANCEL_ASYNCHRONOUS 1 + +#define PTHREAD_CANCELED ((void *)-1) + + +#define PTHREAD_BARRIER_SERIAL_THREAD (-1) + + +#define PTHREAD_NULL ((pthread_t)0) + + +int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict); +int pthread_detach(pthread_t); +_Noreturn void pthread_exit(void *); +int pthread_join(pthread_t, void **); + +#ifdef __GNUC__ +__attribute__((const)) +#endif +pthread_t pthread_self(void); + +int pthread_equal(pthread_t, pthread_t); +#ifndef __cplusplus +#define pthread_equal(x,y) ((x)==(y)) +#endif + +int pthread_setcancelstate(int, int *); +int pthread_setcanceltype(int, int *); +void pthread_testcancel(void); +int pthread_cancel(pthread_t); + +int pthread_getschedparam(pthread_t, int *__restrict, struct sched_param *__restrict); +int pthread_setschedparam(pthread_t, int, const struct sched_param *); +int pthread_setschedprio(pthread_t, int); + +int pthread_once(pthread_once_t *, void (*)(void)); + +int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict); +int pthread_mutex_lock(pthread_mutex_t *); +int pthread_mutex_unlock(pthread_mutex_t *); +int pthread_mutex_trylock(pthread_mutex_t *); +int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec *__restrict); +int pthread_mutex_destroy(pthread_mutex_t *); +int pthread_mutex_consistent(pthread_mutex_t *); + +int pthread_mutex_getprioceiling(const pthread_mutex_t *__restrict, int *__restrict); +int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict, int, int *__restrict); + +int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict); +int pthread_cond_destroy(pthread_cond_t *); +int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict); +int pthread_cond_timedwait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict, const struct timespec *__restrict); +int pthread_cond_broadcast(pthread_cond_t *); +int pthread_cond_signal(pthread_cond_t *); + +int pthread_rwlock_init(pthread_rwlock_t *__restrict, const pthread_rwlockattr_t *__restrict); +int pthread_rwlock_destroy(pthread_rwlock_t *); +int pthread_rwlock_rdlock(pthread_rwlock_t *); +int pthread_rwlock_tryrdlock(pthread_rwlock_t *); +int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); +int pthread_rwlock_wrlock(pthread_rwlock_t *); +int pthread_rwlock_trywrlock(pthread_rwlock_t *); +int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); +int pthread_rwlock_unlock(pthread_rwlock_t *); + +int pthread_spin_init(pthread_spinlock_t *, int); +int pthread_spin_destroy(pthread_spinlock_t *); +int pthread_spin_lock(pthread_spinlock_t *); +int pthread_spin_trylock(pthread_spinlock_t *); +int pthread_spin_unlock(pthread_spinlock_t *); + +int pthread_barrier_init(pthread_barrier_t *__restrict, const pthread_barrierattr_t *__restrict, unsigned); +int pthread_barrier_destroy(pthread_barrier_t *); +int pthread_barrier_wait(pthread_barrier_t *); + +int pthread_key_create(pthread_key_t *, void (*)(void *)); +int pthread_key_delete(pthread_key_t); +void *pthread_getspecific(pthread_key_t); +int pthread_setspecific(pthread_key_t, const void *); + +int pthread_attr_init(pthread_attr_t *); +int pthread_attr_destroy(pthread_attr_t *); + +int pthread_attr_getguardsize(const pthread_attr_t *__restrict, size_t *__restrict); +int pthread_attr_setguardsize(pthread_attr_t *, size_t); +int pthread_attr_getstacksize(const pthread_attr_t *__restrict, size_t *__restrict); +int pthread_attr_setstacksize(pthread_attr_t *, size_t); +int pthread_attr_getdetachstate(const pthread_attr_t *, int *); +int pthread_attr_setdetachstate(pthread_attr_t *, int); +int pthread_attr_getstack(const pthread_attr_t *__restrict, void **__restrict, size_t *__restrict); +int pthread_attr_setstack(pthread_attr_t *, void *, size_t); +int pthread_attr_getscope(const pthread_attr_t *__restrict, int *__restrict); +int pthread_attr_setscope(pthread_attr_t *, int); +int pthread_attr_getschedpolicy(const pthread_attr_t *__restrict, int *__restrict); +int pthread_attr_setschedpolicy(pthread_attr_t *, int); +int pthread_attr_getschedparam(const pthread_attr_t *__restrict, struct sched_param *__restrict); +int pthread_attr_setschedparam(pthread_attr_t *__restrict, const struct sched_param *__restrict); +int pthread_attr_getinheritsched(const pthread_attr_t *__restrict, int *__restrict); +int pthread_attr_setinheritsched(pthread_attr_t *, int); + +int pthread_mutexattr_destroy(pthread_mutexattr_t *); +int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_init(pthread_mutexattr_t *); +int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); +int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); +int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); +int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int); +int pthread_mutexattr_settype(pthread_mutexattr_t *, int); + +int pthread_condattr_init(pthread_condattr_t *); +int pthread_condattr_destroy(pthread_condattr_t *); +int pthread_condattr_setclock(pthread_condattr_t *, clockid_t); +int pthread_condattr_setpshared(pthread_condattr_t *, int); +int pthread_condattr_getclock(const pthread_condattr_t *__restrict, clockid_t *__restrict); +int pthread_condattr_getpshared(const pthread_condattr_t *__restrict, int *__restrict); + +int pthread_rwlockattr_init(pthread_rwlockattr_t *); +int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); +int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); +int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict, int *__restrict); + +int pthread_barrierattr_destroy(pthread_barrierattr_t *); +int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict, int *__restrict); +int pthread_barrierattr_init(pthread_barrierattr_t *); +int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int); + +int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); + +int pthread_getconcurrency(void); +int pthread_setconcurrency(int); + +int pthread_getcpuclockid(pthread_t, clockid_t *); + +struct __ptcb { + void (*__f)(void *); + void *__x; + struct __ptcb *__next; +}; + +void _pthread_cleanup_push(struct __ptcb *, void (*)(void *), void *); +void _pthread_cleanup_pop(struct __ptcb *, int); + +#define pthread_cleanup_push(f, x) do { struct __ptcb __cb; _pthread_cleanup_push(&__cb, f, x); +#define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0) + +#ifdef _GNU_SOURCE +struct cpu_set_t; +int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *); +int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *); +int pthread_getattr_np(pthread_t, pthread_attr_t *); +int pthread_setname_np(pthread_t, const char *); +int pthread_getattr_default_np(pthread_attr_t *); +int pthread_setattr_default_np(const pthread_attr_t *); +int pthread_tryjoin_np(pthread_t, void **); +int pthread_timedjoin_np(pthread_t, void **, const struct timespec *); +#endif + +#if _REDIR_TIME64 +__REDIR(pthread_mutex_timedlock, __pthread_mutex_timedlock_time64); +__REDIR(pthread_cond_timedwait, __pthread_cond_timedwait_time64); +__REDIR(pthread_rwlock_timedrdlock, __pthread_rwlock_timedrdlock_time64); +__REDIR(pthread_rwlock_timedwrlock, __pthread_rwlock_timedwrlock_time64); +#ifdef _GNU_SOURCE +__REDIR(pthread_timedjoin_np, __pthread_timedjoin_np_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/pty.h b/vendor/modernc.org/libc/musl/include/pty.h new file mode 100644 index 000000000..db6385341 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/pty.h @@ -0,0 +1,18 @@ +#ifndef _PTY_H +#define _PTY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +int openpty(int *, int *, char *, const struct termios *, const struct winsize *); +int forkpty(int *, char *, const struct termios *, const struct winsize *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/pwd.h b/vendor/modernc.org/libc/musl/include/pwd.h new file mode 100644 index 000000000..4f470b558 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/pwd.h @@ -0,0 +1,50 @@ +#ifndef _PWD_H +#define _PWD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_uid_t +#define __NEED_gid_t + +#ifdef _GNU_SOURCE +#define __NEED_FILE +#endif + +#include + +struct passwd { + char *pw_name; + char *pw_passwd; + uid_t pw_uid; + gid_t pw_gid; + char *pw_gecos; + char *pw_dir; + char *pw_shell; +}; + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +void setpwent (void); +void endpwent (void); +struct passwd *getpwent (void); +#endif + +struct passwd *getpwuid (uid_t); +struct passwd *getpwnam (const char *); +int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **); +int getpwnam_r (const char *, struct passwd *, char *, size_t, struct passwd **); + +#ifdef _GNU_SOURCE +struct passwd *fgetpwent(FILE *); +int putpwent(const struct passwd *, FILE *); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/regex.h b/vendor/modernc.org/libc/musl/include/regex.h new file mode 100644 index 000000000..dce217718 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/regex.h @@ -0,0 +1,62 @@ +#ifndef _REGEX_H +#define _REGEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_regoff_t +#define __NEED_size_t + +#include + +typedef struct re_pattern_buffer { + size_t re_nsub; + void *__opaque, *__padding[4]; + size_t __nsub2; + char __padding2; +} regex_t; + +typedef struct { + regoff_t rm_so; + regoff_t rm_eo; +} regmatch_t; + +#define REG_EXTENDED 1 +#define REG_ICASE 2 +#define REG_NEWLINE 4 +#define REG_NOSUB 8 + +#define REG_NOTBOL 1 +#define REG_NOTEOL 2 + +#define REG_OK 0 +#define REG_NOMATCH 1 +#define REG_BADPAT 2 +#define REG_ECOLLATE 3 +#define REG_ECTYPE 4 +#define REG_EESCAPE 5 +#define REG_ESUBREG 6 +#define REG_EBRACK 7 +#define REG_EPAREN 8 +#define REG_EBRACE 9 +#define REG_BADBR 10 +#define REG_ERANGE 11 +#define REG_ESPACE 12 +#define REG_BADRPT 13 + +#define REG_ENOSYS -1 + +int regcomp(regex_t *__restrict, const char *__restrict, int); +int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int); +void regfree(regex_t *); + +size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/resolv.h b/vendor/modernc.org/libc/musl/include/resolv.h new file mode 100644 index 000000000..8b23ad66c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/resolv.h @@ -0,0 +1,142 @@ +#ifndef _RESOLV_H +#define _RESOLV_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXNS 3 +#define MAXDFLSRCH 3 +#define MAXDNSRCH 6 +#define LOCALDOMAINPARTS 2 + +#define RES_TIMEOUT 5 +#define MAXRESOLVSORT 10 +#define RES_MAXNDOTS 15 +#define RES_MAXRETRANS 30 +#define RES_MAXRETRY 5 +#define RES_DFLRETRY 2 +#define RES_MAXTIME 65535 + +/* unused; purely for broken apps */ +typedef struct __res_state { + int retrans; + int retry; + unsigned long options; + int nscount; + struct sockaddr_in nsaddr_list[MAXNS]; +# define nsaddr nsaddr_list[0] + unsigned short id; + char *dnsrch[MAXDNSRCH+1]; + char defdname[256]; + unsigned long pfcode; + unsigned ndots:4; + unsigned nsort:4; + unsigned ipv6_unavail:1; + unsigned unused:23; + struct { + struct in_addr addr; + uint32_t mask; + } sort_list[MAXRESOLVSORT]; + void *qhook; + void *rhook; + int res_h_errno; + int _vcsock; + unsigned _flags; + union { + char pad[52]; + struct { + uint16_t nscount; + uint16_t nsmap[MAXNS]; + int nssocks[MAXNS]; + uint16_t nscount6; + uint16_t nsinit; + struct sockaddr_in6 *nsaddrs[MAXNS]; + unsigned int _initstamp[2]; + } _ext; + } _u; +} *res_state; + +#define __RES 19960801 + +#ifndef _PATH_RESCONF +#define _PATH_RESCONF "/etc/resolv.conf" +#endif + +struct res_sym { + int number; + char *name; + char *humanname; +}; + +#define RES_F_VC 0x00000001 +#define RES_F_CONN 0x00000002 +#define RES_F_EDNS0ERR 0x00000004 + +#define RES_EXHAUSTIVE 0x00000001 + +#define RES_INIT 0x00000001 +#define RES_DEBUG 0x00000002 +#define RES_AAONLY 0x00000004 +#define RES_USEVC 0x00000008 +#define RES_PRIMARY 0x00000010 +#define RES_IGNTC 0x00000020 +#define RES_RECURSE 0x00000040 +#define RES_DEFNAMES 0x00000080 +#define RES_STAYOPEN 0x00000100 +#define RES_DNSRCH 0x00000200 +#define RES_INSECURE1 0x00000400 +#define RES_INSECURE2 0x00000800 +#define RES_NOALIASES 0x00001000 +#define RES_USE_INET6 0x00002000 +#define RES_ROTATE 0x00004000 +#define RES_NOCHECKNAME 0x00008000 +#define RES_KEEPTSIG 0x00010000 +#define RES_BLAST 0x00020000 +#define RES_USEBSTRING 0x00040000 +#define RES_NOIP6DOTINT 0x00080000 +#define RES_USE_EDNS0 0x00100000 +#define RES_SNGLKUP 0x00200000 +#define RES_SNGLKUPREOP 0x00400000 +#define RES_USE_DNSSEC 0x00800000 + +#define RES_DEFAULT (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT) + +#define RES_PRF_STATS 0x00000001 +#define RES_PRF_UPDATE 0x00000002 +#define RES_PRF_CLASS 0x00000004 +#define RES_PRF_CMD 0x00000008 +#define RES_PRF_QUES 0x00000010 +#define RES_PRF_ANS 0x00000020 +#define RES_PRF_AUTH 0x00000040 +#define RES_PRF_ADD 0x00000080 +#define RES_PRF_HEAD1 0x00000100 +#define RES_PRF_HEAD2 0x00000200 +#define RES_PRF_TTLID 0x00000400 +#define RES_PRF_HEADX 0x00000800 +#define RES_PRF_QUERY 0x00001000 +#define RES_PRF_REPLY 0x00002000 +#define RES_PRF_INIT 0x00004000 + +struct __res_state *__res_state(void); +#define _res (*__res_state()) + +int res_init(void); +int res_query(const char *, int, int, unsigned char *, int); +int res_querydomain(const char *, const char *, int, int, unsigned char *, int); +int res_search(const char *, int, int, unsigned char *, int); +int res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int); +int res_send(const unsigned char *, int, unsigned char *, int); +int dn_comp(const char *, unsigned char *, int, unsigned char **, unsigned char **); +int dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int); +int dn_skipname(const unsigned char *, const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sched.h b/vendor/modernc.org/libc/musl/include/sched.h new file mode 100644 index 000000000..822f464ef --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sched.h @@ -0,0 +1,147 @@ +#ifndef _SCHED_H +#define _SCHED_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_struct_timespec +#define __NEED_pid_t +#define __NEED_time_t + +#ifdef _GNU_SOURCE +#define __NEED_size_t +#endif + +#include + +struct sched_param { + int sched_priority; + int __reserved1; +#if _REDIR_TIME64 + long __reserved2[4]; +#else + struct { + time_t __reserved1; + long __reserved2; + } __reserved2[2]; +#endif + int __reserved3; +}; + +int sched_get_priority_max(int); +int sched_get_priority_min(int); +int sched_getparam(pid_t, struct sched_param *); +int sched_getscheduler(pid_t); +int sched_rr_get_interval(pid_t, struct timespec *); +int sched_setparam(pid_t, const struct sched_param *); +int sched_setscheduler(pid_t, int, const struct sched_param *); +int sched_yield(void); + +#define SCHED_OTHER 0 +#define SCHED_FIFO 1 +#define SCHED_RR 2 +#define SCHED_BATCH 3 +#define SCHED_IDLE 5 +#define SCHED_DEADLINE 6 +#define SCHED_RESET_ON_FORK 0x40000000 + +#ifdef _GNU_SOURCE +#define CSIGNAL 0x000000ff +#define CLONE_VM 0x00000100 +#define CLONE_FS 0x00000200 +#define CLONE_FILES 0x00000400 +#define CLONE_SIGHAND 0x00000800 +#define CLONE_PIDFD 0x00001000 +#define CLONE_PTRACE 0x00002000 +#define CLONE_VFORK 0x00004000 +#define CLONE_PARENT 0x00008000 +#define CLONE_THREAD 0x00010000 +#define CLONE_NEWNS 0x00020000 +#define CLONE_SYSVSEM 0x00040000 +#define CLONE_SETTLS 0x00080000 +#define CLONE_PARENT_SETTID 0x00100000 +#define CLONE_CHILD_CLEARTID 0x00200000 +#define CLONE_DETACHED 0x00400000 +#define CLONE_UNTRACED 0x00800000 +#define CLONE_CHILD_SETTID 0x01000000 +#define CLONE_NEWCGROUP 0x02000000 +#define CLONE_NEWUTS 0x04000000 +#define CLONE_NEWIPC 0x08000000 +#define CLONE_NEWUSER 0x10000000 +#define CLONE_NEWPID 0x20000000 +#define CLONE_NEWNET 0x40000000 +#define CLONE_IO 0x80000000 +int clone (int (*)(void *), void *, int, void *, ...); +int unshare(int); +int setns(int, int); + +void *memcpy(void *__restrict, const void *__restrict, size_t); +int memcmp(const void *, const void *, size_t); +void *memset (void *, int, size_t); +void *calloc(size_t, size_t); +void free(void *); + +typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t; +int __sched_cpucount(size_t, const cpu_set_t *); +int sched_getcpu(void); +int sched_getaffinity(pid_t, size_t, cpu_set_t *); +int sched_setaffinity(pid_t, size_t, const cpu_set_t *); + +#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \ + (((unsigned long *)(set))[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) ) + +#define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=) +#define CPU_CLR_S(i, size, set) __CPU_op_S(i, size, set, &=~) +#define CPU_ISSET_S(i, size, set) __CPU_op_S(i, size, set, &) + +#define __CPU_op_func_S(func, op) \ +static __inline void __CPU_##func##_S(size_t __size, cpu_set_t *__dest, \ + const cpu_set_t *__src1, const cpu_set_t *__src2) \ +{ \ + size_t __i; \ + for (__i=0; __i<__size/sizeof(long); __i++) \ + ((unsigned long *)__dest)[__i] = ((unsigned long *)__src1)[__i] \ + op ((unsigned long *)__src2)[__i] ; \ +} + +__CPU_op_func_S(AND, &) +__CPU_op_func_S(OR, |) +__CPU_op_func_S(XOR, ^) + +#define CPU_AND_S(a,b,c,d) __CPU_AND_S(a,b,c,d) +#define CPU_OR_S(a,b,c,d) __CPU_OR_S(a,b,c,d) +#define CPU_XOR_S(a,b,c,d) __CPU_XOR_S(a,b,c,d) + +#define CPU_COUNT_S(size,set) __sched_cpucount(size,set) +#define CPU_ZERO_S(size,set) memset(set,0,size) +#define CPU_EQUAL_S(size,set1,set2) (!memcmp(set1,set2,size)) + +#define CPU_ALLOC_SIZE(n) (sizeof(long) * ( (n)/(8*sizeof(long)) \ + + ((n)%(8*sizeof(long)) + 8*sizeof(long)-1)/(8*sizeof(long)) ) ) +#define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n))) +#define CPU_FREE(set) free(set) + +#define CPU_SETSIZE 128 + +#define CPU_SET(i, set) CPU_SET_S(i,sizeof(cpu_set_t),set) +#define CPU_CLR(i, set) CPU_CLR_S(i,sizeof(cpu_set_t),set) +#define CPU_ISSET(i, set) CPU_ISSET_S(i,sizeof(cpu_set_t),set) +#define CPU_AND(d,s1,s2) CPU_AND_S(sizeof(cpu_set_t),d,s1,s2) +#define CPU_OR(d,s1,s2) CPU_OR_S(sizeof(cpu_set_t),d,s1,s2) +#define CPU_XOR(d,s1,s2) CPU_XOR_S(sizeof(cpu_set_t),d,s1,s2) +#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t),set) +#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t),set) +#define CPU_EQUAL(s1,s2) CPU_EQUAL_S(sizeof(cpu_set_t),s1,s2) + +#endif + +#if _REDIR_TIME64 +__REDIR(sched_rr_get_interval, __sched_rr_get_interval_time64); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/scsi/scsi.h b/vendor/modernc.org/libc/musl/include/scsi/scsi.h new file mode 100644 index 000000000..8837f5875 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/scsi/scsi.h @@ -0,0 +1,150 @@ +#ifndef _SCSI_SCSI_H +#define _SCSI_SCSI_H + +#define TEST_UNIT_READY 0x00 +#define REZERO_UNIT 0x01 +#define REQUEST_SENSE 0x03 +#define FORMAT_UNIT 0x04 +#define READ_BLOCK_LIMITS 0x05 +#define REASSIGN_BLOCKS 0x07 +#define READ_6 0x08 +#define WRITE_6 0x0a +#define SEEK_6 0x0b +#define READ_REVERSE 0x0f +#define WRITE_FILEMARKS 0x10 +#define SPACE 0x11 +#define INQUIRY 0x12 +#define RECOVER_BUFFERED_DATA 0x14 +#define MODE_SELECT 0x15 +#define RESERVE 0x16 +#define RELEASE 0x17 +#define COPY 0x18 +#define ERASE 0x19 +#define MODE_SENSE 0x1a +#define START_STOP 0x1b +#define RECEIVE_DIAGNOSTIC 0x1c +#define SEND_DIAGNOSTIC 0x1d +#define ALLOW_MEDIUM_REMOVAL 0x1e +#define SET_WINDOW 0x24 +#define READ_CAPACITY 0x25 +#define READ_10 0x28 +#define WRITE_10 0x2a +#define SEEK_10 0x2b +#define WRITE_VERIFY 0x2e +#define VERIFY 0x2f +#define SEARCH_HIGH 0x30 +#define SEARCH_EQUAL 0x31 +#define SEARCH_LOW 0x32 +#define SET_LIMITS 0x33 +#define PRE_FETCH 0x34 +#define READ_POSITION 0x34 +#define SYNCHRONIZE_CACHE 0x35 +#define LOCK_UNLOCK_CACHE 0x36 +#define READ_DEFECT_DATA 0x37 +#define MEDIUM_SCAN 0x38 +#define COMPARE 0x39 +#define COPY_VERIFY 0x3a +#define WRITE_BUFFER 0x3b +#define READ_BUFFER 0x3c +#define UPDATE_BLOCK 0x3d +#define READ_LONG 0x3e +#define WRITE_LONG 0x3f +#define CHANGE_DEFINITION 0x40 +#define WRITE_SAME 0x41 +#define READ_TOC 0x43 +#define LOG_SELECT 0x4c +#define LOG_SENSE 0x4d +#define MODE_SELECT_10 0x55 +#define RESERVE_10 0x56 +#define RELEASE_10 0x57 +#define MODE_SENSE_10 0x5a +#define PERSISTENT_RESERVE_IN 0x5e +#define PERSISTENT_RESERVE_OUT 0x5f +#define MOVE_MEDIUM 0xa5 +#define READ_12 0xa8 +#define WRITE_12 0xaa +#define WRITE_VERIFY_12 0xae +#define SEARCH_HIGH_12 0xb0 +#define SEARCH_EQUAL_12 0xb1 +#define SEARCH_LOW_12 0xb2 +#define READ_ELEMENT_STATUS 0xb8 +#define SEND_VOLUME_TAG 0xb6 +#define WRITE_LONG_2 0xea +#define GOOD 0x00 +#define CHECK_CONDITION 0x01 +#define CONDITION_GOOD 0x02 +#define BUSY 0x04 +#define INTERMEDIATE_GOOD 0x08 +#define INTERMEDIATE_C_GOOD 0x0a +#define RESERVATION_CONFLICT 0x0c +#define COMMAND_TERMINATED 0x11 +#define QUEUE_FULL 0x14 +#define STATUS_MASK 0x3e +#define NO_SENSE 0x00 +#define RECOVERED_ERROR 0x01 +#define NOT_READY 0x02 +#define MEDIUM_ERROR 0x03 +#define HARDWARE_ERROR 0x04 +#define ILLEGAL_REQUEST 0x05 +#define UNIT_ATTENTION 0x06 +#define DATA_PROTECT 0x07 +#define BLANK_CHECK 0x08 +#define COPY_ABORTED 0x0a +#define ABORTED_COMMAND 0x0b +#define VOLUME_OVERFLOW 0x0d +#define MISCOMPARE 0x0e +#define TYPE_DISK 0x00 +#define TYPE_TAPE 0x01 +#define TYPE_PROCESSOR 0x03 +#define TYPE_WORM 0x04 +#define TYPE_ROM 0x05 +#define TYPE_SCANNER 0x06 +#define TYPE_MOD 0x07 +#define TYPE_MEDIUM_CHANGER 0x08 +#define TYPE_ENCLOSURE 0x0d +#define TYPE_NO_LUN 0x7f +#define COMMAND_COMPLETE 0x00 +#define EXTENDED_MESSAGE 0x01 +#define EXTENDED_MODIFY_DATA_POINTER 0x00 +#define EXTENDED_SDTR 0x01 +#define EXTENDED_EXTENDED_IDENTIFY 0x02 +#define EXTENDED_WDTR 0x03 +#define SAVE_POINTERS 0x02 +#define RESTORE_POINTERS 0x03 +#define DISCONNECT 0x04 +#define INITIATOR_ERROR 0x05 +#define ABORT 0x06 +#define MESSAGE_REJECT 0x07 +#define NOP 0x08 +#define MSG_PARITY_ERROR 0x09 +#define LINKED_CMD_COMPLETE 0x0a +#define LINKED_FLG_CMD_COMPLETE 0x0b +#define BUS_DEVICE_RESET 0x0c +#define INITIATE_RECOVERY 0x0f +#define RELEASE_RECOVERY 0x10 +#define SIMPLE_QUEUE_TAG 0x20 +#define HEAD_OF_QUEUE_TAG 0x21 +#define ORDERED_QUEUE_TAG 0x22 +#define SCSI_IOCTL_GET_IDLUN 0x5382 +#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 +#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 +#define SCSI_IOCTL_PROBE_HOST 0x5385 +#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386 + +struct ccs_modesel_head { + unsigned char _r1; + unsigned char medium; + unsigned char _r2; + unsigned char block_desc_length; + unsigned char density; + unsigned char number_blocks_hi; + unsigned char number_blocks_med; + unsigned char number_blocks_lo; + unsigned char _r3; + unsigned char block_length_hi; + unsigned char block_length_med; + unsigned char block_length_lo; +}; + +#endif + diff --git a/vendor/modernc.org/libc/musl/include/scsi/scsi_ioctl.h b/vendor/modernc.org/libc/musl/include/scsi/scsi_ioctl.h new file mode 100644 index 000000000..22df7feff --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/scsi/scsi_ioctl.h @@ -0,0 +1,11 @@ +#ifndef _SCSI_IOCTL_H +#define _SCSI_IOCTL_H +#define SCSI_IOCTL_SEND_COMMAND 1 +#define SCSI_IOCTL_TEST_UNIT_READY 2 +#define SCSI_IOCTL_BENCHMARK_COMMAND 3 +#define SCSI_IOCTL_SYNC 4 +#define SCSI_IOCTL_START_UNIT 5 +#define SCSI_IOCTL_STOP_UNIT 6 +#define SCSI_IOCTL_DOORLOCK 0x5380 +#define SCSI_IOCTL_DOORUNLOCK 0x5381 +#endif diff --git a/vendor/modernc.org/libc/musl/include/scsi/sg.h b/vendor/modernc.org/libc/musl/include/scsi/sg.h new file mode 100644 index 000000000..a7ac247e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/scsi/sg.h @@ -0,0 +1,129 @@ +#ifndef _SCSI_SG_H +#define _SCSI_SG_H + +#define SG_DXFER_NONE -1 +#define SG_DXFER_TO_DEV -2 +#define SG_DXFER_FROM_DEV -3 +#define SG_DXFER_TO_FROM_DEV -4 +#define SG_FLAG_DIRECT_IO 1 +#define SG_FLAG_LUN_INHIBIT 2 +#define SG_FLAG_NO_DXFER 0x10000 +#define SG_INFO_OK_MASK 0x1 +#define SG_INFO_OK 0x0 +#define SG_INFO_CHECK 0x1 +#define SG_INFO_DIRECT_IO_MASK 0x6 +#define SG_INFO_INDIRECT_IO 0x0 +#define SG_INFO_DIRECT_IO 0x2 +#define SG_INFO_MIXED_IO 0x4 +#define SG_EMULATED_HOST 0x2203 +#define SG_SET_TRANSFORM 0x2204 +#define SG_GET_TRANSFORM 0x2205 +#define SG_SET_RESERVED_SIZE 0x2275 +#define SG_GET_RESERVED_SIZE 0x2272 +#define SG_GET_SCSI_ID 0x2276 +#define SG_SET_FORCE_LOW_DMA 0x2279 +#define SG_GET_LOW_DMA 0x227a +#define SG_SET_FORCE_PACK_ID 0x227b +#define SG_GET_PACK_ID 0x227c +#define SG_GET_NUM_WAITING 0x227d +#define SG_GET_SG_TABLESIZE 0x227F +#define SG_GET_VERSION_NUM 0x2282 +#define SG_SCSI_RESET 0x2284 +#define SG_SCSI_RESET_NOTHING 0 +#define SG_SCSI_RESET_DEVICE 1 +#define SG_SCSI_RESET_BUS 2 +#define SG_SCSI_RESET_HOST 3 +#define SG_IO 0x2285 +#define SG_GET_REQUEST_TABLE 0x2286 +#define SG_SET_KEEP_ORPHAN 0x2287 +#define SG_GET_KEEP_ORPHAN 0x2288 +#define SG_SCATTER_SZ (8 * 4096) +#define SG_DEFAULT_RETRIES 1 +#define SG_DEF_FORCE_LOW_DMA 0 +#define SG_DEF_FORCE_PACK_ID 0 +#define SG_DEF_KEEP_ORPHAN 0 +#define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ +#define SG_MAX_QUEUE 16 +#define SG_BIG_BUFF SG_DEF_RESERVED_SIZE +#define SG_MAX_SENSE 16 +#define SG_SET_TIMEOUT 0x2201 +#define SG_GET_TIMEOUT 0x2202 +#define SG_GET_COMMAND_Q 0x2270 +#define SG_SET_COMMAND_Q 0x2271 +#define SG_SET_DEBUG 0x227e +#define SG_NEXT_CMD_LEN 0x2283 +#define SG_DEFAULT_TIMEOUT (60*100) /* 60*HZ */ +#define SG_DEF_COMMAND_Q 0 +#define SG_DEF_UNDERRUN_FLAG 0 + +typedef struct sg_iovec { + void *iov_base; + unsigned long iov_len; +} sg_iovec_t; + +typedef struct sg_io_hdr { + int interface_id; + int dxfer_direction; + unsigned char cmd_len; + unsigned char mx_sb_len; + unsigned short iovec_count; + unsigned dxfer_len; + void *dxferp; + unsigned char *cmdp; + unsigned char *sbp; + unsigned timeout; + unsigned flags; + int pack_id; + void *usr_ptr; + unsigned char status; + unsigned char masked_status; + unsigned char msg_status; + unsigned char sb_len_wr; + unsigned short host_status; + unsigned short driver_status; + int resid; + unsigned int duration; + unsigned int info; +} sg_io_hdr_t; + +struct sg_scsi_id { + int host_no; + int channel; + int scsi_id; + int lun; + int scsi_type; + short h_cmd_per_lun; + short d_queue_depth; + int unused[2]; +}; + +typedef struct sg_req_info { + char req_state; + char orphan; + char sg_io_owned; + char problem; + int pack_id; + void *usr_ptr; + unsigned duration; + int unused; +} sg_req_info_t; + +typedef struct sg_io_hdr Sg_io_hdr; +typedef struct sg_io_vec Sg_io_vec; +typedef struct sg_scsi_id Sg_scsi_id; +typedef struct sg_req_info Sg_req_info; + +struct sg_header { + int pack_len; + int reply_len; + int pack_id; + int result; + unsigned twelve_byte:1; + unsigned target_status:5; + unsigned host_status:8; + unsigned driver_status:8; + unsigned other_flags:10; + unsigned char sense_buffer[SG_MAX_SENSE]; +}; + +#endif diff --git a/vendor/modernc.org/libc/musl/include/search.h b/vendor/modernc.org/libc/musl/include/search.h new file mode 100644 index 000000000..02e407e3c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/search.h @@ -0,0 +1,63 @@ +#ifndef _SEARCH_H +#define _SEARCH_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#include + +typedef enum { FIND, ENTER } ACTION; +typedef enum { preorder, postorder, endorder, leaf } VISIT; + +typedef struct entry { + char *key; + void *data; +} ENTRY; + +int hcreate(size_t); +void hdestroy(void); +ENTRY *hsearch(ENTRY, ACTION); + +#ifdef _GNU_SOURCE +struct hsearch_data { + struct __tab *__tab; + unsigned int __unused1; + unsigned int __unused2; +}; + +int hcreate_r(size_t, struct hsearch_data *); +void hdestroy_r(struct hsearch_data *); +int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *); +#endif + +void insque(void *, void *); +void remque(void *); + +void *lsearch(const void *, void *, size_t *, size_t, + int (*)(const void *, const void *)); +void *lfind(const void *, const void *, size_t *, size_t, + int (*)(const void *, const void *)); + +void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *)); +void *tfind(const void *, void *const *, int(*)(const void *, const void *)); +void *tsearch(const void *, void **, int (*)(const void *, const void *)); +void twalk(const void *, void (*)(const void *, VISIT, int)); + +#ifdef _GNU_SOURCE +struct qelem { + struct qelem *q_forw, *q_back; + char q_data[1]; +}; + +void tdestroy(void *, void (*)(void *)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/semaphore.h b/vendor/modernc.org/libc/musl/include/semaphore.h new file mode 100644 index 000000000..3690f4960 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/semaphore.h @@ -0,0 +1,39 @@ +#ifndef _SEMAPHORE_H +#define _SEMAPHORE_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_time_t +#define __NEED_struct_timespec +#include + +#include + +#define SEM_FAILED ((sem_t *)0) + +typedef struct { + volatile int __val[4*sizeof(long)/sizeof(int)]; +} sem_t; + +int sem_close(sem_t *); +int sem_destroy(sem_t *); +int sem_getvalue(sem_t *__restrict, int *__restrict); +int sem_init(sem_t *, int, unsigned); +sem_t *sem_open(const char *, int, ...); +int sem_post(sem_t *); +int sem_timedwait(sem_t *__restrict, const struct timespec *__restrict); +int sem_trywait(sem_t *); +int sem_unlink(const char *); +int sem_wait(sem_t *); + +#if _REDIR_TIME64 +__REDIR(sem_timedwait, __sem_timedwait_time64); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/setjmp.h b/vendor/modernc.org/libc/musl/include/setjmp.h new file mode 100644 index 000000000..2d43abf84 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/setjmp.h @@ -0,0 +1,41 @@ +#ifndef _SETJMP_H +#define _SETJMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +typedef struct __jmp_buf_tag { + __jmp_buf __jb; + unsigned long __fl; + unsigned long __ss[128/sizeof(long)]; +} jmp_buf[1]; + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +typedef jmp_buf sigjmp_buf; +int sigsetjmp (sigjmp_buf, int); +_Noreturn void siglongjmp (sigjmp_buf, int); +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +int _setjmp (jmp_buf); +_Noreturn void _longjmp (jmp_buf, int); +#endif + +int setjmp (jmp_buf); +_Noreturn void longjmp (jmp_buf, int); + +#define setjmp setjmp + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/shadow.h b/vendor/modernc.org/libc/musl/include/shadow.h new file mode 100644 index 000000000..2b1be413f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/shadow.h @@ -0,0 +1,44 @@ +#ifndef _SHADOW_H +#define _SHADOW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_FILE +#define __NEED_size_t + +#include + +#define SHADOW "/etc/shadow" + +struct spwd { + char *sp_namp; + char *sp_pwdp; + long sp_lstchg; + long sp_min; + long sp_max; + long sp_warn; + long sp_inact; + long sp_expire; + unsigned long sp_flag; +}; + +void setspent(void); +void endspent(void); +struct spwd *getspent(void); +struct spwd *fgetspent(FILE *); +struct spwd *sgetspent(const char *); +int putspent(const struct spwd *, FILE *); + +struct spwd *getspnam(const char *); +int getspnam_r(const char *, struct spwd *, char *, size_t, struct spwd **); + +int lckpwdf(void); +int ulckpwdf(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/signal.h b/vendor/modernc.org/libc/musl/include/signal.h new file mode 100644 index 000000000..fbdf667b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/signal.h @@ -0,0 +1,286 @@ +#ifndef _SIGNAL_H +#define _SIGNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) + +#ifdef _GNU_SOURCE +#define __ucontext ucontext +#endif + +#define __NEED_size_t +#define __NEED_pid_t +#define __NEED_uid_t +#define __NEED_struct_timespec +#define __NEED_pthread_t +#define __NEED_pthread_attr_t +#define __NEED_time_t +#define __NEED_clock_t +#define __NEED_sigset_t + +#include + +#define SIG_BLOCK 0 +#define SIG_UNBLOCK 1 +#define SIG_SETMASK 2 + +#define SI_ASYNCNL (-60) +#define SI_TKILL (-6) +#define SI_SIGIO (-5) +#define SI_ASYNCIO (-4) +#define SI_MESGQ (-3) +#define SI_TIMER (-2) +#define SI_QUEUE (-1) +#define SI_USER 0 +#define SI_KERNEL 128 + +typedef struct sigaltstack stack_t; + +#endif + +#include + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) + +#define SIG_HOLD ((void (*)(int)) 2) + +#define FPE_INTDIV 1 +#define FPE_INTOVF 2 +#define FPE_FLTDIV 3 +#define FPE_FLTOVF 4 +#define FPE_FLTUND 5 +#define FPE_FLTRES 6 +#define FPE_FLTINV 7 +#define FPE_FLTSUB 8 + +#define ILL_ILLOPC 1 +#define ILL_ILLOPN 2 +#define ILL_ILLADR 3 +#define ILL_ILLTRP 4 +#define ILL_PRVOPC 5 +#define ILL_PRVREG 6 +#define ILL_COPROC 7 +#define ILL_BADSTK 8 + +#define SEGV_MAPERR 1 +#define SEGV_ACCERR 2 +#define SEGV_BNDERR 3 +#define SEGV_PKUERR 4 + +#define BUS_ADRALN 1 +#define BUS_ADRERR 2 +#define BUS_OBJERR 3 +#define BUS_MCEERR_AR 4 +#define BUS_MCEERR_AO 5 + +#define CLD_EXITED 1 +#define CLD_KILLED 2 +#define CLD_DUMPED 3 +#define CLD_TRAPPED 4 +#define CLD_STOPPED 5 +#define CLD_CONTINUED 6 + +union sigval { + int sival_int; + void *sival_ptr; +}; + +typedef struct { +#ifdef __SI_SWAP_ERRNO_CODE + int si_signo, si_code, si_errno; +#else + int si_signo, si_errno, si_code; +#endif + union { + char __pad[128 - 2*sizeof(int) - sizeof(long)]; + struct { + union { + struct { + pid_t si_pid; + uid_t si_uid; + } __piduid; + struct { + int si_timerid; + int si_overrun; + } __timer; + } __first; + union { + union sigval si_value; + struct { + int si_status; + clock_t si_utime, si_stime; + } __sigchld; + } __second; + } __si_common; + struct { + void *si_addr; + short si_addr_lsb; + union { + struct { + void *si_lower; + void *si_upper; + } __addr_bnd; + unsigned si_pkey; + } __first; + } __sigfault; + struct { + long si_band; + int si_fd; + } __sigpoll; + struct { + void *si_call_addr; + int si_syscall; + unsigned si_arch; + } __sigsys; + } __si_fields; +} siginfo_t; +#define si_pid __si_fields.__si_common.__first.__piduid.si_pid +#define si_uid __si_fields.__si_common.__first.__piduid.si_uid +#define si_status __si_fields.__si_common.__second.__sigchld.si_status +#define si_utime __si_fields.__si_common.__second.__sigchld.si_utime +#define si_stime __si_fields.__si_common.__second.__sigchld.si_stime +#define si_value __si_fields.__si_common.__second.si_value +#define si_addr __si_fields.__sigfault.si_addr +#define si_addr_lsb __si_fields.__sigfault.si_addr_lsb +#define si_lower __si_fields.__sigfault.__first.__addr_bnd.si_lower +#define si_upper __si_fields.__sigfault.__first.__addr_bnd.si_upper +#define si_pkey __si_fields.__sigfault.__first.si_pkey +#define si_band __si_fields.__sigpoll.si_band +#define si_fd __si_fields.__sigpoll.si_fd +#define si_timerid __si_fields.__si_common.__first.__timer.si_timerid +#define si_overrun __si_fields.__si_common.__first.__timer.si_overrun +#define si_ptr si_value.sival_ptr +#define si_int si_value.sival_int +#define si_call_addr __si_fields.__sigsys.si_call_addr +#define si_syscall __si_fields.__sigsys.si_syscall +#define si_arch __si_fields.__sigsys.si_arch + +struct sigaction { + union { + void (*sa_handler)(int); + void (*sa_sigaction)(int, siginfo_t *, void *); + } __sa_handler; + sigset_t sa_mask; + int sa_flags; + void (*sa_restorer)(void); +}; +#define sa_handler __sa_handler.sa_handler +#define sa_sigaction __sa_handler.sa_sigaction + +struct sigevent { + union sigval sigev_value; + int sigev_signo; + int sigev_notify; + void (*sigev_notify_function)(union sigval); + pthread_attr_t *sigev_notify_attributes; + char __pad[56-3*sizeof(long)]; +}; + +#define SIGEV_SIGNAL 0 +#define SIGEV_NONE 1 +#define SIGEV_THREAD 2 + +int __libc_current_sigrtmin(void); +int __libc_current_sigrtmax(void); + +#define SIGRTMIN (__libc_current_sigrtmin()) +#define SIGRTMAX (__libc_current_sigrtmax()) + +int kill(pid_t, int); + +int sigemptyset(sigset_t *); +int sigfillset(sigset_t *); +int sigaddset(sigset_t *, int); +int sigdelset(sigset_t *, int); +int sigismember(const sigset_t *, int); + +int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict); +int sigsuspend(const sigset_t *); +int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restrict); +int sigpending(sigset_t *); +int sigwait(const sigset_t *__restrict, int *__restrict); +int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict); +int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct timespec *__restrict); +int sigqueue(pid_t, int, union sigval); + +int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict); +int pthread_kill(pthread_t, int); + +void psiginfo(const siginfo_t *, const char *); +void psignal(int, const char *); + +#endif + +#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +int killpg(pid_t, int); +int sigaltstack(const stack_t *__restrict, stack_t *__restrict); +int sighold(int); +int sigignore(int); +int siginterrupt(int, int); +int sigpause(int); +int sigrelse(int); +void (*sigset(int, void (*)(int)))(int); +#define TRAP_BRKPT 1 +#define TRAP_TRACE 2 +#define TRAP_BRANCH 3 +#define TRAP_HWBKPT 4 +#define TRAP_UNK 5 +#define POLL_IN 1 +#define POLL_OUT 2 +#define POLL_MSG 3 +#define POLL_ERR 4 +#define POLL_PRI 5 +#define POLL_HUP 6 +#define SS_ONSTACK 1 +#define SS_DISABLE 2 +#define SS_AUTODISARM (1U << 31) +#define SS_FLAG_BITS SS_AUTODISARM +#endif + +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +#define NSIG _NSIG +typedef void (*sig_t)(int); +#endif + +#ifdef _GNU_SOURCE +typedef void (*sighandler_t)(int); +void (*bsd_signal(int, void (*)(int)))(int); +int sigisemptyset(const sigset_t *); +int sigorset (sigset_t *, const sigset_t *, const sigset_t *); +int sigandset(sigset_t *, const sigset_t *, const sigset_t *); + +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND +#endif + +#define SIG_ERR ((void (*)(int))-1) +#define SIG_DFL ((void (*)(int)) 0) +#define SIG_IGN ((void (*)(int)) 1) + +typedef int sig_atomic_t; + +void (*signal(int, void (*)(int)))(int); +int raise(int); + +#if _REDIR_TIME64 +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +__REDIR(sigtimedwait, __sigtimedwait_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/spawn.h b/vendor/modernc.org/libc/musl/include/spawn.h new file mode 100644 index 000000000..8eb73e003 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/spawn.h @@ -0,0 +1,83 @@ +#ifndef _SPAWN_H +#define _SPAWN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_mode_t +#define __NEED_pid_t +#define __NEED_sigset_t + +#include + +struct sched_param; + +#define POSIX_SPAWN_RESETIDS 1 +#define POSIX_SPAWN_SETPGROUP 2 +#define POSIX_SPAWN_SETSIGDEF 4 +#define POSIX_SPAWN_SETSIGMASK 8 +#define POSIX_SPAWN_SETSCHEDPARAM 16 +#define POSIX_SPAWN_SETSCHEDULER 32 +#define POSIX_SPAWN_USEVFORK 64 +#define POSIX_SPAWN_SETSID 128 + +typedef struct { + int __flags; + pid_t __pgrp; + sigset_t __def, __mask; + int __prio, __pol; + void *__fn; + char __pad[64-sizeof(void *)]; +} posix_spawnattr_t; + +typedef struct { + int __pad0[2]; + void *__actions; + int __pad[16]; +} posix_spawn_file_actions_t; + +int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *, + const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict); +int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *, + const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict); + +int posix_spawnattr_init(posix_spawnattr_t *); +int posix_spawnattr_destroy(posix_spawnattr_t *); + +int posix_spawnattr_setflags(posix_spawnattr_t *, short); +int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict); + +int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t); +int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict); + +int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict); +int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict); + +int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict); +int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict); + +int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict); +int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict); +int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int); +int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *__restrict); + +int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); +int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); + +int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_t); +int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int); +int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int); + +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *__restrict, const char *__restrict); +int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *, int); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdalign.h b/vendor/modernc.org/libc/musl/include/stdalign.h new file mode 100644 index 000000000..2cc94be3f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdalign.h @@ -0,0 +1,20 @@ +#ifndef _STDALIGN_H +#define _STDALIGN_H + +#ifndef __cplusplus + +/* this whole header only works in C11 or with compiler extensions */ +#if __STDC_VERSION__ < 201112L && defined( __GNUC__) +#define _Alignas(t) __attribute__((__aligned__(t))) +#define _Alignof(t) __alignof__(t) +#endif + +#define alignas _Alignas +#define alignof _Alignof + +#endif + +#define __alignas_is_defined 1 +#define __alignof_is_defined 1 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdarg.h b/vendor/modernc.org/libc/musl/include/stdarg.h new file mode 100644 index 000000000..3256f8050 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdarg.h @@ -0,0 +1,21 @@ +#ifndef _STDARG_H +#define _STDARG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_va_list + +#include + +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#define va_copy(d,s) __builtin_va_copy(d,s) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdbool.h b/vendor/modernc.org/libc/musl/include/stdbool.h new file mode 100644 index 000000000..a9d7ab787 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdbool.h @@ -0,0 +1,14 @@ +#ifndef _STDBOOL_H +#define _STDBOOL_H + +#ifndef __cplusplus + +#define true 1 +#define false 0 +#define bool _Bool + +#endif + +#define __bool_true_false_are_defined 1 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdc-predef.h b/vendor/modernc.org/libc/musl/include/stdc-predef.h new file mode 100644 index 000000000..f8cd4b891 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdc-predef.h @@ -0,0 +1,10 @@ +#ifndef _STDC_PREDEF_H +#define _STDC_PREDEF_H + +#define __STDC_ISO_10646__ 201206L + +#if !defined(__GCC_IEC_559) || __GCC_IEC_559 > 0 +#define __STDC_IEC_559__ 1 +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stddef.h b/vendor/modernc.org/libc/musl/include/stddef.h new file mode 100644 index 000000000..bd7538535 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stddef.h @@ -0,0 +1,25 @@ +#ifndef _STDDEF_H +#define _STDDEF_H + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#define __NEED_ptrdiff_t +#define __NEED_size_t +#define __NEED_wchar_t +#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L +#define __NEED_max_align_t +#endif + +#include + +#if __GNUC__ > 3 +#define offsetof(type, member) __builtin_offsetof(type, member) +#else +#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 )) +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdint.h b/vendor/modernc.org/libc/musl/include/stdint.h new file mode 100644 index 000000000..a2968197d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdint.h @@ -0,0 +1,117 @@ +#ifndef _STDINT_H +#define _STDINT_H + +#define __NEED_int8_t +#define __NEED_int16_t +#define __NEED_int32_t +#define __NEED_int64_t + +#define __NEED_uint8_t +#define __NEED_uint16_t +#define __NEED_uint32_t +#define __NEED_uint64_t + +#define __NEED_intptr_t +#define __NEED_uintptr_t + +#define __NEED_intmax_t +#define __NEED_uintmax_t + +#include + +typedef int8_t int_fast8_t; +typedef int64_t int_fast64_t; + +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; + +typedef uint8_t uint_fast8_t; +typedef uint64_t uint_fast64_t; + +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +#define INT8_MIN (-1-0x7f) +#define INT16_MIN (-1-0x7fff) +#define INT32_MIN (-1-0x7fffffff) +#define INT64_MIN (-1-0x7fffffffffffffff) + +#define INT8_MAX (0x7f) +#define INT16_MAX (0x7fff) +#define INT32_MAX (0x7fffffff) +#define INT64_MAX (0x7fffffffffffffff) + +#define UINT8_MAX (0xff) +#define UINT16_MAX (0xffff) +#define UINT32_MAX (0xffffffffu) +#define UINT64_MAX (0xffffffffffffffffu) + +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST64_MIN INT64_MIN + +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST64_MIN INT64_MIN + +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST64_MAX INT64_MAX + +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MAX INT64_MAX + +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST64_MAX UINT64_MAX + +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +#define WINT_MIN 0U +#define WINT_MAX UINT32_MAX + +#if L'\0'-1 > 0 +#define WCHAR_MAX (0xffffffffu+L'\0') +#define WCHAR_MIN (0+L'\0') +#else +#define WCHAR_MAX (0x7fffffff+L'\0') +#define WCHAR_MIN (-1-0x7fffffff+L'\0') +#endif + +#define SIG_ATOMIC_MIN INT32_MIN +#define SIG_ATOMIC_MAX INT32_MAX + +#include + +#define INT8_C(c) c +#define INT16_C(c) c +#define INT32_C(c) c + +#define UINT8_C(c) c +#define UINT16_C(c) c +#define UINT32_C(c) c ## U + +#if UINTPTR_MAX == UINT64_MAX +#define INT64_C(c) c ## L +#define UINT64_C(c) c ## UL +#define INTMAX_C(c) c ## L +#define UINTMAX_C(c) c ## UL +#else +#define INT64_C(c) c ## LL +#define UINT64_C(c) c ## ULL +#define INTMAX_C(c) c ## LL +#define UINTMAX_C(c) c ## ULL +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdio.h b/vendor/modernc.org/libc/musl/include/stdio.h new file mode 100644 index 000000000..3604198c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdio.h @@ -0,0 +1,222 @@ +#ifndef _STDIO_H +#define _STDIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_FILE +#define __NEED___isoc_va_list +#define __NEED_size_t + +#if __STDC_VERSION__ < 201112L +#define __NEED_struct__IO_FILE +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define __NEED_ssize_t +#define __NEED_off_t +#define __NEED_va_list +#endif + +#include + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#undef EOF +#define EOF (-1) + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#define _IOFBF 0 +#define _IOLBF 1 +#define _IONBF 2 + +#define BUFSIZ 1024 +#define FILENAME_MAX 4096 +#define FOPEN_MAX 1000 +#define TMP_MAX 10000 +#define L_tmpnam 20 + +typedef union _G_fpos64_t { + char __opaque[16]; + long long __lldata; + double __align; +} fpos_t; + +extern FILE *const stdin; +extern FILE *const stdout; +extern FILE *const stderr; + +#define stdin (stdin) +#define stdout (stdout) +#define stderr (stderr) + +FILE *fopen(const char *__restrict, const char *__restrict); +FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict); +int fclose(FILE *); + +int remove(const char *); +int rename(const char *, const char *); + +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +void clearerr(FILE *); + +int fseek(FILE *, long, int); +long ftell(FILE *); +void rewind(FILE *); + +int fgetpos(FILE *__restrict, fpos_t *__restrict); +int fsetpos(FILE *, const fpos_t *); + +size_t fread(void *__restrict, size_t, size_t, FILE *__restrict); +size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict); + +int fgetc(FILE *); +int getc(FILE *); +int getchar(void); +int ungetc(int, FILE *); + +int fputc(int, FILE *); +int putc(int, FILE *); +int putchar(int); + +char *fgets(char *__restrict, int, FILE *__restrict); +#if __STDC_VERSION__ < 201112L +char *gets(char *); +#endif + +int fputs(const char *__restrict, FILE *__restrict); +int puts(const char *); + +int printf(const char *__restrict, ...); +int fprintf(FILE *__restrict, const char *__restrict, ...); +int sprintf(char *__restrict, const char *__restrict, ...); +int snprintf(char *__restrict, size_t, const char *__restrict, ...); + +int vprintf(const char *__restrict, __isoc_va_list); +int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list); +int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list); + +int scanf(const char *__restrict, ...); +int fscanf(FILE *__restrict, const char *__restrict, ...); +int sscanf(const char *__restrict, const char *__restrict, ...); +int vscanf(const char *__restrict, __isoc_va_list); +int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list); + +void perror(const char *); + +int setvbuf(FILE *__restrict, char *__restrict, int, size_t); +void setbuf(FILE *__restrict, char *__restrict); + +char *tmpnam(char *); +FILE *tmpfile(void); + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +FILE *fmemopen(void *__restrict, size_t, const char *__restrict); +FILE *open_memstream(char **, size_t *); +FILE *fdopen(int, const char *); +FILE *popen(const char *, const char *); +int pclose(FILE *); +int fileno(FILE *); +int fseeko(FILE *, off_t, int); +off_t ftello(FILE *); +int dprintf(int, const char *__restrict, ...); +int vdprintf(int, const char *__restrict, __isoc_va_list); +void flockfile(FILE *); +int ftrylockfile(FILE *); +void funlockfile(FILE *); +int getc_unlocked(FILE *); +int getchar_unlocked(void); +int putc_unlocked(int, FILE *); +int putchar_unlocked(int); +ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict); +ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict); +int renameat(int, const char *, int, const char *); +char *ctermid(char *); +#define L_ctermid 20 +#endif + + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define P_tmpdir "/tmp" +char *tempnam(const char *, const char *); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define L_cuserid 20 +char *cuserid(char *); +void setlinebuf(FILE *); +void setbuffer(FILE *, char *, size_t); +int fgetc_unlocked(FILE *); +int fputc_unlocked(int, FILE *); +int fflush_unlocked(FILE *); +size_t fread_unlocked(void *, size_t, size_t, FILE *); +size_t fwrite_unlocked(const void *, size_t, size_t, FILE *); +void clearerr_unlocked(FILE *); +int feof_unlocked(FILE *); +int ferror_unlocked(FILE *); +int fileno_unlocked(FILE *); +int getw(FILE *); +int putw(int, FILE *); +char *fgetln(FILE *, size_t *); +int asprintf(char **, const char *, ...); +int vasprintf(char **, const char *, __isoc_va_list); +#endif + +#ifdef _GNU_SOURCE +char *fgets_unlocked(char *, int, FILE *); +int fputs_unlocked(const char *, FILE *); + +typedef ssize_t (cookie_read_function_t)(void *, char *, size_t); +typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t); +typedef int (cookie_seek_function_t)(void *, off_t *, int); +typedef int (cookie_close_function_t)(void *); + +typedef struct _IO_cookie_io_functions_t { + cookie_read_function_t *read; + cookie_write_function_t *write; + cookie_seek_function_t *seek; + cookie_close_function_t *close; +} cookie_io_functions_t; + +FILE *fopencookie(void *, const char *, cookie_io_functions_t); +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define tmpfile64 tmpfile +#define fopen64 fopen +#define freopen64 freopen +#define fseeko64 fseeko +#define ftello64 ftello +#define fgetpos64 fgetpos +#define fsetpos64 fsetpos +#define fpos64_t fpos_t +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdio_ext.h b/vendor/modernc.org/libc/musl/include/stdio_ext.h new file mode 100644 index 000000000..e3ab7fd4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdio_ext.h @@ -0,0 +1,34 @@ +#ifndef _STDIO_EXT_H +#define _STDIO_EXT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define FSETLOCKING_QUERY 0 +#define FSETLOCKING_INTERNAL 1 +#define FSETLOCKING_BYCALLER 2 + +void _flushlbf(void); +int __fsetlocking(FILE *, int); +int __fwriting(FILE *); +int __freading(FILE *); +int __freadable(FILE *); +int __fwritable(FILE *); +int __flbf(FILE *); +size_t __fbufsize(FILE *); +size_t __fpending(FILE *); +int __fpurge(FILE *); + +size_t __freadahead(FILE *); +const char *__freadptr(FILE *, size_t *); +void __freadptrinc(FILE *, size_t); +void __fseterr(FILE *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdlib.h b/vendor/modernc.org/libc/musl/include/stdlib.h new file mode 100644 index 000000000..194c20339 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdlib.h @@ -0,0 +1,175 @@ +#ifndef _STDLIB_H +#define _STDLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#define __NEED_wchar_t + +#include + +int atoi (const char *); +long atol (const char *); +long long atoll (const char *); +double atof (const char *); + +float strtof (const char *__restrict, char **__restrict); +double strtod (const char *__restrict, char **__restrict); +long double strtold (const char *__restrict, char **__restrict); + +long strtol (const char *__restrict, char **__restrict, int); +unsigned long strtoul (const char *__restrict, char **__restrict, int); +long long strtoll (const char *__restrict, char **__restrict, int); +unsigned long long strtoull (const char *__restrict, char **__restrict, int); + +int rand (void); +void srand (unsigned); + +void *malloc (size_t); +void *calloc (size_t, size_t); +void *realloc (void *, size_t); +void free (void *); +void *aligned_alloc(size_t, size_t); + +_Noreturn void abort (void); +int atexit (void (*) (void)); +_Noreturn void exit (int); +_Noreturn void _Exit (int); +int at_quick_exit (void (*) (void)); +_Noreturn void quick_exit (int); + +char *getenv (const char *); + +int system (const char *); + +void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); +void qsort (void *, size_t, size_t, int (*)(const void *, const void *)); + +int abs (int); +long labs (long); +long long llabs (long long); + +typedef struct { int quot, rem; } div_t; +typedef struct { long quot, rem; } ldiv_t; +typedef struct { long long quot, rem; } lldiv_t; + +div_t div (int, int); +ldiv_t ldiv (long, long); +lldiv_t lldiv (long long, long long); + +int mblen (const char *, size_t); +int mbtowc (wchar_t *__restrict, const char *__restrict, size_t); +int wctomb (char *, wchar_t); +size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t); +size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t); + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 + +size_t __ctype_get_mb_cur_max(void); +#define MB_CUR_MAX (__ctype_get_mb_cur_max()) + +#define RAND_MAX (0x7fffffff) + + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) + +#define WNOHANG 1 +#define WUNTRACED 2 + +#define WEXITSTATUS(s) (((s) & 0xff00) >> 8) +#define WTERMSIG(s) ((s) & 0x7f) +#define WSTOPSIG(s) WEXITSTATUS(s) +#define WIFEXITED(s) (!WTERMSIG(s)) +#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) + +int posix_memalign (void **, size_t, size_t); +int setenv (const char *, const char *, int); +int unsetenv (const char *); +int mkstemp (char *); +int mkostemp (char *, int); +char *mkdtemp (char *); +int getsubopt (char **, char *const *, char **); +int rand_r (unsigned *); + +#endif + + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +char *realpath (const char *__restrict, char *__restrict); +long int random (void); +void srandom (unsigned int); +char *initstate (unsigned int, char *, size_t); +char *setstate (char *); +int putenv (char *); +int posix_openpt (int); +int grantpt (int); +int unlockpt (int); +char *ptsname (int); +char *l64a (long); +long a64l (const char *); +void setkey (const char *); +double drand48 (void); +double erand48 (unsigned short [3]); +long int lrand48 (void); +long int nrand48 (unsigned short [3]); +long mrand48 (void); +long jrand48 (unsigned short [3]); +void srand48 (long); +unsigned short *seed48 (unsigned short [3]); +void lcong48 (unsigned short [7]); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#include +char *mktemp (char *); +int mkstemps (char *, int); +int mkostemps (char *, int, int); +void *valloc (size_t); +void *memalign(size_t, size_t); +int getloadavg(double *, int); +int clearenv(void); +#define WCOREDUMP(s) ((s) & 0x80) +#define WIFCONTINUED(s) ((s) == 0xffff) +#endif + +#ifdef _GNU_SOURCE +int ptsname_r(int, char *, size_t); +char *ecvt(double, int, int *, int *); +char *fcvt(double, int, int *, int *); +char *gcvt(double, int, char *); +char *secure_getenv(const char *); +struct __locale_struct; +float strtof_l(const char *__restrict, char **__restrict, struct __locale_struct *); +double strtod_l(const char *__restrict, char **__restrict, struct __locale_struct *); +long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *); +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define mkstemp64 mkstemp +#define mkostemp64 mkostemp +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define mkstemps64 mkstemps +#define mkostemps64 mkostemps +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stdnoreturn.h b/vendor/modernc.org/libc/musl/include/stdnoreturn.h new file mode 100644 index 000000000..5c6aeeb00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stdnoreturn.h @@ -0,0 +1,7 @@ +#ifndef _STDNORETURN_H +#define _STDNORETURN_H +#ifndef __cplusplus +#include +#define noreturn _Noreturn +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/string.h b/vendor/modernc.org/libc/musl/include/string.h new file mode 100644 index 000000000..795a2abcd --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/string.h @@ -0,0 +1,105 @@ +#ifndef _STRING_H +#define _STRING_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define __NEED_locale_t +#endif + +#include + +void *memcpy (void *__restrict, const void *__restrict, size_t); +void *memmove (void *, const void *, size_t); +void *memset (void *, int, size_t); +int memcmp (const void *, const void *, size_t); +void *memchr (const void *, int, size_t); + +char *strcpy (char *__restrict, const char *__restrict); +char *strncpy (char *__restrict, const char *__restrict, size_t); + +char *strcat (char *__restrict, const char *__restrict); +char *strncat (char *__restrict, const char *__restrict, size_t); + +int strcmp (const char *, const char *); +int strncmp (const char *, const char *, size_t); + +int strcoll (const char *, const char *); +size_t strxfrm (char *__restrict, const char *__restrict, size_t); + +char *strchr (const char *, int); +char *strrchr (const char *, int); + +size_t strcspn (const char *, const char *); +size_t strspn (const char *, const char *); +char *strpbrk (const char *, const char *); +char *strstr (const char *, const char *); +char *strtok (char *__restrict, const char *__restrict); + +size_t strlen (const char *); + +char *strerror (int); + +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +#include +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +char *strtok_r (char *__restrict, const char *__restrict, char **__restrict); +int strerror_r (int, char *, size_t); +char *stpcpy(char *__restrict, const char *__restrict); +char *stpncpy(char *__restrict, const char *__restrict, size_t); +size_t strnlen (const char *, size_t); +char *strdup (const char *); +char *strndup (const char *, size_t); +char *strsignal(int); +char *strerror_l (int, locale_t); +int strcoll_l (const char *, const char *, locale_t); +size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +void *memccpy (void *__restrict, const void *__restrict, int, size_t); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +char *strsep(char **, const char *); +size_t strlcat (char *, const char *, size_t); +size_t strlcpy (char *, const char *, size_t); +void explicit_bzero (void *, size_t); +#endif + +#ifdef _GNU_SOURCE +#define strdupa(x) strcpy(alloca(strlen(x)+1),x) +int strverscmp (const char *, const char *); +char *strchrnul(const char *, int); +char *strcasestr(const char *, const char *); +void *memmem(const void *, size_t, const void *, size_t); +void *memrchr(const void *, int, size_t); +void *mempcpy(void *, const void *, size_t); +#ifndef __cplusplus +char *basename(); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/strings.h b/vendor/modernc.org/libc/musl/include/strings.h new file mode 100644 index 000000000..db0960b4e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/strings.h @@ -0,0 +1,39 @@ +#ifndef _STRINGS_H +#define _STRINGS_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define __NEED_size_t +#define __NEED_locale_t +#include + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \ + || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) +int bcmp (const void *, const void *, size_t); +void bcopy (const void *, void *, size_t); +void bzero (void *, size_t); +char *index (const char *, int); +char *rindex (const char *, int); +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int ffs (int); +int ffsl (long); +int ffsll (long long); +#endif + +int strcasecmp (const char *, const char *); +int strncasecmp (const char *, const char *, size_t); + +int strcasecmp_l (const char *, const char *, locale_t); +int strncasecmp_l (const char *, const char *, size_t, locale_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/stropts.h b/vendor/modernc.org/libc/musl/include/stropts.h new file mode 100644 index 000000000..c99c922e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/stropts.h @@ -0,0 +1,139 @@ +#ifndef _STROPTS_H +#define _STROPTS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __SID ('S' << 8) + +#define I_NREAD (__SID | 1) +#define I_PUSH (__SID | 2) +#define I_POP (__SID | 3) +#define I_LOOK (__SID | 4) +#define I_FLUSH (__SID | 5) +#define I_SRDOPT (__SID | 6) +#define I_GRDOPT (__SID | 7) +#define I_STR (__SID | 8) +#define I_SETSIG (__SID | 9) +#define I_GETSIG (__SID |10) +#define I_FIND (__SID |11) +#define I_LINK (__SID |12) +#define I_UNLINK (__SID |13) +#define I_PEEK (__SID |15) +#define I_FDINSERT (__SID |16) +#define I_SENDFD (__SID |17) +#define I_RECVFD (__SID |14) +#define I_SWROPT (__SID |19) +#define I_GWROPT (__SID |20) +#define I_LIST (__SID |21) +#define I_PLINK (__SID |22) +#define I_PUNLINK (__SID |23) +#define I_FLUSHBAND (__SID |28) +#define I_CKBAND (__SID |29) +#define I_GETBAND (__SID |30) +#define I_ATMARK (__SID |31) +#define I_SETCLTIME (__SID |32) +#define I_GETCLTIME (__SID |33) +#define I_CANPUT (__SID |34) + +#define FMNAMESZ 8 + +#define FLUSHR 0x01 +#define FLUSHW 0x02 +#define FLUSHRW 0x03 +#define FLUSHBAND 0x04 + +#define S_INPUT 0x0001 +#define S_HIPRI 0x0002 +#define S_OUTPUT 0x0004 +#define S_MSG 0x0008 +#define S_ERROR 0x0010 +#define S_HANGUP 0x0020 +#define S_RDNORM 0x0040 +#define S_WRNORM S_OUTPUT +#define S_RDBAND 0x0080 +#define S_WRBAND 0x0100 +#define S_BANDURG 0x0200 + +#define RS_HIPRI 0x01 + +#define RNORM 0x0000 +#define RMSGD 0x0001 +#define RMSGN 0x0002 +#define RPROTDAT 0x0004 +#define RPROTDIS 0x0008 +#define RPROTNORM 0x0010 +#define RPROTMASK 0x001C + +#define SNDZERO 0x001 +#define SNDPIPE 0x002 + +#define ANYMARK 0x01 +#define LASTMARK 0x02 + +#define MUXID_ALL (-1) + +#define MSG_HIPRI 0x01 +#define MSG_ANY 0x02 +#define MSG_BAND 0x04 + +#define MORECTL 1 +#define MOREDATA 2 + +struct bandinfo { + unsigned char bi_pri; + int bi_flag; +}; + +struct strbuf { + int maxlen; + int len; + char *buf; +}; + +struct strpeek { + struct strbuf ctlbuf; + struct strbuf databuf; + unsigned flags; +}; + +struct strfdinsert { + struct strbuf ctlbuf; + struct strbuf databuf; + unsigned flags; + int fildes; + int offset; +}; + +struct strioctl { + int ic_cmd; + int ic_timout; + int ic_len; + char *ic_dp; +}; + +struct strrecvfd { + int fd; + int uid; + int gid; + char __fill[8]; +}; + +struct str_mlist { + char l_name[FMNAMESZ + 1]; +}; + +struct str_list { + int sl_nmods; + struct str_mlist *sl_modlist; +}; + +int isastream(int); +int ioctl(int, int, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/acct.h b/vendor/modernc.org/libc/musl/include/sys/acct.h new file mode 100644 index 000000000..fae9d0508 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/acct.h @@ -0,0 +1,72 @@ +#ifndef _SYS_ACCT_H +#define _SYS_ACCT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ACCT_COMM 16 + +typedef uint16_t comp_t; + +struct acct { + char ac_flag; + uint16_t ac_uid; + uint16_t ac_gid; + uint16_t ac_tty; + uint32_t ac_btime; + comp_t ac_utime; + comp_t ac_stime; + comp_t ac_etime; + comp_t ac_mem; + comp_t ac_io; + comp_t ac_rw; + comp_t ac_minflt; + comp_t ac_majflt; + comp_t ac_swaps; + uint32_t ac_exitcode; + char ac_comm[ACCT_COMM+1]; + char ac_pad[10]; +}; + + +struct acct_v3 { + char ac_flag; + char ac_version; + uint16_t ac_tty; + uint32_t ac_exitcode; + uint32_t ac_uid; + uint32_t ac_gid; + uint32_t ac_pid; + uint32_t ac_ppid; + uint32_t ac_btime; + float ac_etime; + comp_t ac_utime; + comp_t ac_stime; + comp_t ac_mem; + comp_t ac_io; + comp_t ac_rw; + comp_t ac_minflt; + comp_t ac_majflt; + comp_t ac_swaps; + char ac_comm[ACCT_COMM]; +}; + +#define AFORK 1 +#define ASU 2 +#define ACORE 8 +#define AXSIG 16 +#define ACCT_BYTEORDER (128*(__BYTE_ORDER==__BIG_ENDIAN)) +#define AHZ 100 + +int acct(const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/auxv.h b/vendor/modernc.org/libc/musl/include/sys/auxv.h new file mode 100644 index 000000000..ddccf57ff --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/auxv.h @@ -0,0 +1,17 @@ +#ifndef _SYS_AUXV_H +#define _SYS_AUXV_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +unsigned long getauxval(unsigned long); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/cachectl.h b/vendor/modernc.org/libc/musl/include/sys/cachectl.h new file mode 100644 index 000000000..f3b896a8e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/cachectl.h @@ -0,0 +1,22 @@ +#ifndef _SYS_CACHECTL_H +#define _SYS_CACHECTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ICACHE (1<<0) +#define DCACHE (1<<1) +#define BCACHE (ICACHE|DCACHE) +#define CACHEABLE 0 +#define UNCACHEABLE 1 + +int cachectl(void *, int, int); +int cacheflush(void *, int, int); +int _flush_cache(void *, int, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/dir.h b/vendor/modernc.org/libc/musl/include/sys/dir.h new file mode 100644 index 000000000..9ba1c79e2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/dir.h @@ -0,0 +1,2 @@ +#include +#define direct dirent diff --git a/vendor/modernc.org/libc/musl/include/sys/epoll.h b/vendor/modernc.org/libc/musl/include/sys/epoll.h new file mode 100644 index 000000000..ac81a8418 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/epoll.h @@ -0,0 +1,69 @@ +#ifndef _SYS_EPOLL_H +#define _SYS_EPOLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define __NEED_sigset_t + +#include + +#define EPOLL_CLOEXEC O_CLOEXEC +#define EPOLL_NONBLOCK O_NONBLOCK + +enum EPOLL_EVENTS { __EPOLL_DUMMY }; +#define EPOLLIN 0x001 +#define EPOLLPRI 0x002 +#define EPOLLOUT 0x004 +#define EPOLLRDNORM 0x040 +#define EPOLLNVAL 0x020 +#define EPOLLRDBAND 0x080 +#define EPOLLWRNORM 0x100 +#define EPOLLWRBAND 0x200 +#define EPOLLMSG 0x400 +#define EPOLLERR 0x008 +#define EPOLLHUP 0x010 +#define EPOLLRDHUP 0x2000 +#define EPOLLEXCLUSIVE (1U<<28) +#define EPOLLWAKEUP (1U<<29) +#define EPOLLONESHOT (1U<<30) +#define EPOLLET (1U<<31) + +#define EPOLL_CTL_ADD 1 +#define EPOLL_CTL_DEL 2 +#define EPOLL_CTL_MOD 3 + +typedef union epoll_data { + void *ptr; + int fd; + uint32_t u32; + uint64_t u64; +} epoll_data_t; + +struct epoll_event { + uint32_t events; + epoll_data_t data; +} +#ifdef __x86_64__ +__attribute__ ((__packed__)) +#endif +; + + +int epoll_create(int); +int epoll_create1(int); +int epoll_ctl(int, int, int, struct epoll_event *); +int epoll_wait(int, struct epoll_event *, int, int); +int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *); + + +#ifdef __cplusplus +} +#endif + +#endif /* sys/epoll.h */ diff --git a/vendor/modernc.org/libc/musl/include/sys/errno.h b/vendor/modernc.org/libc/musl/include/sys/errno.h new file mode 100644 index 000000000..35a3e5a2a --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/errno.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/eventfd.h b/vendor/modernc.org/libc/musl/include/sys/eventfd.h new file mode 100644 index 000000000..dc5c88f04 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/eventfd.h @@ -0,0 +1,26 @@ +#ifndef _SYS_EVENTFD_H +#define _SYS_EVENTFD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef uint64_t eventfd_t; + +#define EFD_SEMAPHORE 1 +#define EFD_CLOEXEC O_CLOEXEC +#define EFD_NONBLOCK O_NONBLOCK + +int eventfd(unsigned int, int); +int eventfd_read(int, eventfd_t *); +int eventfd_write(int, eventfd_t); + + +#ifdef __cplusplus +} +#endif + +#endif /* sys/eventfd.h */ diff --git a/vendor/modernc.org/libc/musl/include/sys/fanotify.h b/vendor/modernc.org/libc/musl/include/sys/fanotify.h new file mode 100644 index 000000000..b637c8f58 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/fanotify.h @@ -0,0 +1,105 @@ +#ifndef _FANOTIFY_H +#define _FANOTIFY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +struct fanotify_event_metadata { + unsigned event_len; + unsigned char vers; + unsigned char reserved; + unsigned short metadata_len; + unsigned long long mask +#ifdef __GNUC__ + __attribute__((__aligned__(8))) +#endif + ; + int fd; + int pid; +}; + +struct fanotify_event_info_header { + unsigned char info_type; + unsigned char pad; + unsigned short len; +}; + +struct fanotify_event_info_fid { + struct fanotify_event_info_header hdr; + fsid_t fsid; + unsigned char handle[]; +}; + +struct fanotify_response { + int fd; + unsigned response; +}; + +#define FAN_ACCESS 0x01 +#define FAN_MODIFY 0x02 +#define FAN_ATTRIB 0x04 +#define FAN_CLOSE_WRITE 0x08 +#define FAN_CLOSE_NOWRITE 0x10 +#define FAN_OPEN 0x20 +#define FAN_MOVED_FROM 0x40 +#define FAN_MOVED_TO 0x80 +#define FAN_CREATE 0x100 +#define FAN_DELETE 0x200 +#define FAN_DELETE_SELF 0x400 +#define FAN_MOVE_SELF 0x800 +#define FAN_OPEN_EXEC 0x1000 +#define FAN_Q_OVERFLOW 0x4000 +#define FAN_OPEN_PERM 0x10000 +#define FAN_ACCESS_PERM 0x20000 +#define FAN_OPEN_EXEC_PERM 0x40000 +#define FAN_ONDIR 0x40000000 +#define FAN_EVENT_ON_CHILD 0x08000000 +#define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) +#define FAN_MOVE (FAN_MOVED_FROM | FAN_MOVED_TO) +#define FAN_CLOEXEC 0x01 +#define FAN_NONBLOCK 0x02 +#define FAN_CLASS_NOTIF 0 +#define FAN_CLASS_CONTENT 0x04 +#define FAN_CLASS_PRE_CONTENT 0x08 +#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT) +#define FAN_UNLIMITED_QUEUE 0x10 +#define FAN_UNLIMITED_MARKS 0x20 +#define FAN_ENABLE_AUDIT 0x40 +#define FAN_REPORT_TID 0x100 +#define FAN_REPORT_FID 0x200 +#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS) +#define FAN_MARK_ADD 0x01 +#define FAN_MARK_REMOVE 0x02 +#define FAN_MARK_DONT_FOLLOW 0x04 +#define FAN_MARK_ONLYDIR 0x08 +#define FAN_MARK_IGNORED_MASK 0x20 +#define FAN_MARK_IGNORED_SURV_MODIFY 0x40 +#define FAN_MARK_FLUSH 0x80 +#define FAN_MARK_INODE 0x00 +#define FAN_MARK_MOUNT 0x10 +#define FAN_MARK_FILESYSTEM 0x100 +#define FAN_MARK_TYPE_MASK (FAN_MARK_INODE | FAN_MARK_MOUNT | FAN_MARK_FILESYSTEM) +#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH) +#define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN) +#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM) +#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW) +#define FANOTIFY_METADATA_VERSION 3 +#define FAN_EVENT_INFO_TYPE_FID 1 +#define FAN_ALLOW 0x01 +#define FAN_DENY 0x02 +#define FAN_AUDIT 0x10 +#define FAN_NOFD -1 +#define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata)) +#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len, (struct fanotify_event_metadata*)(((char *)(meta)) + (meta)->event_len)) +#define FAN_EVENT_OK(meta, len) ((long)(len) >= (long)FAN_EVENT_METADATA_LEN && (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && (long)(meta)->event_len <= (long)(len)) + +int fanotify_init(unsigned, unsigned); +int fanotify_mark(int, unsigned, unsigned long long, int, const char *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/fcntl.h b/vendor/modernc.org/libc/musl/include/sys/fcntl.h new file mode 100644 index 000000000..3dd928ef6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/fcntl.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/file.h b/vendor/modernc.org/libc/musl/include/sys/file.h new file mode 100644 index 000000000..4fc83b981 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/file.h @@ -0,0 +1,21 @@ +#ifndef _SYS_FILE_H +#define _SYS_FILE_H +#ifdef __cplusplus +extern "C" { +#endif + +#define LOCK_SH 1 +#define LOCK_EX 2 +#define LOCK_NB 4 +#define LOCK_UN 8 + +#define L_SET 0 +#define L_INCR 1 +#define L_XTND 2 + +int flock(int, int); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/fsuid.h b/vendor/modernc.org/libc/musl/include/sys/fsuid.h new file mode 100644 index 000000000..c7a9b8faa --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/fsuid.h @@ -0,0 +1,20 @@ +#ifndef _SYS_FSUID_H +#define _SYS_FSUID_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_uid_t +#define __NEED_gid_t + +#include + +int setfsuid(uid_t); +int setfsgid(gid_t); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/inotify.h b/vendor/modernc.org/libc/musl/include/sys/inotify.h new file mode 100644 index 000000000..69b586319 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/inotify.h @@ -0,0 +1,58 @@ +#ifndef _SYS_INOTIFY_H +#define _SYS_INOTIFY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +struct inotify_event { + int wd; + uint32_t mask, cookie, len; + char name[]; +}; + +#define IN_CLOEXEC O_CLOEXEC +#define IN_NONBLOCK O_NONBLOCK + +#define IN_ACCESS 0x00000001 +#define IN_MODIFY 0x00000002 +#define IN_ATTRIB 0x00000004 +#define IN_CLOSE_WRITE 0x00000008 +#define IN_CLOSE_NOWRITE 0x00000010 +#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) +#define IN_OPEN 0x00000020 +#define IN_MOVED_FROM 0x00000040 +#define IN_MOVED_TO 0x00000080 +#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) +#define IN_CREATE 0x00000100 +#define IN_DELETE 0x00000200 +#define IN_DELETE_SELF 0x00000400 +#define IN_MOVE_SELF 0x00000800 +#define IN_ALL_EVENTS 0x00000fff + +#define IN_UNMOUNT 0x00002000 +#define IN_Q_OVERFLOW 0x00004000 +#define IN_IGNORED 0x00008000 + +#define IN_ONLYDIR 0x01000000 +#define IN_DONT_FOLLOW 0x02000000 +#define IN_EXCL_UNLINK 0x04000000 +#define IN_MASK_CREATE 0x10000000 +#define IN_MASK_ADD 0x20000000 + +#define IN_ISDIR 0x40000000 +#define IN_ONESHOT 0x80000000 + +int inotify_init(void); +int inotify_init1(int); +int inotify_add_watch(int, const char *, uint32_t); +int inotify_rm_watch(int, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/io.h b/vendor/modernc.org/libc/musl/include/sys/io.h new file mode 100644 index 000000000..16658ceca --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/io.h @@ -0,0 +1,17 @@ +#ifndef _SYS_IO_H +#define _SYS_IO_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +int iopl(int); +int ioperm(unsigned long, unsigned long, int); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/ioctl.h b/vendor/modernc.org/libc/musl/include/sys/ioctl.h new file mode 100644 index 000000000..c2ce3b484 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/ioctl.h @@ -0,0 +1,125 @@ +#ifndef _SYS_IOCTL_H +#define _SYS_IOCTL_H +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define N_TTY 0 +#define N_SLIP 1 +#define N_MOUSE 2 +#define N_PPP 3 +#define N_STRIP 4 +#define N_AX25 5 +#define N_X25 6 +#define N_6PACK 7 +#define N_MASC 8 +#define N_R3964 9 +#define N_PROFIBUS_FDL 10 +#define N_IRDA 11 +#define N_SMSBLOCK 12 +#define N_HDLC 13 +#define N_SYNC_PPP 14 +#define N_HCI 15 +#define N_GIGASET_M101 16 +#define N_SLCAN 17 +#define N_PPS 18 +#define N_V253 19 +#define N_CAIF 20 +#define N_GSM0710 21 +#define N_TI_WL 22 +#define N_TRACESINK 23 +#define N_TRACEROUTER 24 +#define N_NCI 25 +#define N_SPEAKUP 26 +#define N_NULL 27 + +#define TIOCPKT_DATA 0 +#define TIOCPKT_FLUSHREAD 1 +#define TIOCPKT_FLUSHWRITE 2 +#define TIOCPKT_STOP 4 +#define TIOCPKT_START 8 +#define TIOCPKT_NOSTOP 16 +#define TIOCPKT_DOSTOP 32 +#define TIOCPKT_IOCTL 64 + +#define TIOCSER_TEMT 1 + +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#define SIOCADDRT 0x890B +#define SIOCDELRT 0x890C +#define SIOCRTMSG 0x890D + +#define SIOCGIFNAME 0x8910 +#define SIOCSIFLINK 0x8911 +#define SIOCGIFCONF 0x8912 +#define SIOCGIFFLAGS 0x8913 +#define SIOCSIFFLAGS 0x8914 +#define SIOCGIFADDR 0x8915 +#define SIOCSIFADDR 0x8916 +#define SIOCGIFDSTADDR 0x8917 +#define SIOCSIFDSTADDR 0x8918 +#define SIOCGIFBRDADDR 0x8919 +#define SIOCSIFBRDADDR 0x891a +#define SIOCGIFNETMASK 0x891b +#define SIOCSIFNETMASK 0x891c +#define SIOCGIFMETRIC 0x891d +#define SIOCSIFMETRIC 0x891e +#define SIOCGIFMEM 0x891f +#define SIOCSIFMEM 0x8920 +#define SIOCGIFMTU 0x8921 +#define SIOCSIFMTU 0x8922 +#define SIOCSIFNAME 0x8923 +#define SIOCSIFHWADDR 0x8924 +#define SIOCGIFENCAP 0x8925 +#define SIOCSIFENCAP 0x8926 +#define SIOCGIFHWADDR 0x8927 +#define SIOCGIFSLAVE 0x8929 +#define SIOCSIFSLAVE 0x8930 +#define SIOCADDMULTI 0x8931 +#define SIOCDELMULTI 0x8932 +#define SIOCGIFINDEX 0x8933 +#define SIOGIFINDEX SIOCGIFINDEX +#define SIOCSIFPFLAGS 0x8934 +#define SIOCGIFPFLAGS 0x8935 +#define SIOCDIFADDR 0x8936 +#define SIOCSIFHWBROADCAST 0x8937 +#define SIOCGIFCOUNT 0x8938 + +#define SIOCGIFBR 0x8940 +#define SIOCSIFBR 0x8941 + +#define SIOCGIFTXQLEN 0x8942 +#define SIOCSIFTXQLEN 0x8943 + +#define SIOCDARP 0x8953 +#define SIOCGARP 0x8954 +#define SIOCSARP 0x8955 + +#define SIOCDRARP 0x8960 +#define SIOCGRARP 0x8961 +#define SIOCSRARP 0x8962 + +#define SIOCGIFMAP 0x8970 +#define SIOCSIFMAP 0x8971 + +#define SIOCADDDLCI 0x8980 +#define SIOCDELDLCI 0x8981 + +#define SIOCDEVPRIVATE 0x89F0 +#define SIOCPROTOPRIVATE 0x89E0 + +int ioctl (int, int, ...); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/ipc.h b/vendor/modernc.org/libc/musl/include/sys/ipc.h new file mode 100644 index 000000000..9e366b7be --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/ipc.h @@ -0,0 +1,42 @@ +#ifndef _SYS_IPC_H +#define _SYS_IPC_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_mode_t +#define __NEED_key_t + +#include + +#define __ipc_perm_key __key +#define __ipc_perm_seq __seq + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __key key +#define __seq seq +#endif + +#include +#include + +#define IPC_CREAT 01000 +#define IPC_EXCL 02000 +#define IPC_NOWAIT 04000 + +#define IPC_RMID 0 +#define IPC_SET 1 +#define IPC_INFO 3 + +#define IPC_PRIVATE ((key_t) 0) + +key_t ftok (const char *, int); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/kd.h b/vendor/modernc.org/libc/musl/include/sys/kd.h new file mode 100644 index 000000000..42122b9c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/kd.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/klog.h b/vendor/modernc.org/libc/musl/include/sys/klog.h new file mode 100644 index 000000000..aa66684e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/klog.h @@ -0,0 +1,14 @@ +#ifndef _SYS_KLOG_H +#define _SYS_KLOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +int klogctl (int, char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/membarrier.h b/vendor/modernc.org/libc/musl/include/sys/membarrier.h new file mode 100644 index 000000000..10cb31083 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/membarrier.h @@ -0,0 +1,17 @@ +#ifndef _SYS_MEMBARRIER_H +#define _SYS_MEMBARRIER_H + +#define MEMBARRIER_CMD_QUERY 0 +#define MEMBARRIER_CMD_GLOBAL 1 +#define MEMBARRIER_CMD_GLOBAL_EXPEDITED 2 +#define MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED 4 +#define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 +#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 +#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 32 +#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 64 + +#define MEMBARRIER_CMD_SHARED MEMBARRIER_CMD_GLOBAL + +int membarrier(int, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/mman.h b/vendor/modernc.org/libc/musl/include/sys/mman.h new file mode 100644 index 000000000..3bade7272 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/mman.h @@ -0,0 +1,150 @@ +#ifndef _SYS_MMAN_H +#define _SYS_MMAN_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_mode_t +#define __NEED_size_t +#define __NEED_off_t + +#if defined(_GNU_SOURCE) +#define __NEED_ssize_t +#endif + +#include + +#define MAP_FAILED ((void *) -1) + +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_SHARED_VALIDATE 0x03 +#define MAP_TYPE 0x0f +#define MAP_FIXED 0x10 +#define MAP_ANON 0x20 +#define MAP_ANONYMOUS MAP_ANON +#define MAP_NORESERVE 0x4000 +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 +#define MAP_SYNC 0x80000 +#define MAP_FIXED_NOREPLACE 0x100000 +#define MAP_FILE 0 + +#define MAP_HUGE_SHIFT 26 +#define MAP_HUGE_MASK 0x3f +#define MAP_HUGE_64KB (16 << 26) +#define MAP_HUGE_512KB (19 << 26) +#define MAP_HUGE_1MB (20 << 26) +#define MAP_HUGE_2MB (21 << 26) +#define MAP_HUGE_8MB (23 << 26) +#define MAP_HUGE_16MB (24 << 26) +#define MAP_HUGE_32MB (25 << 26) +#define MAP_HUGE_256MB (28 << 26) +#define MAP_HUGE_512MB (29 << 26) +#define MAP_HUGE_1GB (30 << 26) +#define MAP_HUGE_2GB (31 << 26) +#define MAP_HUGE_16GB (34U << 26) + +#define PROT_NONE 0 +#define PROT_READ 1 +#define PROT_WRITE 2 +#define PROT_EXEC 4 +#define PROT_GROWSDOWN 0x01000000 +#define PROT_GROWSUP 0x02000000 + +#define MS_ASYNC 1 +#define MS_INVALIDATE 2 +#define MS_SYNC 4 + +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 +#define MCL_ONFAULT 4 + +#define POSIX_MADV_NORMAL 0 +#define POSIX_MADV_RANDOM 1 +#define POSIX_MADV_SEQUENTIAL 2 +#define POSIX_MADV_WILLNEED 3 +#define POSIX_MADV_DONTNEED 4 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +#define MADV_DONTNEED 4 +#define MADV_FREE 8 +#define MADV_REMOVE 9 +#define MADV_DONTFORK 10 +#define MADV_DOFORK 11 +#define MADV_MERGEABLE 12 +#define MADV_UNMERGEABLE 13 +#define MADV_HUGEPAGE 14 +#define MADV_NOHUGEPAGE 15 +#define MADV_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MADV_WIPEONFORK 18 +#define MADV_KEEPONFORK 19 +#define MADV_COLD 20 +#define MADV_PAGEOUT 21 +#define MADV_HWPOISON 100 +#define MADV_SOFT_OFFLINE 101 +#endif + +#ifdef _GNU_SOURCE +#define MREMAP_MAYMOVE 1 +#define MREMAP_FIXED 2 + +#define MLOCK_ONFAULT 0x01 + +#define MFD_CLOEXEC 0x0001U +#define MFD_ALLOW_SEALING 0x0002U +#define MFD_HUGETLB 0x0004U +#endif + +#include + +void *mmap (void *, size_t, int, int, int, off_t); +int munmap (void *, size_t); + +int mprotect (void *, size_t, int); +int msync (void *, size_t, int); + +int posix_madvise (void *, size_t, int); + +int mlock (const void *, size_t); +int munlock (const void *, size_t); +int mlockall (int); +int munlockall (void); + +#ifdef _GNU_SOURCE +void *mremap (void *, size_t, size_t, int, ...); +int remap_file_pages (void *, size_t, int, size_t, int); +int memfd_create (const char *, unsigned); +int mlock2 (const void *, size_t, unsigned); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int madvise (void *, size_t, int); +int mincore (void *, size_t, unsigned char *); +#endif + +int shm_open (const char *, int, mode_t); +int shm_unlink (const char *); + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define mmap64 mmap +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/mount.h b/vendor/modernc.org/libc/musl/include/sys/mount.h new file mode 100644 index 000000000..57a89c09e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/mount.h @@ -0,0 +1,74 @@ +#ifndef _SYS_MOUNT_H +#define _SYS_MOUNT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define BLKROSET _IO(0x12, 93) +#define BLKROGET _IO(0x12, 94) +#define BLKRRPART _IO(0x12, 95) +#define BLKGETSIZE _IO(0x12, 96) +#define BLKFLSBUF _IO(0x12, 97) +#define BLKRASET _IO(0x12, 98) +#define BLKRAGET _IO(0x12, 99) +#define BLKFRASET _IO(0x12,100) +#define BLKFRAGET _IO(0x12,101) +#define BLKSECTSET _IO(0x12,102) +#define BLKSECTGET _IO(0x12,103) +#define BLKSSZGET _IO(0x12,104) +#define BLKBSZGET _IOR(0x12,112,size_t) +#define BLKBSZSET _IOW(0x12,113,size_t) +#define BLKGETSIZE64 _IOR(0x12,114,size_t) + +#define MS_RDONLY 1 +#define MS_NOSUID 2 +#define MS_NODEV 4 +#define MS_NOEXEC 8 +#define MS_SYNCHRONOUS 16 +#define MS_REMOUNT 32 +#define MS_MANDLOCK 64 +#define MS_DIRSYNC 128 +#define MS_NOATIME 1024 +#define MS_NODIRATIME 2048 +#define MS_BIND 4096 +#define MS_MOVE 8192 +#define MS_REC 16384 +#define MS_SILENT 32768 +#define MS_POSIXACL (1<<16) +#define MS_UNBINDABLE (1<<17) +#define MS_PRIVATE (1<<18) +#define MS_SLAVE (1<<19) +#define MS_SHARED (1<<20) +#define MS_RELATIME (1<<21) +#define MS_KERNMOUNT (1<<22) +#define MS_I_VERSION (1<<23) +#define MS_STRICTATIME (1<<24) +#define MS_LAZYTIME (1<<25) +#define MS_NOREMOTELOCK (1<<27) +#define MS_NOSEC (1<<28) +#define MS_BORN (1<<29) +#define MS_ACTIVE (1<<30) +#define MS_NOUSER (1U<<31) + +#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION|MS_LAZYTIME) + +#define MS_MGC_VAL 0xc0ed0000 +#define MS_MGC_MSK 0xffff0000 + +#define MNT_FORCE 1 +#define MNT_DETACH 2 +#define MNT_EXPIRE 4 +#define UMOUNT_NOFOLLOW 8 + +int mount(const char *, const char *, const char *, unsigned long, const void *); +int umount(const char *); +int umount2(const char *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/msg.h b/vendor/modernc.org/libc/musl/include/sys/msg.h new file mode 100644 index 000000000..db5c62a42 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/msg.h @@ -0,0 +1,53 @@ +#ifndef _SYS_MSG_H +#define _SYS_MSG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_pid_t +#define __NEED_key_t +#define __NEED_time_t +#define __NEED_size_t +#define __NEED_ssize_t + +#include + +typedef unsigned long msgqnum_t; +typedef unsigned long msglen_t; + +#include + +#define __msg_cbytes msg_cbytes + +#define MSG_NOERROR 010000 +#define MSG_EXCEPT 020000 + +#define MSG_STAT (11 | (IPC_STAT & 0x100)) +#define MSG_INFO 12 +#define MSG_STAT_ANY (13 | (IPC_STAT & 0x100)) + +struct msginfo { + int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql; + unsigned short msgseg; +}; + +int msgctl (int, int, struct msqid_ds *); +int msgget (key_t, int); +ssize_t msgrcv (int, void *, size_t, long, int); +int msgsnd (int, const void *, size_t, int); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +struct msgbuf { + long mtype; + char mtext[1]; +}; +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/mtio.h b/vendor/modernc.org/libc/musl/include/sys/mtio.h new file mode 100644 index 000000000..f16a529bb --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/mtio.h @@ -0,0 +1,188 @@ +#ifndef _SYS_MTIO_H +#define _SYS_MTIO_H + +#include +#include + +struct mtop { + short mt_op; + int mt_count; +}; + +#define _IOT_mtop _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0) +#define _IOT_mtget _IOT (_IOTS (long), 7, 0, 0, 0, 0) +#define _IOT_mtpos _IOT_SIMPLE (long) +#define _IOT_mtconfiginfo _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1) + + +#define MTRESET 0 +#define MTFSF 1 +#define MTBSF 2 +#define MTFSR 3 +#define MTBSR 4 +#define MTWEOF 5 +#define MTREW 6 +#define MTOFFL 7 +#define MTNOP 8 +#define MTRETEN 9 +#define MTBSFM 10 +#define MTFSFM 11 +#define MTEOM 12 +#define MTERASE 13 +#define MTRAS1 14 +#define MTRAS2 15 +#define MTRAS3 16 +#define MTSETBLK 20 +#define MTSETDENSITY 21 +#define MTSEEK 22 +#define MTTELL 23 +#define MTSETDRVBUFFER 24 +#define MTFSS 25 +#define MTBSS 26 +#define MTWSM 27 +#define MTLOCK 28 +#define MTUNLOCK 29 +#define MTLOAD 30 +#define MTUNLOAD 31 +#define MTCOMPRESSION 32 +#define MTSETPART 33 +#define MTMKPART 34 + +struct mtget { + long mt_type; + long mt_resid; + long mt_dsreg; + long mt_gstat; + long mt_erreg; + int mt_fileno; + int mt_blkno; +}; + +#define MT_ISUNKNOWN 0x01 +#define MT_ISQIC02 0x02 +#define MT_ISWT5150 0x03 +#define MT_ISARCHIVE_5945L2 0x04 +#define MT_ISCMSJ500 0x05 +#define MT_ISTDC3610 0x06 +#define MT_ISARCHIVE_VP60I 0x07 +#define MT_ISARCHIVE_2150L 0x08 +#define MT_ISARCHIVE_2060L 0x09 +#define MT_ISARCHIVESC499 0x0A +#define MT_ISQIC02_ALL_FEATURES 0x0F +#define MT_ISWT5099EEN24 0x11 +#define MT_ISTEAC_MT2ST 0x12 +#define MT_ISEVEREX_FT40A 0x32 +#define MT_ISDDS1 0x51 +#define MT_ISDDS2 0x52 +#define MT_ISSCSI1 0x71 +#define MT_ISSCSI2 0x72 +#define MT_ISFTAPE_UNKNOWN 0x800000 +#define MT_ISFTAPE_FLAG 0x800000 + +struct mt_tape_info { + long t_type; + char *t_name; +}; + +#define MT_TAPE_INFO \ +{ \ + {MT_ISUNKNOWN, "Unknown type of tape device"}, \ + {MT_ISQIC02, "Generic QIC-02 tape streamer"}, \ + {MT_ISWT5150, "Wangtek 5150, QIC-150"}, \ + {MT_ISARCHIVE_5945L2, "Archive 5945L-2"}, \ + {MT_ISCMSJ500, "CMS Jumbo 500"}, \ + {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"}, \ + {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"}, \ + {MT_ISARCHIVE_2150L, "Archive Viper 2150L"}, \ + {MT_ISARCHIVE_2060L, "Archive Viper 2060L"}, \ + {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"}, \ + {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"}, \ + {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"}, \ + {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"}, \ + {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"}, \ + {MT_ISSCSI1, "Generic SCSI-1 tape"}, \ + {MT_ISSCSI2, "Generic SCSI-2 tape"}, \ + {0, 0} \ +} + +struct mtpos { + long mt_blkno; +}; + +struct mtconfiginfo { + long mt_type; + long ifc_type; + unsigned short irqnr; + unsigned short dmanr; + unsigned short port; + unsigned long debug; + unsigned have_dens:1; + unsigned have_bsf:1; + unsigned have_fsr:1; + unsigned have_bsr:1; + unsigned have_eod:1; + unsigned have_seek:1; + unsigned have_tell:1; + unsigned have_ras1:1; + unsigned have_ras2:1; + unsigned have_ras3:1; + unsigned have_qfa:1; + unsigned pad1:5; + char reserved[10]; +}; + +#define MTIOCTOP _IOW('m', 1, struct mtop) +#define MTIOCGET _IOR('m', 2, struct mtget) +#define MTIOCPOS _IOR('m', 3, struct mtpos) + +#define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo) +#define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo) + +#define GMT_EOF(x) ((x) & 0x80000000) +#define GMT_BOT(x) ((x) & 0x40000000) +#define GMT_EOT(x) ((x) & 0x20000000) +#define GMT_SM(x) ((x) & 0x10000000) +#define GMT_EOD(x) ((x) & 0x08000000) +#define GMT_WR_PROT(x) ((x) & 0x04000000) +#define GMT_ONLINE(x) ((x) & 0x01000000) +#define GMT_D_6250(x) ((x) & 0x00800000) +#define GMT_D_1600(x) ((x) & 0x00400000) +#define GMT_D_800(x) ((x) & 0x00200000) +#define GMT_DR_OPEN(x) ((x) & 0x00040000) +#define GMT_IM_REP_EN(x) ((x) & 0x00010000) + +#define MT_ST_BLKSIZE_SHIFT 0 +#define MT_ST_BLKSIZE_MASK 0xffffff +#define MT_ST_DENSITY_SHIFT 24 +#define MT_ST_DENSITY_MASK 0xff000000 +#define MT_ST_SOFTERR_SHIFT 0 +#define MT_ST_SOFTERR_MASK 0xffff +#define MT_ST_OPTIONS 0xf0000000 +#define MT_ST_BOOLEANS 0x10000000 +#define MT_ST_SETBOOLEANS 0x30000000 +#define MT_ST_CLEARBOOLEANS 0x40000000 +#define MT_ST_WRITE_THRESHOLD 0x20000000 +#define MT_ST_DEF_BLKSIZE 0x50000000 +#define MT_ST_DEF_OPTIONS 0x60000000 +#define MT_ST_BUFFER_WRITES 0x1 +#define MT_ST_ASYNC_WRITES 0x2 +#define MT_ST_READ_AHEAD 0x4 +#define MT_ST_DEBUGGING 0x8 +#define MT_ST_TWO_FM 0x10 +#define MT_ST_FAST_MTEOM 0x20 +#define MT_ST_AUTO_LOCK 0x40 +#define MT_ST_DEF_WRITES 0x80 +#define MT_ST_CAN_BSR 0x100 +#define MT_ST_NO_BLKLIMS 0x200 +#define MT_ST_CAN_PARTITIONS 0x400 +#define MT_ST_SCSI2LOGICAL 0x800 +#define MT_ST_CLEAR_DEFAULT 0xfffff +#define MT_ST_DEF_DENSITY (MT_ST_DEF_OPTIONS | 0x100000) +#define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPTIONS | 0x200000) +#define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPTIONS | 0x300000) +#define MT_ST_HPLOADER_OFFSET 10000 +#ifndef DEFTAPE +# define DEFTAPE "/dev/tape" +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/param.h b/vendor/modernc.org/libc/musl/include/sys/param.h new file mode 100644 index 000000000..ce6b80198 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/param.h @@ -0,0 +1,35 @@ +#ifndef _SYS_PARAM_H +#define _SYS_PARAM_H + +#define MAXSYMLINKS 20 +#define MAXHOSTNAMELEN 64 +#define MAXNAMLEN 255 +#define MAXPATHLEN 4096 +#define NBBY 8 +#define NGROUPS 32 +#define CANBSIZ 255 +#define NOFILE 256 +#define NCARGS 131072 +#define DEV_BSIZE 512 +#define NOGROUP (-1) + +#undef MIN +#undef MAX +#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MAX(a,b) (((a)>(b))?(a):(b)) + +#define __bitop(x,i,o) ((x)[(i)/8] o (1<<(i)%8)) +#define setbit(x,i) __bitop(x,i,|=) +#define clrbit(x,i) __bitop(x,i,&=~) +#define isset(x,i) __bitop(x,i,&) +#define isclr(x,i) !isset(x,i) + +#define howmany(n,d) (((n)+((d)-1))/(d)) +#define roundup(n,d) (howmany(n,d)*(d)) +#define powerof2(n) !(((n)-1) & (n)) + +#include +#include +#include + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/personality.h b/vendor/modernc.org/libc/musl/include/sys/personality.h new file mode 100644 index 000000000..31d43dfe1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/personality.h @@ -0,0 +1,46 @@ +#ifndef _PERSONALITY_H +#define _PERSONALITY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ADDR_NO_RANDOMIZE 0x0040000 +#define MMAP_PAGE_ZERO 0x0100000 +#define ADDR_COMPAT_LAYOUT 0x0200000 +#define READ_IMPLIES_EXEC 0x0400000 +#define ADDR_LIMIT_32BIT 0x0800000 +#define SHORT_INODE 0x1000000 +#define WHOLE_SECONDS 0x2000000 +#define STICKY_TIMEOUTS 0x4000000 +#define ADDR_LIMIT_3GB 0x8000000 + +#define PER_LINUX 0 +#define PER_LINUX_32BIT ADDR_LIMIT_32BIT +#define PER_SVR4 (1 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO) +#define PER_SVR3 (2 | STICKY_TIMEOUTS | SHORT_INODE) +#define PER_SCOSVR3 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE) +#define PER_OSR5 (3 | STICKY_TIMEOUTS | WHOLE_SECONDS) +#define PER_WYSEV386 (4 | STICKY_TIMEOUTS | SHORT_INODE) +#define PER_ISCR4 (5 | STICKY_TIMEOUTS) +#define PER_BSD 6 +#define PER_SUNOS (6 | STICKY_TIMEOUTS) +#define PER_XENIX (7 | STICKY_TIMEOUTS | SHORT_INODE) +#define PER_LINUX32 8 +#define PER_LINUX32_3GB (8 | ADDR_LIMIT_3GB) +#define PER_IRIX32 (9 | STICKY_TIMEOUTS) +#define PER_IRIXN32 (0xa | STICKY_TIMEOUTS) +#define PER_IRIX64 (0x0b | STICKY_TIMEOUTS) +#define PER_RISCOS 0xc +#define PER_SOLARIS (0xd | STICKY_TIMEOUTS) +#define PER_UW7 (0xe | STICKY_TIMEOUTS | MMAP_PAGE_ZERO) +#define PER_OSF4 0xf +#define PER_HPUX 0x10 +#define PER_MASK 0xff + +int personality(unsigned long); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/poll.h b/vendor/modernc.org/libc/musl/include/sys/poll.h new file mode 100644 index 000000000..99170401d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/poll.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/prctl.h b/vendor/modernc.org/libc/musl/include/sys/prctl.h new file mode 100644 index 000000000..d9c846e9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/prctl.h @@ -0,0 +1,167 @@ +#ifndef _SYS_PRCTL_H +#define _SYS_PRCTL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define PR_SET_PDEATHSIG 1 +#define PR_GET_PDEATHSIG 2 +#define PR_GET_DUMPABLE 3 +#define PR_SET_DUMPABLE 4 +#define PR_GET_UNALIGN 5 +#define PR_SET_UNALIGN 6 +#define PR_UNALIGN_NOPRINT 1 +#define PR_UNALIGN_SIGBUS 2 +#define PR_GET_KEEPCAPS 7 +#define PR_SET_KEEPCAPS 8 +#define PR_GET_FPEMU 9 +#define PR_SET_FPEMU 10 +#define PR_FPEMU_NOPRINT 1 +#define PR_FPEMU_SIGFPE 2 +#define PR_GET_FPEXC 11 +#define PR_SET_FPEXC 12 +#define PR_FP_EXC_SW_ENABLE 0x80 +#define PR_FP_EXC_DIV 0x010000 +#define PR_FP_EXC_OVF 0x020000 +#define PR_FP_EXC_UND 0x040000 +#define PR_FP_EXC_RES 0x080000 +#define PR_FP_EXC_INV 0x100000 +#define PR_FP_EXC_DISABLED 0 +#define PR_FP_EXC_NONRECOV 1 +#define PR_FP_EXC_ASYNC 2 +#define PR_FP_EXC_PRECISE 3 +#define PR_GET_TIMING 13 +#define PR_SET_TIMING 14 +#define PR_TIMING_STATISTICAL 0 +#define PR_TIMING_TIMESTAMP 1 +#define PR_SET_NAME 15 +#define PR_GET_NAME 16 +#define PR_GET_ENDIAN 19 +#define PR_SET_ENDIAN 20 +#define PR_ENDIAN_BIG 0 +#define PR_ENDIAN_LITTLE 1 +#define PR_ENDIAN_PPC_LITTLE 2 +#define PR_GET_SECCOMP 21 +#define PR_SET_SECCOMP 22 +#define PR_CAPBSET_READ 23 +#define PR_CAPBSET_DROP 24 +#define PR_GET_TSC 25 +#define PR_SET_TSC 26 +#define PR_TSC_ENABLE 1 +#define PR_TSC_SIGSEGV 2 +#define PR_GET_SECUREBITS 27 +#define PR_SET_SECUREBITS 28 +#define PR_SET_TIMERSLACK 29 +#define PR_GET_TIMERSLACK 30 + +#define PR_TASK_PERF_EVENTS_DISABLE 31 +#define PR_TASK_PERF_EVENTS_ENABLE 32 + +#define PR_MCE_KILL 33 +#define PR_MCE_KILL_CLEAR 0 +#define PR_MCE_KILL_SET 1 +#define PR_MCE_KILL_LATE 0 +#define PR_MCE_KILL_EARLY 1 +#define PR_MCE_KILL_DEFAULT 2 +#define PR_MCE_KILL_GET 34 + +#define PR_SET_MM 35 +#define PR_SET_MM_START_CODE 1 +#define PR_SET_MM_END_CODE 2 +#define PR_SET_MM_START_DATA 3 +#define PR_SET_MM_END_DATA 4 +#define PR_SET_MM_START_STACK 5 +#define PR_SET_MM_START_BRK 6 +#define PR_SET_MM_BRK 7 +#define PR_SET_MM_ARG_START 8 +#define PR_SET_MM_ARG_END 9 +#define PR_SET_MM_ENV_START 10 +#define PR_SET_MM_ENV_END 11 +#define PR_SET_MM_AUXV 12 +#define PR_SET_MM_EXE_FILE 13 +#define PR_SET_MM_MAP 14 +#define PR_SET_MM_MAP_SIZE 15 + +struct prctl_mm_map { + uint64_t start_code; + uint64_t end_code; + uint64_t start_data; + uint64_t end_data; + uint64_t start_brk; + uint64_t brk; + uint64_t start_stack; + uint64_t arg_start; + uint64_t arg_end; + uint64_t env_start; + uint64_t env_end; + uint64_t *auxv; + uint32_t auxv_size; + uint32_t exe_fd; +}; + +#define PR_SET_PTRACER 0x59616d61 +#define PR_SET_PTRACER_ANY (-1UL) + +#define PR_SET_CHILD_SUBREAPER 36 +#define PR_GET_CHILD_SUBREAPER 37 + +#define PR_SET_NO_NEW_PRIVS 38 +#define PR_GET_NO_NEW_PRIVS 39 + +#define PR_GET_TID_ADDRESS 40 + +#define PR_SET_THP_DISABLE 41 +#define PR_GET_THP_DISABLE 42 + +#define PR_MPX_ENABLE_MANAGEMENT 43 +#define PR_MPX_DISABLE_MANAGEMENT 44 + +#define PR_SET_FP_MODE 45 +#define PR_GET_FP_MODE 46 +#define PR_FP_MODE_FR (1 << 0) +#define PR_FP_MODE_FRE (1 << 1) + +#define PR_CAP_AMBIENT 47 +#define PR_CAP_AMBIENT_IS_SET 1 +#define PR_CAP_AMBIENT_RAISE 2 +#define PR_CAP_AMBIENT_LOWER 3 +#define PR_CAP_AMBIENT_CLEAR_ALL 4 + +#define PR_SVE_SET_VL 50 +#define PR_SVE_SET_VL_ONEXEC (1 << 18) +#define PR_SVE_GET_VL 51 +#define PR_SVE_VL_LEN_MASK 0xffff +#define PR_SVE_VL_INHERIT (1 << 17) + +#define PR_GET_SPECULATION_CTRL 52 +#define PR_SET_SPECULATION_CTRL 53 +#define PR_SPEC_STORE_BYPASS 0 +#define PR_SPEC_INDIRECT_BRANCH 1 +#define PR_SPEC_NOT_AFFECTED 0 +#define PR_SPEC_PRCTL (1UL << 0) +#define PR_SPEC_ENABLE (1UL << 1) +#define PR_SPEC_DISABLE (1UL << 2) +#define PR_SPEC_FORCE_DISABLE (1UL << 3) +#define PR_SPEC_DISABLE_NOEXEC (1UL << 4) + +#define PR_PAC_RESET_KEYS 54 +#define PR_PAC_APIAKEY (1UL << 0) +#define PR_PAC_APIBKEY (1UL << 1) +#define PR_PAC_APDAKEY (1UL << 2) +#define PR_PAC_APDBKEY (1UL << 3) +#define PR_PAC_APGAKEY (1UL << 4) + +#define PR_SET_TAGGED_ADDR_CTRL 55 +#define PR_GET_TAGGED_ADDR_CTRL 56 +#define PR_TAGGED_ADDR_ENABLE (1UL << 0) + +int prctl (int, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/procfs.h b/vendor/modernc.org/libc/musl/include/sys/procfs.h new file mode 100644 index 000000000..38e58c168 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/procfs.h @@ -0,0 +1,63 @@ +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +struct elf_siginfo { + int si_signo; + int si_code; + int si_errno; +}; + +struct elf_prstatus { + struct elf_siginfo pr_info; + short int pr_cursig; + unsigned long int pr_sigpend; + unsigned long int pr_sighold; + pid_t pr_pid; + pid_t pr_ppid; + pid_t pr_pgrp; + pid_t pr_sid; + struct { + long tv_sec, tv_usec; + } pr_utime, pr_stime, pr_cutime, pr_cstime; + elf_gregset_t pr_reg; + int pr_fpvalid; +}; + +#define ELF_PRARGSZ 80 + +struct elf_prpsinfo { + char pr_state; + char pr_sname; + char pr_zomb; + char pr_nice; + unsigned long int pr_flag; +#if UINTPTR_MAX == 0xffffffff + unsigned short int pr_uid; + unsigned short int pr_gid; +#else + unsigned int pr_uid; + unsigned int pr_gid; +#endif + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + char pr_fname[16]; + char pr_psargs[ELF_PRARGSZ]; +}; + +typedef void *psaddr_t; +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; +typedef pid_t lwpid_t; +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/ptrace.h b/vendor/modernc.org/libc/musl/include/sys/ptrace.h new file mode 100644 index 000000000..5d62a9859 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/ptrace.h @@ -0,0 +1,138 @@ +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define PTRACE_TRACEME 0 +#define PT_TRACE_ME PTRACE_TRACEME + +#define PTRACE_PEEKTEXT 1 +#define PTRACE_PEEKDATA 2 +#define PTRACE_PEEKUSER 3 +#define PTRACE_POKETEXT 4 +#define PTRACE_POKEDATA 5 +#define PTRACE_POKEUSER 6 +#define PTRACE_CONT 7 +#define PTRACE_KILL 8 +#define PTRACE_SINGLESTEP 9 +#define PTRACE_GETREGS 12 +#define PTRACE_SETREGS 13 +#define PTRACE_GETFPREGS 14 +#define PTRACE_SETFPREGS 15 +#define PTRACE_ATTACH 16 +#define PTRACE_DETACH 17 +#define PTRACE_GETFPXREGS 18 +#define PTRACE_SETFPXREGS 19 +#define PTRACE_SYSCALL 24 +#define PTRACE_SETOPTIONS 0x4200 +#define PTRACE_GETEVENTMSG 0x4201 +#define PTRACE_GETSIGINFO 0x4202 +#define PTRACE_SETSIGINFO 0x4203 +#define PTRACE_GETREGSET 0x4204 +#define PTRACE_SETREGSET 0x4205 +#define PTRACE_SEIZE 0x4206 +#define PTRACE_INTERRUPT 0x4207 +#define PTRACE_LISTEN 0x4208 +#define PTRACE_PEEKSIGINFO 0x4209 +#define PTRACE_GETSIGMASK 0x420a +#define PTRACE_SETSIGMASK 0x420b +#define PTRACE_SECCOMP_GET_FILTER 0x420c +#define PTRACE_SECCOMP_GET_METADATA 0x420d +#define PTRACE_GET_SYSCALL_INFO 0x420e + +#define PT_READ_I PTRACE_PEEKTEXT +#define PT_READ_D PTRACE_PEEKDATA +#define PT_READ_U PTRACE_PEEKUSER +#define PT_WRITE_I PTRACE_POKETEXT +#define PT_WRITE_D PTRACE_POKEDATA +#define PT_WRITE_U PTRACE_POKEUSER +#define PT_CONTINUE PTRACE_CONT +#define PT_KILL PTRACE_KILL +#define PT_STEP PTRACE_SINGLESTEP +#define PT_GETREGS PTRACE_GETREGS +#define PT_SETREGS PTRACE_SETREGS +#define PT_GETFPREGS PTRACE_GETFPREGS +#define PT_SETFPREGS PTRACE_SETFPREGS +#define PT_ATTACH PTRACE_ATTACH +#define PT_DETACH PTRACE_DETACH +#define PT_GETFPXREGS PTRACE_GETFPXREGS +#define PT_SETFPXREGS PTRACE_SETFPXREGS +#define PT_SYSCALL PTRACE_SYSCALL +#define PT_SETOPTIONS PTRACE_SETOPTIONS +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG +#define PT_GETSIGINFO PTRACE_GETSIGINFO +#define PT_SETSIGINFO PTRACE_SETSIGINFO + +#define PTRACE_O_TRACESYSGOOD 0x00000001 +#define PTRACE_O_TRACEFORK 0x00000002 +#define PTRACE_O_TRACEVFORK 0x00000004 +#define PTRACE_O_TRACECLONE 0x00000008 +#define PTRACE_O_TRACEEXEC 0x00000010 +#define PTRACE_O_TRACEVFORKDONE 0x00000020 +#define PTRACE_O_TRACEEXIT 0x00000040 +#define PTRACE_O_TRACESECCOMP 0x00000080 +#define PTRACE_O_EXITKILL 0x00100000 +#define PTRACE_O_SUSPEND_SECCOMP 0x00200000 +#define PTRACE_O_MASK 0x003000ff + +#define PTRACE_EVENT_FORK 1 +#define PTRACE_EVENT_VFORK 2 +#define PTRACE_EVENT_CLONE 3 +#define PTRACE_EVENT_EXEC 4 +#define PTRACE_EVENT_VFORK_DONE 5 +#define PTRACE_EVENT_EXIT 6 +#define PTRACE_EVENT_SECCOMP 7 +#define PTRACE_EVENT_STOP 128 + +#define PTRACE_PEEKSIGINFO_SHARED 1 + +#define PTRACE_SYSCALL_INFO_NONE 0 +#define PTRACE_SYSCALL_INFO_ENTRY 1 +#define PTRACE_SYSCALL_INFO_EXIT 2 +#define PTRACE_SYSCALL_INFO_SECCOMP 3 + +#include + +struct __ptrace_peeksiginfo_args { + uint64_t off; + uint32_t flags; + int32_t nr; +}; + +struct __ptrace_seccomp_metadata { + uint64_t filter_off; + uint64_t flags; +}; + +struct __ptrace_syscall_info { + uint8_t op; + uint8_t __pad[3]; + uint32_t arch; + uint64_t instruction_pointer; + uint64_t stack_pointer; + union { + struct { + uint64_t nr; + uint64_t args[6]; + } entry; + struct { + int64_t rval; + uint8_t is_error; + } exit; + struct { + uint64_t nr; + uint64_t args[6]; + uint32_t ret_data; + } seccomp; + }; +}; + +long ptrace(int, ...); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/quota.h b/vendor/modernc.org/libc/musl/include/sys/quota.h new file mode 100644 index 000000000..3ed73785d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/quota.h @@ -0,0 +1,102 @@ +#ifndef _SYS_QUOTA_H +#define _SYS_QUOTA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define _LINUX_QUOTA_VERSION 2 + +#define dbtob(num) ((num) << 10) +#define btodb(num) ((num) >> 10) +#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024) + +#define MAX_IQ_TIME 604800 +#define MAX_DQ_TIME 604800 + +#define MAXQUOTAS 2 +#define USRQUOTA 0 +#define GRPQUOTA 1 + +#define INITQFNAMES { "user", "group", "undefined" }; + +#define QUOTAFILENAME "quota" +#define QUOTAGROUP "staff" + +#define NR_DQHASH 43 +#define NR_DQUOTS 256 + +#define SUBCMDMASK 0x00ff +#define SUBCMDSHIFT 8 +#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK)) + +#define Q_SYNC 0x800001 +#define Q_QUOTAON 0x800002 +#define Q_QUOTAOFF 0x800003 +#define Q_GETFMT 0x800004 +#define Q_GETINFO 0x800005 +#define Q_SETINFO 0x800006 +#define Q_GETQUOTA 0x800007 +#define Q_SETQUOTA 0x800008 + +#define QFMT_VFS_OLD 1 +#define QFMT_VFS_V0 2 +#define QFMT_OCFS2 3 +#define QFMT_VFS_V1 4 + +#define QIF_BLIMITS 1 +#define QIF_SPACE 2 +#define QIF_ILIMITS 4 +#define QIF_INODES 8 +#define QIF_BTIME 16 +#define QIF_ITIME 32 +#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS) +#define QIF_USAGE (QIF_SPACE | QIF_INODES) +#define QIF_TIMES (QIF_BTIME | QIF_ITIME) +#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES) + +struct dqblk { + uint64_t dqb_bhardlimit; + uint64_t dqb_bsoftlimit; + uint64_t dqb_curspace; + uint64_t dqb_ihardlimit; + uint64_t dqb_isoftlimit; + uint64_t dqb_curinodes; + uint64_t dqb_btime; + uint64_t dqb_itime; + uint32_t dqb_valid; +}; + +#define dq_bhardlimit dq_dqb.dqb_bhardlimit +#define dq_bsoftlimit dq_dqb.dqb_bsoftlimit +#define dq_curspace dq_dqb.dqb_curspace +#define dq_valid dq_dqb.dqb_valid +#define dq_ihardlimit dq_dqb.dqb_ihardlimit +#define dq_isoftlimit dq_dqb.dqb_isoftlimit +#define dq_curinodes dq_dqb.dqb_curinodes +#define dq_btime dq_dqb.dqb_btime +#define dq_itime dq_dqb.dqb_itime + +#define dqoff(UID) ((long long)(UID) * sizeof (struct dqblk)) + +#define IIF_BGRACE 1 +#define IIF_IGRACE 2 +#define IIF_FLAGS 4 +#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS) + +struct dqinfo { + uint64_t dqi_bgrace; + uint64_t dqi_igrace; + uint32_t dqi_flags; + uint32_t dqi_valid; +}; + +int quotactl(int, const char *, int, char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/random.h b/vendor/modernc.org/libc/musl/include/sys/random.h new file mode 100644 index 000000000..4ee7bf2cc --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/random.h @@ -0,0 +1,19 @@ +#ifndef _SYS_RANDOM_H +#define _SYS_RANDOM_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_ssize_t +#include + +#define GRND_NONBLOCK 0x0001 +#define GRND_RANDOM 0x0002 + +ssize_t getrandom(void *, size_t, unsigned); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/reboot.h b/vendor/modernc.org/libc/musl/include/sys/reboot.h new file mode 100644 index 000000000..9702eddba --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/reboot.h @@ -0,0 +1,20 @@ +#ifndef _SYS_REBOOT_H +#define _SYS_REBOOT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define RB_AUTOBOOT 0x01234567 +#define RB_HALT_SYSTEM 0xcdef0123 +#define RB_ENABLE_CAD 0x89abcdef +#define RB_DISABLE_CAD 0 +#define RB_POWER_OFF 0x4321fedc +#define RB_SW_SUSPEND 0xd000fce2 +#define RB_KEXEC 0x45584543 + +int reboot(int); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/reg.h b/vendor/modernc.org/libc/musl/include/sys/reg.h new file mode 100644 index 000000000..b47452d00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/reg.h @@ -0,0 +1,9 @@ +#ifndef _SYS_REG_H +#define _SYS_REG_H + +#include +#include + +#include + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/resource.h b/vendor/modernc.org/libc/musl/include/sys/resource.h new file mode 100644 index 000000000..3068328d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/resource.h @@ -0,0 +1,116 @@ +#ifndef _SYS_RESOURCE_H +#define _SYS_RESOURCE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define __NEED_id_t + +#ifdef _GNU_SOURCE +#define __NEED_pid_t +#endif + +#include +#include + +typedef unsigned long long rlim_t; + +struct rlimit { + rlim_t rlim_cur; + rlim_t rlim_max; +}; + +struct rusage { + struct timeval ru_utime; + struct timeval ru_stime; + /* linux extentions, but useful */ + long ru_maxrss; + long ru_ixrss; + long ru_idrss; + long ru_isrss; + long ru_minflt; + long ru_majflt; + long ru_nswap; + long ru_inblock; + long ru_oublock; + long ru_msgsnd; + long ru_msgrcv; + long ru_nsignals; + long ru_nvcsw; + long ru_nivcsw; + /* room for more... */ + long __reserved[16]; +}; + +int getrlimit (int, struct rlimit *); +int setrlimit (int, const struct rlimit *); +int getrusage (int, struct rusage *); + +int getpriority (int, id_t); +int setpriority (int, id_t, int); + +#ifdef _GNU_SOURCE +int prlimit(pid_t, int, const struct rlimit *, struct rlimit *); +#define prlimit64 prlimit +#endif + +#define PRIO_MIN (-20) +#define PRIO_MAX 20 + +#define PRIO_PROCESS 0 +#define PRIO_PGRP 1 +#define PRIO_USER 2 + +#define RUSAGE_SELF 0 +#define RUSAGE_CHILDREN (-1) +#define RUSAGE_THREAD 1 + +#define RLIM_INFINITY (~0ULL) +#define RLIM_SAVED_CUR RLIM_INFINITY +#define RLIM_SAVED_MAX RLIM_INFINITY + +#define RLIMIT_CPU 0 +#define RLIMIT_FSIZE 1 +#define RLIMIT_DATA 2 +#define RLIMIT_STACK 3 +#define RLIMIT_CORE 4 +#ifndef RLIMIT_RSS +#define RLIMIT_RSS 5 +#define RLIMIT_NPROC 6 +#define RLIMIT_NOFILE 7 +#define RLIMIT_MEMLOCK 8 +#define RLIMIT_AS 9 +#endif +#define RLIMIT_LOCKS 10 +#define RLIMIT_SIGPENDING 11 +#define RLIMIT_MSGQUEUE 12 +#define RLIMIT_NICE 13 +#define RLIMIT_RTPRIO 14 +#define RLIMIT_RTTIME 15 +#define RLIMIT_NLIMITS 16 + +#define RLIM_NLIMITS RLIMIT_NLIMITS + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define RLIM64_INFINITY RLIM_INFINITY +#define RLIM64_SAVED_CUR RLIM_SAVED_CUR +#define RLIM64_SAVED_MAX RLIM_SAVED_MAX +#define getrlimit64 getrlimit +#define setrlimit64 setrlimit +#define rlimit64 rlimit +#define rlim64_t rlim_t +#endif + +#if _REDIR_TIME64 +__REDIR(getrusage, __getrusage_time64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/select.h b/vendor/modernc.org/libc/musl/include/sys/select.h new file mode 100644 index 000000000..b3bab1d57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/select.h @@ -0,0 +1,46 @@ +#ifndef _SYS_SELECT_H +#define _SYS_SELECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_time_t +#define __NEED_suseconds_t +#define __NEED_struct_timeval +#define __NEED_struct_timespec +#define __NEED_sigset_t + +#include + +#define FD_SETSIZE 1024 + +typedef unsigned long fd_mask; + +typedef struct { + unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)]; +} fd_set; + +#define FD_ZERO(s) do { int __i; unsigned long *__b=(s)->fds_bits; for(__i=sizeof (fd_set)/sizeof (long); __i; __i--) *__b++=0; } while(0) +#define FD_SET(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1UL<<((d)%(8*sizeof(long))))) +#define FD_CLR(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long))))) +#define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long))))) + +int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict); +int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define NFDBITS (8*(int)sizeof(long)) +#endif + +#if _REDIR_TIME64 +__REDIR(select, __select_time64); +__REDIR(pselect, __pselect_time64); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/sem.h b/vendor/modernc.org/libc/musl/include/sys/sem.h new file mode 100644 index 000000000..a747784ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/sem.h @@ -0,0 +1,72 @@ +#ifndef _SYS_SEM_H +#define _SYS_SEM_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_pid_t +#define __NEED_time_t +#ifdef _GNU_SOURCE +#define __NEED_struct_timespec +#endif +#include + +#include + +#define SEM_UNDO 0x1000 +#define GETPID 11 +#define GETVAL 12 +#define GETALL 13 +#define GETNCNT 14 +#define GETZCNT 15 +#define SETVAL 16 +#define SETALL 17 + +#include + +#define _SEM_SEMUN_UNDEFINED 1 + +#define SEM_STAT (18 | (IPC_STAT & 0x100)) +#define SEM_INFO 19 +#define SEM_STAT_ANY (20 | (IPC_STAT & 0x100)) + +struct seminfo { + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +struct sembuf { + unsigned short sem_num; + short sem_op; + short sem_flg; +}; + +int semctl(int, int, int, ...); +int semget(key_t, int, int); +int semop(int, struct sembuf *, size_t); + +#ifdef _GNU_SOURCE +int semtimedop(int, struct sembuf *, size_t, const struct timespec *); +#endif + +#if _REDIR_TIME64 +#ifdef _GNU_SOURCE +__REDIR(semtimedop, __semtimedop_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/sendfile.h b/vendor/modernc.org/libc/musl/include/sys/sendfile.h new file mode 100644 index 000000000..e7570d8e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/sendfile.h @@ -0,0 +1,22 @@ +#ifndef _SYS_SENDFILE_H +#define _SYS_SENDFILE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +ssize_t sendfile(int, int, off_t *, size_t); + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define sendfile64 sendfile +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/shm.h b/vendor/modernc.org/libc/musl/include/sys/shm.h new file mode 100644 index 000000000..fd708cab1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/shm.h @@ -0,0 +1,70 @@ +#ifndef _SYS_SHM_H +#define _SYS_SHM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_time_t +#define __NEED_size_t +#define __NEED_pid_t + +#include + +#include + +#ifdef _GNU_SOURCE +#define __used_ids used_ids +#define __swap_attempts swap_attempts +#define __swap_successes swap_successes +#endif + +#include + +#define SHM_R 0400 +#define SHM_W 0200 + +#define SHM_RDONLY 010000 +#define SHM_RND 020000 +#define SHM_REMAP 040000 +#define SHM_EXEC 0100000 + +#define SHM_LOCK 11 +#define SHM_UNLOCK 12 +#define SHM_STAT (13 | (IPC_STAT & 0x100)) +#define SHM_INFO 14 +#define SHM_STAT_ANY (15 | (IPC_STAT & 0x100)) +#define SHM_DEST 01000 +#define SHM_LOCKED 02000 +#define SHM_HUGETLB 04000 +#define SHM_NORESERVE 010000 + +#define SHM_HUGE_SHIFT 26 +#define SHM_HUGE_MASK 0x3f +#define SHM_HUGE_64KB (16 << 26) +#define SHM_HUGE_512KB (19 << 26) +#define SHM_HUGE_1MB (20 << 26) +#define SHM_HUGE_2MB (21 << 26) +#define SHM_HUGE_8MB (23 << 26) +#define SHM_HUGE_16MB (24 << 26) +#define SHM_HUGE_32MB (25 << 26) +#define SHM_HUGE_256MB (28 << 26) +#define SHM_HUGE_512MB (29 << 26) +#define SHM_HUGE_1GB (30 << 26) +#define SHM_HUGE_2GB (31 << 26) +#define SHM_HUGE_16GB (34U << 26) + +typedef unsigned long shmatt_t; + +void *shmat(int, const void *, int); +int shmctl(int, int, struct shmid_ds *); +int shmdt(const void *); +int shmget(key_t, size_t, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/signal.h b/vendor/modernc.org/libc/musl/include/sys/signal.h new file mode 100644 index 000000000..45bdcc648 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/signal.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/signalfd.h b/vendor/modernc.org/libc/musl/include/sys/signalfd.h new file mode 100644 index 000000000..e881e2cfd --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/signalfd.h @@ -0,0 +1,49 @@ +#ifndef _SYS_SIGNALFD_H +#define _SYS_SIGNALFD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define __NEED_sigset_t + +#include + +#define SFD_CLOEXEC O_CLOEXEC +#define SFD_NONBLOCK O_NONBLOCK + +int signalfd(int, const sigset_t *, int); + +struct signalfd_siginfo { + uint32_t ssi_signo; + int32_t ssi_errno; + int32_t ssi_code; + uint32_t ssi_pid; + uint32_t ssi_uid; + int32_t ssi_fd; + uint32_t ssi_tid; + uint32_t ssi_band; + uint32_t ssi_overrun; + uint32_t ssi_trapno; + int32_t ssi_status; + int32_t ssi_int; + uint64_t ssi_ptr; + uint64_t ssi_utime; + uint64_t ssi_stime; + uint64_t ssi_addr; + uint16_t ssi_addr_lsb; + uint16_t __pad2; + int32_t ssi_syscall; + uint64_t ssi_call_addr; + uint32_t ssi_arch; + uint8_t __pad[128-14*4-5*8-2*2]; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/socket.h b/vendor/modernc.org/libc/musl/include/sys/socket.h new file mode 100644 index 000000000..38f5bb17b --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/socket.h @@ -0,0 +1,413 @@ +#ifndef _SYS_SOCKET_H +#define _SYS_SOCKET_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_socklen_t +#define __NEED_sa_family_t +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_uid_t +#define __NEED_pid_t +#define __NEED_gid_t +#define __NEED_struct_iovec + +#include + +#include + +struct msghdr { + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN + int __pad1; +#endif + int msg_iovlen; +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN + int __pad1; +#endif + void *msg_control; +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN + int __pad2; +#endif + socklen_t msg_controllen; +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN + int __pad2; +#endif + int msg_flags; +}; + +struct cmsghdr { +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN + int __pad1; +#endif + socklen_t cmsg_len; +#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN + int __pad1; +#endif + int cmsg_level; + int cmsg_type; +}; + +#ifdef _GNU_SOURCE +struct ucred { + pid_t pid; + uid_t uid; + gid_t gid; +}; + +struct mmsghdr { + struct msghdr msg_hdr; + unsigned int msg_len; +}; + +struct timespec; + +int sendmmsg (int, struct mmsghdr *, unsigned int, unsigned int); +int recvmmsg (int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *); +#endif + +struct linger { + int l_onoff; + int l_linger; +}; + +#define SHUT_RD 0 +#define SHUT_WR 1 +#define SHUT_RDWR 2 + +#ifndef SOCK_STREAM +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#endif + +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define SOCK_DCCP 6 +#define SOCK_PACKET 10 + +#ifndef SOCK_CLOEXEC +#define SOCK_CLOEXEC 02000000 +#define SOCK_NONBLOCK 04000 +#endif + +#define PF_UNSPEC 0 +#define PF_LOCAL 1 +#define PF_UNIX PF_LOCAL +#define PF_FILE PF_LOCAL +#define PF_INET 2 +#define PF_AX25 3 +#define PF_IPX 4 +#define PF_APPLETALK 5 +#define PF_NETROM 6 +#define PF_BRIDGE 7 +#define PF_ATMPVC 8 +#define PF_X25 9 +#define PF_INET6 10 +#define PF_ROSE 11 +#define PF_DECnet 12 +#define PF_NETBEUI 13 +#define PF_SECURITY 14 +#define PF_KEY 15 +#define PF_NETLINK 16 +#define PF_ROUTE PF_NETLINK +#define PF_PACKET 17 +#define PF_ASH 18 +#define PF_ECONET 19 +#define PF_ATMSVC 20 +#define PF_RDS 21 +#define PF_SNA 22 +#define PF_IRDA 23 +#define PF_PPPOX 24 +#define PF_WANPIPE 25 +#define PF_LLC 26 +#define PF_IB 27 +#define PF_MPLS 28 +#define PF_CAN 29 +#define PF_TIPC 30 +#define PF_BLUETOOTH 31 +#define PF_IUCV 32 +#define PF_RXRPC 33 +#define PF_ISDN 34 +#define PF_PHONET 35 +#define PF_IEEE802154 36 +#define PF_CAIF 37 +#define PF_ALG 38 +#define PF_NFC 39 +#define PF_VSOCK 40 +#define PF_KCM 41 +#define PF_QIPCRTR 42 +#define PF_SMC 43 +#define PF_XDP 44 +#define PF_MAX 45 + +#define AF_UNSPEC PF_UNSPEC +#define AF_LOCAL PF_LOCAL +#define AF_UNIX AF_LOCAL +#define AF_FILE AF_LOCAL +#define AF_INET PF_INET +#define AF_AX25 PF_AX25 +#define AF_IPX PF_IPX +#define AF_APPLETALK PF_APPLETALK +#define AF_NETROM PF_NETROM +#define AF_BRIDGE PF_BRIDGE +#define AF_ATMPVC PF_ATMPVC +#define AF_X25 PF_X25 +#define AF_INET6 PF_INET6 +#define AF_ROSE PF_ROSE +#define AF_DECnet PF_DECnet +#define AF_NETBEUI PF_NETBEUI +#define AF_SECURITY PF_SECURITY +#define AF_KEY PF_KEY +#define AF_NETLINK PF_NETLINK +#define AF_ROUTE PF_ROUTE +#define AF_PACKET PF_PACKET +#define AF_ASH PF_ASH +#define AF_ECONET PF_ECONET +#define AF_ATMSVC PF_ATMSVC +#define AF_RDS PF_RDS +#define AF_SNA PF_SNA +#define AF_IRDA PF_IRDA +#define AF_PPPOX PF_PPPOX +#define AF_WANPIPE PF_WANPIPE +#define AF_LLC PF_LLC +#define AF_IB PF_IB +#define AF_MPLS PF_MPLS +#define AF_CAN PF_CAN +#define AF_TIPC PF_TIPC +#define AF_BLUETOOTH PF_BLUETOOTH +#define AF_IUCV PF_IUCV +#define AF_RXRPC PF_RXRPC +#define AF_ISDN PF_ISDN +#define AF_PHONET PF_PHONET +#define AF_IEEE802154 PF_IEEE802154 +#define AF_CAIF PF_CAIF +#define AF_ALG PF_ALG +#define AF_NFC PF_NFC +#define AF_VSOCK PF_VSOCK +#define AF_KCM PF_KCM +#define AF_QIPCRTR PF_QIPCRTR +#define AF_SMC PF_SMC +#define AF_XDP PF_XDP +#define AF_MAX PF_MAX + +#ifndef SO_DEBUG +#define SO_DEBUG 1 +#define SO_REUSEADDR 2 +#define SO_TYPE 3 +#define SO_ERROR 4 +#define SO_DONTROUTE 5 +#define SO_BROADCAST 6 +#define SO_SNDBUF 7 +#define SO_RCVBUF 8 +#define SO_KEEPALIVE 9 +#define SO_OOBINLINE 10 +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_LINGER 13 +#define SO_BSDCOMPAT 14 +#define SO_REUSEPORT 15 +#define SO_PASSCRED 16 +#define SO_PEERCRED 17 +#define SO_RCVLOWAT 18 +#define SO_SNDLOWAT 19 +#define SO_ACCEPTCONN 30 +#define SO_PEERSEC 31 +#define SO_SNDBUFFORCE 32 +#define SO_RCVBUFFORCE 33 +#define SO_PROTOCOL 38 +#define SO_DOMAIN 39 +#endif + +#ifndef SO_RCVTIMEO +#if __LONG_MAX == 0x7fffffff +#define SO_RCVTIMEO 66 +#define SO_SNDTIMEO 67 +#else +#define SO_RCVTIMEO 20 +#define SO_SNDTIMEO 21 +#endif +#endif + +#ifndef SO_TIMESTAMP +#if __LONG_MAX == 0x7fffffff +#define SO_TIMESTAMP 63 +#define SO_TIMESTAMPNS 64 +#define SO_TIMESTAMPING 65 +#else +#define SO_TIMESTAMP 29 +#define SO_TIMESTAMPNS 35 +#define SO_TIMESTAMPING 37 +#endif +#endif + +#define SO_SECURITY_AUTHENTICATION 22 +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23 +#define SO_SECURITY_ENCRYPTION_NETWORK 24 + +#define SO_BINDTODEVICE 25 + +#define SO_ATTACH_FILTER 26 +#define SO_DETACH_FILTER 27 +#define SO_GET_FILTER SO_ATTACH_FILTER + +#define SO_PEERNAME 28 +#define SCM_TIMESTAMP SO_TIMESTAMP +#define SO_PASSSEC 34 +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS +#define SO_MARK 36 +#define SCM_TIMESTAMPING SO_TIMESTAMPING +#define SO_RXQ_OVFL 40 +#define SO_WIFI_STATUS 41 +#define SCM_WIFI_STATUS SO_WIFI_STATUS +#define SO_PEEK_OFF 42 +#define SO_NOFCS 43 +#define SO_LOCK_FILTER 44 +#define SO_SELECT_ERR_QUEUE 45 +#define SO_BUSY_POLL 46 +#define SO_MAX_PACING_RATE 47 +#define SO_BPF_EXTENSIONS 48 +#define SO_INCOMING_CPU 49 +#define SO_ATTACH_BPF 50 +#define SO_DETACH_BPF SO_DETACH_FILTER +#define SO_ATTACH_REUSEPORT_CBPF 51 +#define SO_ATTACH_REUSEPORT_EBPF 52 +#define SO_CNX_ADVICE 53 +#define SCM_TIMESTAMPING_OPT_STATS 54 +#define SO_MEMINFO 55 +#define SO_INCOMING_NAPI_ID 56 +#define SO_COOKIE 57 +#define SCM_TIMESTAMPING_PKTINFO 58 +#define SO_PEERGROUPS 59 +#define SO_ZEROCOPY 60 +#define SO_TXTIME 61 +#define SCM_TXTIME SO_TXTIME +#define SO_BINDTOIFINDEX 62 +#define SO_DETACH_REUSEPORT_BPF 68 + +#ifndef SOL_SOCKET +#define SOL_SOCKET 1 +#endif + +#define SOL_IP 0 +#define SOL_IPV6 41 +#define SOL_ICMPV6 58 + +#define SOL_RAW 255 +#define SOL_DECNET 261 +#define SOL_X25 262 +#define SOL_PACKET 263 +#define SOL_ATM 264 +#define SOL_AAL 265 +#define SOL_IRDA 266 +#define SOL_NETBEUI 267 +#define SOL_LLC 268 +#define SOL_DCCP 269 +#define SOL_NETLINK 270 +#define SOL_TIPC 271 +#define SOL_RXRPC 272 +#define SOL_PPPOL2TP 273 +#define SOL_BLUETOOTH 274 +#define SOL_PNPIPE 275 +#define SOL_RDS 276 +#define SOL_IUCV 277 +#define SOL_CAIF 278 +#define SOL_ALG 279 +#define SOL_NFC 280 +#define SOL_KCM 281 +#define SOL_TLS 282 +#define SOL_XDP 283 + +#define SOMAXCONN 128 + +#define MSG_OOB 0x0001 +#define MSG_PEEK 0x0002 +#define MSG_DONTROUTE 0x0004 +#define MSG_CTRUNC 0x0008 +#define MSG_PROXY 0x0010 +#define MSG_TRUNC 0x0020 +#define MSG_DONTWAIT 0x0040 +#define MSG_EOR 0x0080 +#define MSG_WAITALL 0x0100 +#define MSG_FIN 0x0200 +#define MSG_SYN 0x0400 +#define MSG_CONFIRM 0x0800 +#define MSG_RST 0x1000 +#define MSG_ERRQUEUE 0x2000 +#define MSG_NOSIGNAL 0x4000 +#define MSG_MORE 0x8000 +#define MSG_WAITFORONE 0x10000 +#define MSG_BATCH 0x40000 +#define MSG_ZEROCOPY 0x4000000 +#define MSG_FASTOPEN 0x20000000 +#define MSG_CMSG_CLOEXEC 0x40000000 + +#define __CMSG_LEN(cmsg) (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1)) +#define __CMSG_NEXT(cmsg) ((unsigned char *)(cmsg) + __CMSG_LEN(cmsg)) +#define __MHDR_END(mhdr) ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen) + +#define CMSG_DATA(cmsg) ((unsigned char *) (((struct cmsghdr *)(cmsg)) + 1)) +#define CMSG_NXTHDR(mhdr, cmsg) ((cmsg)->cmsg_len < sizeof (struct cmsghdr) || \ + __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ + ? 0 : (struct cmsghdr *)__CMSG_NEXT(cmsg)) +#define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0) + +#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) +#define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr))) +#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) + +#define SCM_RIGHTS 0x01 +#define SCM_CREDENTIALS 0x02 + +struct sockaddr { + sa_family_t sa_family; + char sa_data[14]; +}; + +struct sockaddr_storage { + sa_family_t ss_family; + char __ss_padding[128-sizeof(long)-sizeof(sa_family_t)]; + unsigned long __ss_align; +}; + +int socket (int, int, int); +int socketpair (int, int, int, int [2]); + +int shutdown (int, int); + +int bind (int, const struct sockaddr *, socklen_t); +int connect (int, const struct sockaddr *, socklen_t); +int listen (int, int); +int accept (int, struct sockaddr *__restrict, socklen_t *__restrict); +int accept4(int, struct sockaddr *__restrict, socklen_t *__restrict, int); + +int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict); +int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict); + +ssize_t send (int, const void *, size_t, int); +ssize_t recv (int, void *, size_t, int); +ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t); +ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict); +ssize_t sendmsg (int, const struct msghdr *, int); +ssize_t recvmsg (int, struct msghdr *, int); + +int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict); +int setsockopt (int, int, int, const void *, socklen_t); + +int sockatmark (int); + +#if _REDIR_TIME64 +#ifdef _GNU_SOURCE +__REDIR(recvmmsg, __recvmmsg_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/soundcard.h b/vendor/modernc.org/libc/musl/include/sys/soundcard.h new file mode 100644 index 000000000..5ca776461 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/soundcard.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/stat.h b/vendor/modernc.org/libc/musl/include/sys/stat.h new file mode 100644 index 000000000..10d446c46 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/stat.h @@ -0,0 +1,127 @@ +#ifndef _SYS_STAT_H +#define _SYS_STAT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_dev_t +#define __NEED_ino_t +#define __NEED_mode_t +#define __NEED_nlink_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_off_t +#define __NEED_time_t +#define __NEED_blksize_t +#define __NEED_blkcnt_t +#define __NEED_struct_timespec + +#include + +#include + +#define st_atime st_atim.tv_sec +#define st_mtime st_mtim.tv_sec +#define st_ctime st_ctim.tv_sec + +#define S_IFMT 0170000 + +#define S_IFDIR 0040000 +#define S_IFCHR 0020000 +#define S_IFBLK 0060000 +#define S_IFREG 0100000 +#define S_IFIFO 0010000 +#define S_IFLNK 0120000 +#define S_IFSOCK 0140000 + +#define S_TYPEISMQ(buf) 0 +#define S_TYPEISSEM(buf) 0 +#define S_TYPEISSHM(buf) 0 +#define S_TYPEISTMO(buf) 0 + +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) +#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) +#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) + +#ifndef S_IRUSR +#define S_ISUID 04000 +#define S_ISGID 02000 +#define S_ISVTX 01000 +#define S_IRUSR 0400 +#define S_IWUSR 0200 +#define S_IXUSR 0100 +#define S_IRWXU 0700 +#define S_IRGRP 0040 +#define S_IWGRP 0020 +#define S_IXGRP 0010 +#define S_IRWXG 0070 +#define S_IROTH 0004 +#define S_IWOTH 0002 +#define S_IXOTH 0001 +#define S_IRWXO 0007 +#endif + +#define UTIME_NOW 0x3fffffff +#define UTIME_OMIT 0x3ffffffe + +int stat(const char *__restrict, struct stat *__restrict); +int fstat(int, struct stat *); +int lstat(const char *__restrict, struct stat *__restrict); +int fstatat(int, const char *__restrict, struct stat *__restrict, int); +int chmod(const char *, mode_t); +int fchmod(int, mode_t); +int fchmodat(int, const char *, mode_t, int); +mode_t umask(mode_t); +int mkdir(const char *, mode_t); +int mkfifo(const char *, mode_t); +int mkdirat(int, const char *, mode_t); +int mkfifoat(int, const char *, mode_t); + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int mknod(const char *, mode_t, dev_t); +int mknodat(int, const char *, mode_t, dev_t); +#endif + +int futimens(int, const struct timespec [2]); +int utimensat(int, const char *, const struct timespec [2], int); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int lchmod(const char *, mode_t); +#define S_IREAD S_IRUSR +#define S_IWRITE S_IWUSR +#define S_IEXEC S_IXUSR +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define stat64 stat +#define fstat64 fstat +#define lstat64 lstat +#define fstatat64 fstatat +#define blkcnt64_t blkcnt_t +#define fsblkcnt64_t fsblkcnt_t +#define fsfilcnt64_t fsfilcnt_t +#define ino64_t ino_t +#define off64_t off_t +#endif + +#if _REDIR_TIME64 +__REDIR(stat, __stat_time64); +__REDIR(fstat, __fstat_time64); +__REDIR(lstat, __lstat_time64); +__REDIR(fstatat, __fstatat_time64); +__REDIR(futimens, __futimens_time64); +__REDIR(utimensat, __utimensat_time64); +#endif + +#ifdef __cplusplus +} +#endif +#endif + + diff --git a/vendor/modernc.org/libc/musl/include/sys/statfs.h b/vendor/modernc.org/libc/musl/include/sys/statfs.h new file mode 100644 index 000000000..6f4c6230f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/statfs.h @@ -0,0 +1,32 @@ +#ifndef _SYS_STATFS_H +#define _SYS_STATFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +typedef struct __fsid_t { + int __val[2]; +} fsid_t; + +#include + +int statfs (const char *, struct statfs *); +int fstatfs (int, struct statfs *); + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define statfs64 statfs +#define fstatfs64 fstatfs +#define fsblkcnt64_t fsblkcnt_t +#define fsfilcnt64_t fsfilcnt_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/statvfs.h b/vendor/modernc.org/libc/musl/include/sys/statvfs.h new file mode 100644 index 000000000..793490b6d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/statvfs.h @@ -0,0 +1,56 @@ +#ifndef _SYS_STATVFS_H +#define _SYS_STATVFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_fsblkcnt_t +#define __NEED_fsfilcnt_t +#include + +struct statvfs { + unsigned long f_bsize, f_frsize; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree, f_favail; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned long f_fsid; + unsigned :8*(2*sizeof(int)-sizeof(long)); +#else + unsigned :8*(2*sizeof(int)-sizeof(long)); + unsigned long f_fsid; +#endif + unsigned long f_flag, f_namemax; + int __reserved[6]; +}; + +int statvfs (const char *__restrict, struct statvfs *__restrict); +int fstatvfs (int, struct statvfs *); + +#define ST_RDONLY 1 +#define ST_NOSUID 2 +#define ST_NODEV 4 +#define ST_NOEXEC 8 +#define ST_SYNCHRONOUS 16 +#define ST_MANDLOCK 64 +#define ST_WRITE 128 +#define ST_APPEND 256 +#define ST_IMMUTABLE 512 +#define ST_NOATIME 1024 +#define ST_NODIRATIME 2048 +#define ST_RELATIME 4096 + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define statvfs64 statvfs +#define fstatvfs64 fstatvfs +#define fsblkcnt64_t fsblkcnt_t +#define fsfilcnt64_t fsfilcnt_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/stropts.h b/vendor/modernc.org/libc/musl/include/sys/stropts.h new file mode 100644 index 000000000..5b5bc02f4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/stropts.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/swap.h b/vendor/modernc.org/libc/musl/include/sys/swap.h new file mode 100644 index 000000000..11c0f9296 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/swap.h @@ -0,0 +1,21 @@ +#ifndef _SYS_SWAP_H +#define _SYS_SWAP_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define SWAP_FLAG_PREFER 0x8000 +#define SWAP_FLAG_PRIO_MASK 0x7fff +#define SWAP_FLAG_PRIO_SHIFT 0 +#define SWAP_FLAG_DISCARD 0x10000 + +int swapon (const char *, int); +int swapoff (const char *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/syscall.h b/vendor/modernc.org/libc/musl/include/sys/syscall.h new file mode 100644 index 000000000..24987ddf2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/syscall.h @@ -0,0 +1,6 @@ +#ifndef _SYS_SYSCALL_H +#define _SYS_SYSCALL_H + +#include + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/sysinfo.h b/vendor/modernc.org/libc/musl/include/sys/sysinfo.h new file mode 100644 index 000000000..6a3931e52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/sysinfo.h @@ -0,0 +1,36 @@ +#ifndef _SYS_SYSINFO_H +#define _SYS_SYSINFO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define SI_LOAD_SHIFT 16 + +struct sysinfo { + unsigned long uptime; + unsigned long loads[3]; + unsigned long totalram; + unsigned long freeram; + unsigned long sharedram; + unsigned long bufferram; + unsigned long totalswap; + unsigned long freeswap; + unsigned short procs, pad; + unsigned long totalhigh; + unsigned long freehigh; + unsigned mem_unit; + char __reserved[256]; +}; + +int sysinfo (struct sysinfo *); +int get_nprocs_conf (void); +int get_nprocs (void); +long get_phys_pages (void); +long get_avphys_pages (void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/syslog.h b/vendor/modernc.org/libc/musl/include/sys/syslog.h new file mode 100644 index 000000000..7761eceeb --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/syslog.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/sysmacros.h b/vendor/modernc.org/libc/musl/include/sys/sysmacros.h new file mode 100644 index 000000000..07a3ef183 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/sysmacros.h @@ -0,0 +1,15 @@ +#ifndef _SYS_SYSMACROS_H +#define _SYS_SYSMACROS_H + +#define major(x) \ + ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) +#define minor(x) \ + ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) + +#define makedev(x,y) ( \ + (((x)&0xfffff000ULL) << 32) | \ + (((x)&0x00000fffULL) << 8) | \ + (((y)&0xffffff00ULL) << 12) | \ + (((y)&0x000000ffULL)) ) + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/termios.h b/vendor/modernc.org/libc/musl/include/sys/termios.h new file mode 100644 index 000000000..f5f751f04 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/termios.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/time.h b/vendor/modernc.org/libc/musl/include/sys/time.h new file mode 100644 index 000000000..cdc67ef65 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/time.h @@ -0,0 +1,76 @@ +#ifndef _SYS_TIME_H +#define _SYS_TIME_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +int gettimeofday (struct timeval *__restrict, void *__restrict); + +#define ITIMER_REAL 0 +#define ITIMER_VIRTUAL 1 +#define ITIMER_PROF 2 + +struct itimerval { + struct timeval it_interval; + struct timeval it_value; +}; + +int getitimer (int, struct itimerval *); +int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict); +int utimes (const char *, const struct timeval [2]); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; +int futimes(int, const struct timeval [2]); +int futimesat(int, const char *, const struct timeval [2]); +int lutimes(const char *, const struct timeval [2]); +int settimeofday(const struct timeval *, const struct timezone *); +int adjtime (const struct timeval *, struct timeval *); +#define timerisset(t) ((t)->tv_sec || (t)->tv_usec) +#define timerclear(t) ((t)->tv_sec = (t)->tv_usec = 0) +#define timercmp(s,t,op) ((s)->tv_sec == (t)->tv_sec ? \ + (s)->tv_usec op (t)->tv_usec : (s)->tv_sec op (t)->tv_sec) +#define timeradd(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec + (t)->tv_sec, \ + ((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \ + ((a)->tv_usec -= 1000000, (a)->tv_sec++) ) +#define timersub(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec - (t)->tv_sec, \ + ((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \ + ((a)->tv_usec += 1000000, (a)->tv_sec--) ) +#endif + +#if defined(_GNU_SOURCE) +#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \ + (ts)->tv_sec = (tv)->tv_sec, \ + (ts)->tv_nsec = (tv)->tv_usec * 1000, \ + (void)0 ) +#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \ + (tv)->tv_sec = (ts)->tv_sec, \ + (tv)->tv_usec = (ts)->tv_nsec / 1000, \ + (void)0 ) +#endif + +#if _REDIR_TIME64 +__REDIR(gettimeofday, __gettimeofday_time64); +__REDIR(getitimer, __getitimer_time64); +__REDIR(setitimer, __setitimer_time64); +__REDIR(utimes, __utimes_time64); +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +__REDIR(futimes, __futimes_time64); +__REDIR(futimesat, __futimesat_time64); +__REDIR(lutimes, __lutimes_time64); +__REDIR(settimeofday, __settimeofday_time64); +__REDIR(adjtime, __adjtime64); +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/timeb.h b/vendor/modernc.org/libc/musl/include/sys/timeb.h new file mode 100644 index 000000000..628239b7e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/timeb.h @@ -0,0 +1,28 @@ +#ifndef _SYS_TIMEB_H +#define _SYS_TIMEB_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_time_t + +#include + +struct timeb { + time_t time; + unsigned short millitm; + short timezone, dstflag; +}; + +int ftime(struct timeb *); + +#if _REDIR_TIME64 +__REDIR(ftime, __ftime64); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/timerfd.h b/vendor/modernc.org/libc/musl/include/sys/timerfd.h new file mode 100644 index 000000000..1b832cdd8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/timerfd.h @@ -0,0 +1,32 @@ +#ifndef _SYS_TIMERFD_H +#define _SYS_TIMERFD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define TFD_NONBLOCK O_NONBLOCK +#define TFD_CLOEXEC O_CLOEXEC + +#define TFD_TIMER_ABSTIME 1 +#define TFD_TIMER_CANCEL_ON_SET (1 << 1) + +struct itimerspec; + +int timerfd_create(int, int); +int timerfd_settime(int, int, const struct itimerspec *, struct itimerspec *); +int timerfd_gettime(int, struct itimerspec *); + +#if _REDIR_TIME64 +__REDIR(timerfd_settime, __timerfd_settime64); +__REDIR(timerfd_gettime, __timerfd_gettime64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/times.h b/vendor/modernc.org/libc/musl/include/sys/times.h new file mode 100644 index 000000000..80a50522d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/times.h @@ -0,0 +1,25 @@ +#ifndef _SYS_TIMES_H +#define _SYS_TIMES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_clock_t +#include + +struct tms { + clock_t tms_utime; + clock_t tms_stime; + clock_t tms_cutime; + clock_t tms_cstime; +}; + +clock_t times (struct tms *); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/vendor/modernc.org/libc/musl/include/sys/timex.h b/vendor/modernc.org/libc/musl/include/sys/timex.h new file mode 100644 index 000000000..8b417e1be --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/timex.h @@ -0,0 +1,103 @@ +#ifndef _SYS_TIMEX_H +#define _SYS_TIMEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_clockid_t + +#include + +#include + +struct ntptimeval { + struct timeval time; + long maxerror, esterror; +}; + +struct timex { + unsigned modes; + long offset, freq, maxerror, esterror; + int status; + long constant, precision, tolerance; + struct timeval time; + long tick, ppsfreq, jitter; + int shift; + long stabil, jitcnt, calcnt, errcnt, stbcnt; + int tai; + int __padding[11]; +}; + +#define ADJ_OFFSET 0x0001 +#define ADJ_FREQUENCY 0x0002 +#define ADJ_MAXERROR 0x0004 +#define ADJ_ESTERROR 0x0008 +#define ADJ_STATUS 0x0010 +#define ADJ_TIMECONST 0x0020 +#define ADJ_TAI 0x0080 +#define ADJ_SETOFFSET 0x0100 +#define ADJ_MICRO 0x1000 +#define ADJ_NANO 0x2000 +#define ADJ_TICK 0x4000 +#define ADJ_OFFSET_SINGLESHOT 0x8001 +#define ADJ_OFFSET_SS_READ 0xa001 + +#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 +#define MOD_TAI ADJ_TAI +#define MOD_MICRO ADJ_MICRO +#define MOD_NANO ADJ_NANO + +#define STA_PLL 0x0001 +#define STA_PPSFREQ 0x0002 +#define STA_PPSTIME 0x0004 +#define STA_FLL 0x0008 + +#define STA_INS 0x0010 +#define STA_DEL 0x0020 +#define STA_UNSYNC 0x0040 +#define STA_FREQHOLD 0x0080 + +#define STA_PPSSIGNAL 0x0100 +#define STA_PPSJITTER 0x0200 +#define STA_PPSWANDER 0x0400 +#define STA_PPSERROR 0x0800 + +#define STA_CLOCKERR 0x1000 +#define STA_NANO 0x2000 +#define STA_MODE 0x4000 +#define STA_CLK 0x8000 + +#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ + STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK) + +#define TIME_OK 0 +#define TIME_INS 1 +#define TIME_DEL 2 +#define TIME_OOP 3 +#define TIME_WAIT 4 +#define TIME_ERROR 5 +#define TIME_BAD TIME_ERROR + +#define MAXTC 6 + +int adjtimex(struct timex *); +int clock_adjtime(clockid_t, struct timex *); + +#if _REDIR_TIME64 +__REDIR(adjtimex, __adjtimex_time64); +__REDIR(clock_adjtime, __clock_adjtime64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/ttydefaults.h b/vendor/modernc.org/libc/musl/include/sys/ttydefaults.h new file mode 100644 index 000000000..edb55bc4d --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/ttydefaults.h @@ -0,0 +1,34 @@ +#ifndef _SYS_TTYDEFAULTS_H +#define _SYS_TTYDEFAULTS_H + +#define TTYDEF_IFLAG (BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY) +#define TTYDEF_OFLAG (OPOST | ONLCR | XTABS) +#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL) +#define TTYDEF_CFLAG (CREAD | CS7 | PARENB | HUPCL) +#define TTYDEF_SPEED (B9600) +#define CTRL(x) ((x)&037) +#define CEOF CTRL('d') + +#define CEOL '\0' +#define CSTATUS '\0' + +#define CERASE 0177 +#define CINTR CTRL('c') +#define CKILL CTRL('u') +#define CMIN 1 +#define CQUIT 034 +#define CSUSP CTRL('z') +#define CTIME 0 +#define CDSUSP CTRL('y') +#define CSTART CTRL('q') +#define CSTOP CTRL('s') +#define CLNEXT CTRL('v') +#define CDISCARD CTRL('o') +#define CWERASE CTRL('w') +#define CREPRINT CTRL('r') +#define CEOT CEOF +#define CBRK CEOL +#define CRPRNT CREPRINT +#define CFLUSH CDISCARD + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/types.h b/vendor/modernc.org/libc/musl/include/sys/types.h new file mode 100644 index 000000000..0c35541da --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/types.h @@ -0,0 +1,85 @@ +#ifndef _SYS_TYPES_H +#define _SYS_TYPES_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_ino_t +#define __NEED_dev_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_mode_t +#define __NEED_nlink_t +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_time_t +#define __NEED_timer_t +#define __NEED_clockid_t + +#define __NEED_blkcnt_t +#define __NEED_fsblkcnt_t +#define __NEED_fsfilcnt_t + +#define __NEED_id_t +#define __NEED_key_t +#define __NEED_clock_t +#define __NEED_suseconds_t +#define __NEED_blksize_t + +#define __NEED_pthread_t +#define __NEED_pthread_attr_t +#define __NEED_pthread_mutexattr_t +#define __NEED_pthread_condattr_t +#define __NEED_pthread_rwlockattr_t +#define __NEED_pthread_barrierattr_t +#define __NEED_pthread_mutex_t +#define __NEED_pthread_cond_t +#define __NEED_pthread_rwlock_t +#define __NEED_pthread_barrier_t +#define __NEED_pthread_spinlock_t +#define __NEED_pthread_key_t +#define __NEED_pthread_once_t +#define __NEED_useconds_t + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_int8_t +#define __NEED_int16_t +#define __NEED_int32_t +#define __NEED_int64_t +#define __NEED_u_int64_t +#define __NEED_register_t +#endif + +#include + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned char u_int8_t; +typedef unsigned short u_int16_t; +typedef unsigned u_int32_t; +typedef char *caddr_t; +typedef unsigned char u_char; +typedef unsigned short u_short, ushort; +typedef unsigned u_int, uint; +typedef unsigned long u_long, ulong; +typedef long long quad_t; +typedef unsigned long long u_quad_t; +#include +#include +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define blkcnt64_t blkcnt_t +#define fsblkcnt64_t fsblkcnt_t +#define fsfilcnt64_t fsfilcnt_t +#define ino64_t ino_t +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/ucontext.h b/vendor/modernc.org/libc/musl/include/sys/ucontext.h new file mode 100644 index 000000000..5fdbd63db --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/ucontext.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/uio.h b/vendor/modernc.org/libc/musl/include/sys/uio.h new file mode 100644 index 000000000..00f73a2f0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/uio.h @@ -0,0 +1,48 @@ +#ifndef _SYS_UIO_H +#define _SYS_UIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_struct_iovec + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_off_t +#endif + +#ifdef _GNU_SOURCE +#define __NEED_pid_t +#endif + +#include + +#define UIO_MAXIOV 1024 + +ssize_t readv (int, const struct iovec *, int); +ssize_t writev (int, const struct iovec *, int); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +ssize_t preadv (int, const struct iovec *, int, off_t); +ssize_t pwritev (int, const struct iovec *, int, off_t); +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define preadv64 preadv +#define pwritev64 pwritev +#define off64_t off_t +#endif +#endif + +#ifdef _GNU_SOURCE +ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long); +ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/un.h b/vendor/modernc.org/libc/musl/include/sys/un.h new file mode 100644 index 000000000..1a3193ad2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/un.h @@ -0,0 +1,31 @@ +#ifndef _SYS_UN_H +#define _SYS_UN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_sa_family_t +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_size_t +#endif + +#include + +struct sockaddr_un { + sa_family_t sun_family; + char sun_path[108]; +}; + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +size_t strlen(const char *); +#define SUN_LEN(s) (2+strlen((s)->sun_path)) +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/user.h b/vendor/modernc.org/libc/musl/include/sys/user.h new file mode 100644 index 000000000..96a034009 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/user.h @@ -0,0 +1,16 @@ +#ifndef _SYS_USER_H +#define _SYS_USER_H +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#include + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/utsname.h b/vendor/modernc.org/libc/musl/include/sys/utsname.h new file mode 100644 index 000000000..2c80fb5a2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/utsname.h @@ -0,0 +1,29 @@ +#ifndef _SYS_UTSNAME_H +#define _SYS_UTSNAME_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +struct utsname { + char sysname[65]; + char nodename[65]; + char release[65]; + char version[65]; + char machine[65]; +#ifdef _GNU_SOURCE + char domainname[65]; +#else + char __domainname[65]; +#endif +}; + +int uname (struct utsname *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/vfs.h b/vendor/modernc.org/libc/musl/include/sys/vfs.h new file mode 100644 index 000000000..a899db276 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/vfs.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/vt.h b/vendor/modernc.org/libc/musl/include/sys/vt.h new file mode 100644 index 000000000..5000de499 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/vt.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sys/wait.h b/vendor/modernc.org/libc/musl/include/sys/wait.h new file mode 100644 index 000000000..d4b1f2e18 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/wait.h @@ -0,0 +1,67 @@ +#ifndef _SYS_WAIT_H +#define _SYS_WAIT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_pid_t +#define __NEED_id_t +#include + +typedef enum { + P_ALL = 0, + P_PID = 1, + P_PGID = 2, + P_PIDFD = 3 +} idtype_t; + +pid_t wait (int *); +pid_t waitpid (pid_t, int *, int ); + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#include +int waitid (idtype_t, id_t, siginfo_t *, int); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#include +pid_t wait3 (int *, int, struct rusage *); +pid_t wait4 (pid_t, int *, int, struct rusage *); +#endif + +#define WNOHANG 1 +#define WUNTRACED 2 + +#define WSTOPPED 2 +#define WEXITED 4 +#define WCONTINUED 8 +#define WNOWAIT 0x1000000 + +#define __WNOTHREAD 0x20000000 +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 + +#define WEXITSTATUS(s) (((s) & 0xff00) >> 8) +#define WTERMSIG(s) ((s) & 0x7f) +#define WSTOPSIG(s) WEXITSTATUS(s) +#define WCOREDUMP(s) ((s) & 0x80) +#define WIFEXITED(s) (!WTERMSIG(s)) +#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) +#define WIFCONTINUED(s) ((s) == 0xffff) + +#if _REDIR_TIME64 +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +__REDIR(wait3, __wait3_time64); +__REDIR(wait4, __wait4_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/sys/xattr.h b/vendor/modernc.org/libc/musl/include/sys/xattr.h new file mode 100644 index 000000000..eeeaafc44 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sys/xattr.h @@ -0,0 +1,32 @@ +#ifndef _SYS_XATTR_H +#define _SYS_XATTR_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_ssize_t +#define __NEED_size_t +#include + +#define XATTR_CREATE 1 +#define XATTR_REPLACE 2 + +ssize_t getxattr(const char *, const char *, void *, size_t); +ssize_t lgetxattr(const char *, const char *, void *, size_t); +ssize_t fgetxattr(int, const char *, void *, size_t); +ssize_t listxattr(const char *, char *, size_t); +ssize_t llistxattr(const char *, char *, size_t); +ssize_t flistxattr(int, char *, size_t); +int setxattr(const char *, const char *, const void *, size_t, int); +int lsetxattr(const char *, const char *, const void *, size_t, int); +int fsetxattr(int, const char *, const void *, size_t, int); +int removexattr(const char *, const char *); +int lremovexattr(const char *, const char *); +int fremovexattr(int, const char *); + +#define __UAPI_DEF_XATTR 0 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/syscall.h b/vendor/modernc.org/libc/musl/include/syscall.h new file mode 100644 index 000000000..4c3057844 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/syscall.h @@ -0,0 +1 @@ +#include diff --git a/vendor/modernc.org/libc/musl/include/sysexits.h b/vendor/modernc.org/libc/musl/include/sysexits.h new file mode 100644 index 000000000..16eeb4193 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/sysexits.h @@ -0,0 +1,21 @@ +#ifndef _SYSEXITS_H +#define _SYSEXITS_H +#define EX_OK 0 +#define EX__BASE 64 +#define EX_USAGE 64 +#define EX_DATAERR 65 +#define EX_NOINPUT 66 +#define EX_NOUSER 67 +#define EX_NOHOST 68 +#define EX_UNAVAILABLE 69 +#define EX_SOFTWARE 70 +#define EX_OSERR 71 +#define EX_OSFILE 72 +#define EX_CANTCREAT 73 +#define EX_IOERR 74 +#define EX_TEMPFAIL 75 +#define EX_PROTOCOL 76 +#define EX_NOPERM 77 +#define EX_CONFIG 78 +#define EX__MAX 78 +#endif diff --git a/vendor/modernc.org/libc/musl/include/syslog.h b/vendor/modernc.org/libc/musl/include/syslog.h new file mode 100644 index 000000000..5b4d2964e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/syslog.h @@ -0,0 +1,100 @@ +#ifndef _SYSLOG_H +#define _SYSLOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define LOG_EMERG 0 +#define LOG_ALERT 1 +#define LOG_CRIT 2 +#define LOG_ERR 3 +#define LOG_WARNING 4 +#define LOG_NOTICE 5 +#define LOG_INFO 6 +#define LOG_DEBUG 7 + +#define LOG_PRIMASK 7 +#define LOG_PRI(p) ((p)&LOG_PRIMASK) +#define LOG_MAKEPRI(f, p) (((f)<<3)|(p)) + +#define LOG_MASK(p) (1<<(p)) +#define LOG_UPTO(p) ((1<<((p)+1))-1) + +#define LOG_KERN (0<<3) +#define LOG_USER (1<<3) +#define LOG_MAIL (2<<3) +#define LOG_DAEMON (3<<3) +#define LOG_AUTH (4<<3) +#define LOG_SYSLOG (5<<3) +#define LOG_LPR (6<<3) +#define LOG_NEWS (7<<3) +#define LOG_UUCP (8<<3) +#define LOG_CRON (9<<3) +#define LOG_AUTHPRIV (10<<3) +#define LOG_FTP (11<<3) + +#define LOG_LOCAL0 (16<<3) +#define LOG_LOCAL1 (17<<3) +#define LOG_LOCAL2 (18<<3) +#define LOG_LOCAL3 (19<<3) +#define LOG_LOCAL4 (20<<3) +#define LOG_LOCAL5 (21<<3) +#define LOG_LOCAL6 (22<<3) +#define LOG_LOCAL7 (23<<3) + +#define LOG_NFACILITIES 24 +#define LOG_FACMASK 0x3f8 +#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3) + +#define LOG_PID 0x01 +#define LOG_CONS 0x02 +#define LOG_ODELAY 0x04 +#define LOG_NDELAY 0x08 +#define LOG_NOWAIT 0x10 +#define LOG_PERROR 0x20 + +void closelog (void); +void openlog (const char *, int, int); +int setlogmask (int); +void syslog (int, const char *, ...); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define _PATH_LOG "/dev/log" +#define __NEED_va_list +#include +void vsyslog (int, const char *, va_list); +#if defined(SYSLOG_NAMES) +#define INTERNAL_NOPRI 0x10 +#define INTERNAL_MARK (LOG_NFACILITIES<<3) +typedef struct { + char *c_name; + int c_val; +} CODE; +#define prioritynames ((CODE *)(const CODE []){ \ + { "alert", LOG_ALERT }, { "crit", LOG_CRIT }, { "debug", LOG_DEBUG }, \ + { "emerg", LOG_EMERG }, { "err", LOG_ERR }, { "error", LOG_ERR }, \ + { "info", LOG_INFO }, { "none", INTERNAL_NOPRI }, \ + { "notice", LOG_NOTICE }, { "panic", LOG_EMERG }, \ + { "warn", LOG_WARNING }, { "warning", LOG_WARNING }, { 0, -1 } }) +#define facilitynames ((CODE *)(const CODE []){ \ + { "auth", LOG_AUTH }, { "authpriv", LOG_AUTHPRIV }, \ + { "cron", LOG_CRON }, { "daemon", LOG_DAEMON }, { "ftp", LOG_FTP }, \ + { "kern", LOG_KERN }, { "lpr", LOG_LPR }, { "mail", LOG_MAIL }, \ + { "mark", INTERNAL_MARK }, { "news", LOG_NEWS }, \ + { "security", LOG_AUTH }, { "syslog", LOG_SYSLOG }, \ + { "user", LOG_USER }, { "uucp", LOG_UUCP }, \ + { "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, \ + { "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, \ + { "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, \ + { "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, { 0, -1 } }) +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/tar.h b/vendor/modernc.org/libc/musl/include/tar.h new file mode 100644 index 000000000..be589842a --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/tar.h @@ -0,0 +1,33 @@ +#ifndef _TAR_H +#define _TAR_H + +#define TSUID 04000 +#define TSGID 02000 +#define TSVTX 01000 +#define TUREAD 00400 +#define TUWRITE 00200 +#define TUEXEC 00100 +#define TGREAD 00040 +#define TGWRITE 00020 +#define TGEXEC 00010 +#define TOREAD 00004 +#define TOWRITE 00002 +#define TOEXEC 00001 + +#define REGTYPE '0' +#define AREGTYPE '\0' +#define LNKTYPE '1' +#define SYMTYPE '2' +#define CHRTYPE '3' +#define BLKTYPE '4' +#define DIRTYPE '5' +#define FIFOTYPE '6' +#define CONTTYPE '7' + +#define TMAGIC "ustar" +#define TMAGLEN 6 + +#define TVERSION "00" +#define TVERSLEN 2 + +#endif diff --git a/vendor/modernc.org/libc/musl/include/termios.h b/vendor/modernc.org/libc/musl/include/termios.h new file mode 100644 index 000000000..d73c780d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/termios.h @@ -0,0 +1,46 @@ +#ifndef _TERMIOS_H +#define _TERMIOS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_pid_t + +#include + +typedef unsigned char cc_t; +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; + +#define NCCS 32 + +#include + +speed_t cfgetospeed (const struct termios *); +speed_t cfgetispeed (const struct termios *); +int cfsetospeed (struct termios *, speed_t); +int cfsetispeed (struct termios *, speed_t); + +int tcgetattr (int, struct termios *); +int tcsetattr (int, int, const struct termios *); + +int tcsendbreak (int, int); +int tcdrain (int); +int tcflush (int, int); +int tcflow (int, int); + +pid_t tcgetsid (int); + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +void cfmakeraw(struct termios *); +int cfsetspeed(struct termios *, speed_t); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/tgmath.h b/vendor/modernc.org/libc/musl/include/tgmath.h new file mode 100644 index 000000000..e41ccac9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/tgmath.h @@ -0,0 +1,270 @@ +#ifndef _TGMATH_H +#define _TGMATH_H + +/* +the return types are only correct with gcc (__GNUC__) +otherwise they are long double or long double complex + +the long double version of a function is never chosen when +sizeof(double) == sizeof(long double) +(but the return type is set correctly with gcc) +*/ + +#include +#include + +#define __IS_FP(x) (sizeof((x)+1ULL) == sizeof((x)+1.0f)) +#define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x)+I)) +#define __IS_REAL(x) (__IS_FP(x) && 2*sizeof(x) == sizeof((x)+I)) + +#define __FLT(x) (__IS_REAL(x) && sizeof(x) == sizeof(float)) +#define __LDBL(x) (__IS_REAL(x) && sizeof(x) == sizeof(long double) && sizeof(long double) != sizeof(double)) + +#define __FLTCX(x) (__IS_CX(x) && sizeof(x) == sizeof(float complex)) +#define __DBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(double complex)) +#define __LDBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && sizeof(long double) != sizeof(double)) + +/* return type */ + +#ifdef __GNUC__ +/* +the result must be casted to the right type +(otherwise the result type is determined by the conversion +rules applied to all the function return types so it is long +double or long double complex except for integral functions) + +this cannot be done in c99, so the typeof gcc extension is +used and that the type of ?: depends on wether an operand is +a null pointer constant or not +(in c11 _Generic can be used) + +the c arguments below must be integer constant expressions +so they can be in null pointer constants +(__IS_FP above was carefully chosen this way) +*/ +/* if c then t else void */ +#define __type1(c,t) __typeof__(*(0?(t*)0:(void*)!(c))) +/* if c then t1 else t2 */ +#define __type2(c,t1,t2) __typeof__(*(0?(__type1(c,t1)*)0:(__type1(!(c),t2)*)0)) +/* cast to double when x is integral, otherwise use typeof(x) */ +#define __RETCAST(x) ( \ + __type2(__IS_FP(x), __typeof__(x), double)) +/* 2 args case, should work for complex types (cpow) */ +#define __RETCAST_2(x, y) ( \ + __type2(__IS_FP(x) && __IS_FP(y), \ + __typeof__((x)+(y)), \ + __typeof__((x)+(y)+1.0))) +/* 3 args case (fma only) */ +#define __RETCAST_3(x, y, z) ( \ + __type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \ + __typeof__((x)+(y)+(z)), \ + __typeof__((x)+(y)+(z)+1.0))) +/* drop complex from the type of x */ +/* TODO: wrong when sizeof(long double)==sizeof(double) */ +#define __RETCAST_REAL(x) ( \ + __type2(__IS_FP(x) && sizeof((x)+I) == sizeof(float complex), float, \ + __type2(sizeof((x)+1.0+I) == sizeof(double complex), double, \ + long double))) +/* add complex to the type of x */ +#define __RETCAST_CX(x) (__typeof__(__RETCAST(x)0+I)) +#else +#define __RETCAST(x) +#define __RETCAST_2(x, y) +#define __RETCAST_3(x, y, z) +#define __RETCAST_REAL(x) +#define __RETCAST_CX(x) +#endif + +/* function selection */ + +#define __tg_real_nocast(fun, x) ( \ + __FLT(x) ? fun ## f (x) : \ + __LDBL(x) ? fun ## l (x) : \ + fun(x) ) + +#define __tg_real(fun, x) (__RETCAST(x)__tg_real_nocast(fun, x)) + +#define __tg_real_2_1(fun, x, y) (__RETCAST(x)( \ + __FLT(x) ? fun ## f (x, y) : \ + __LDBL(x) ? fun ## l (x, y) : \ + fun(x, y) )) + +#define __tg_real_2(fun, x, y) (__RETCAST_2(x, y)( \ + __FLT(x) && __FLT(y) ? fun ## f (x, y) : \ + __LDBL((x)+(y)) ? fun ## l (x, y) : \ + fun(x, y) )) + +#define __tg_complex(fun, x) (__RETCAST_CX(x)( \ + __FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \ + __LDBLCX((x)+I) ? fun ## l (x) : \ + fun(x) )) + +#define __tg_complex_retreal(fun, x) (__RETCAST_REAL(x)( \ + __FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \ + __LDBLCX((x)+I) ? fun ## l (x) : \ + fun(x) )) + +#define __tg_real_complex(fun, x) (__RETCAST(x)( \ + __FLTCX(x) ? c ## fun ## f (x) : \ + __DBLCX(x) ? c ## fun (x) : \ + __LDBLCX(x) ? c ## fun ## l (x) : \ + __FLT(x) ? fun ## f (x) : \ + __LDBL(x) ? fun ## l (x) : \ + fun(x) )) + +/* special cases */ + +#define __tg_real_remquo(x, y, z) (__RETCAST_2(x, y)( \ + __FLT(x) && __FLT(y) ? remquof(x, y, z) : \ + __LDBL((x)+(y)) ? remquol(x, y, z) : \ + remquo(x, y, z) )) + +#define __tg_real_fma(x, y, z) (__RETCAST_3(x, y, z)( \ + __FLT(x) && __FLT(y) && __FLT(z) ? fmaf(x, y, z) : \ + __LDBL((x)+(y)+(z)) ? fmal(x, y, z) : \ + fma(x, y, z) )) + +#define __tg_real_complex_pow(x, y) (__RETCAST_2(x, y)( \ + __FLTCX((x)+(y)) && __IS_FP(x) && __IS_FP(y) ? cpowf(x, y) : \ + __FLTCX((x)+(y)) ? cpow(x, y) : \ + __DBLCX((x)+(y)) ? cpow(x, y) : \ + __LDBLCX((x)+(y)) ? cpowl(x, y) : \ + __FLT(x) && __FLT(y) ? powf(x, y) : \ + __LDBL((x)+(y)) ? powl(x, y) : \ + pow(x, y) )) + +#define __tg_real_complex_fabs(x) (__RETCAST_REAL(x)( \ + __FLTCX(x) ? cabsf(x) : \ + __DBLCX(x) ? cabs(x) : \ + __LDBLCX(x) ? cabsl(x) : \ + __FLT(x) ? fabsf(x) : \ + __LDBL(x) ? fabsl(x) : \ + fabs(x) )) + +/* suppress any macros in math.h or complex.h */ + +#undef acos +#undef acosh +#undef asin +#undef asinh +#undef atan +#undef atan2 +#undef atanh +#undef carg +#undef cbrt +#undef ceil +#undef cimag +#undef conj +#undef copysign +#undef cos +#undef cosh +#undef cproj +#undef creal +#undef erf +#undef erfc +#undef exp +#undef exp2 +#undef expm1 +#undef fabs +#undef fdim +#undef floor +#undef fma +#undef fmax +#undef fmin +#undef fmod +#undef frexp +#undef hypot +#undef ilogb +#undef ldexp +#undef lgamma +#undef llrint +#undef llround +#undef log +#undef log10 +#undef log1p +#undef log2 +#undef logb +#undef lrint +#undef lround +#undef nearbyint +#undef nextafter +#undef nexttoward +#undef pow +#undef remainder +#undef remquo +#undef rint +#undef round +#undef scalbln +#undef scalbn +#undef sin +#undef sinh +#undef sqrt +#undef tan +#undef tanh +#undef tgamma +#undef trunc + +/* tg functions */ + +#define acos(x) __tg_real_complex(acos, (x)) +#define acosh(x) __tg_real_complex(acosh, (x)) +#define asin(x) __tg_real_complex(asin, (x)) +#define asinh(x) __tg_real_complex(asinh, (x)) +#define atan(x) __tg_real_complex(atan, (x)) +#define atan2(x,y) __tg_real_2(atan2, (x), (y)) +#define atanh(x) __tg_real_complex(atanh, (x)) +#define carg(x) __tg_complex_retreal(carg, (x)) +#define cbrt(x) __tg_real(cbrt, (x)) +#define ceil(x) __tg_real(ceil, (x)) +#define cimag(x) __tg_complex_retreal(cimag, (x)) +#define conj(x) __tg_complex(conj, (x)) +#define copysign(x,y) __tg_real_2(copysign, (x), (y)) +#define cos(x) __tg_real_complex(cos, (x)) +#define cosh(x) __tg_real_complex(cosh, (x)) +#define cproj(x) __tg_complex(cproj, (x)) +#define creal(x) __tg_complex_retreal(creal, (x)) +#define erf(x) __tg_real(erf, (x)) +#define erfc(x) __tg_real(erfc, (x)) +#define exp(x) __tg_real_complex(exp, (x)) +#define exp2(x) __tg_real(exp2, (x)) +#define expm1(x) __tg_real(expm1, (x)) +#define fabs(x) __tg_real_complex_fabs(x) +#define fdim(x,y) __tg_real_2(fdim, (x), (y)) +#define floor(x) __tg_real(floor, (x)) +#define fma(x,y,z) __tg_real_fma((x), (y), (z)) +#define fmax(x,y) __tg_real_2(fmax, (x), (y)) +#define fmin(x,y) __tg_real_2(fmin, (x), (y)) +#define fmod(x,y) __tg_real_2(fmod, (x), (y)) +#define frexp(x,y) __tg_real_2_1(frexp, (x), (y)) +#define hypot(x,y) __tg_real_2(hypot, (x), (y)) +#define ilogb(x) __tg_real_nocast(ilogb, (x)) +#define ldexp(x,y) __tg_real_2_1(ldexp, (x), (y)) +#define lgamma(x) __tg_real(lgamma, (x)) +#define llrint(x) __tg_real_nocast(llrint, (x)) +#define llround(x) __tg_real_nocast(llround, (x)) +#define log(x) __tg_real_complex(log, (x)) +#define log10(x) __tg_real(log10, (x)) +#define log1p(x) __tg_real(log1p, (x)) +#define log2(x) __tg_real(log2, (x)) +#define logb(x) __tg_real(logb, (x)) +#define lrint(x) __tg_real_nocast(lrint, (x)) +#define lround(x) __tg_real_nocast(lround, (x)) +#define nearbyint(x) __tg_real(nearbyint, (x)) +#define nextafter(x,y) __tg_real_2(nextafter, (x), (y)) +#define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y)) +#define pow(x,y) __tg_real_complex_pow((x), (y)) +#define remainder(x,y) __tg_real_2(remainder, (x), (y)) +#define remquo(x,y,z) __tg_real_remquo((x), (y), (z)) +#define rint(x) __tg_real(rint, (x)) +#define round(x) __tg_real(round, (x)) +#define scalbln(x,y) __tg_real_2_1(scalbln, (x), (y)) +#define scalbn(x,y) __tg_real_2_1(scalbn, (x), (y)) +#define sin(x) __tg_real_complex(sin, (x)) +#define sinh(x) __tg_real_complex(sinh, (x)) +#define sqrt(x) __tg_real_complex(sqrt, (x)) +#define tan(x) __tg_real_complex(tan, (x)) +#define tanh(x) __tg_real_complex(tanh, (x)) +#define tgamma(x) __tg_real(tgamma, (x)) +#define trunc(x) __tg_real(trunc, (x)) + +#endif diff --git a/vendor/modernc.org/libc/musl/include/threads.h b/vendor/modernc.org/libc/musl/include/threads.h new file mode 100644 index 000000000..52ec3100e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/threads.h @@ -0,0 +1,93 @@ +#ifndef _THREADS_H +#define _THREADS_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +typedef unsigned long thrd_t; +#else +typedef struct __pthread *thrd_t; +#define thread_local _Thread_local +#endif + +typedef int once_flag; +typedef unsigned tss_t; +typedef int (*thrd_start_t)(void *); +typedef void (*tss_dtor_t)(void *); + +#define __NEED_cnd_t +#define __NEED_mtx_t + +#include + +#define TSS_DTOR_ITERATIONS 4 + +enum { + thrd_success = 0, + thrd_busy = 1, + thrd_error = 2, + thrd_nomem = 3, + thrd_timedout = 4, +}; + +enum { + mtx_plain = 0, + mtx_recursive = 1, + mtx_timed = 2, +}; + +#define ONCE_FLAG_INIT 0 + +int thrd_create(thrd_t *, thrd_start_t, void *); +_Noreturn void thrd_exit(int); + +int thrd_detach(thrd_t); +int thrd_join(thrd_t, int *); + +int thrd_sleep(const struct timespec *, struct timespec *); +void thrd_yield(void); + +thrd_t thrd_current(void); +int thrd_equal(thrd_t, thrd_t); +#ifndef __cplusplus +#define thrd_equal(A, B) ((A) == (B)) +#endif + +void call_once(once_flag *, void (*)(void)); + +int mtx_init(mtx_t *, int); +void mtx_destroy(mtx_t *); + +int mtx_lock(mtx_t *); +int mtx_timedlock(mtx_t *__restrict, const struct timespec *__restrict); +int mtx_trylock(mtx_t *); +int mtx_unlock(mtx_t *); + +int cnd_init(cnd_t *); +void cnd_destroy(cnd_t *); + +int cnd_broadcast(cnd_t *); +int cnd_signal(cnd_t *); + +int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict, const struct timespec *__restrict); +int cnd_wait(cnd_t *, mtx_t *); + +int tss_create(tss_t *, tss_dtor_t); +void tss_delete(tss_t); + +int tss_set(tss_t, void *); +void *tss_get(tss_t); + +#if _REDIR_TIME64 +__REDIR(thrd_sleep, __thrd_sleep_time64); +__REDIR(mtx_timedlock, __mtx_timedlock_time64); +__REDIR(cnd_timedwait, __cnd_timedwait_time64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/time.h b/vendor/modernc.org/libc/musl/include/time.h new file mode 100644 index 000000000..5494df183 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/time.h @@ -0,0 +1,166 @@ +#ifndef _TIME_H +#define _TIME_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + + +#define __NEED_size_t +#define __NEED_time_t +#define __NEED_clock_t +#define __NEED_struct_timespec + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define __NEED_clockid_t +#define __NEED_timer_t +#define __NEED_pid_t +#define __NEED_locale_t +#endif + +#include + +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +#define __tm_gmtoff tm_gmtoff +#define __tm_zone tm_zone +#endif + +struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + long __tm_gmtoff; + const char *__tm_zone; +}; + +clock_t clock (void); +time_t time (time_t *); +double difftime (time_t, time_t); +time_t mktime (struct tm *); +size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict); +struct tm *gmtime (const time_t *); +struct tm *localtime (const time_t *); +char *asctime (const struct tm *); +char *ctime (const time_t *); +int timespec_get(struct timespec *, int); + +#define CLOCKS_PER_SEC 1000000L + +#define TIME_UTC 1 + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) + +size_t strftime_l (char * __restrict, size_t, const char * __restrict, const struct tm * __restrict, locale_t); + +struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict); +struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict); +char *asctime_r (const struct tm *__restrict, char *__restrict); +char *ctime_r (const time_t *, char *); + +void tzset (void); + +struct itimerspec { + struct timespec it_interval; + struct timespec it_value; +}; + +#define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 1 +#define CLOCK_PROCESS_CPUTIME_ID 2 +#define CLOCK_THREAD_CPUTIME_ID 3 +#define CLOCK_MONOTONIC_RAW 4 +#define CLOCK_REALTIME_COARSE 5 +#define CLOCK_MONOTONIC_COARSE 6 +#define CLOCK_BOOTTIME 7 +#define CLOCK_REALTIME_ALARM 8 +#define CLOCK_BOOTTIME_ALARM 9 +#define CLOCK_SGI_CYCLE 10 +#define CLOCK_TAI 11 + +#define TIMER_ABSTIME 1 + +int nanosleep (const struct timespec *, struct timespec *); +int clock_getres (clockid_t, struct timespec *); +int clock_gettime (clockid_t, struct timespec *); +int clock_settime (clockid_t, const struct timespec *); +int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *); +int clock_getcpuclockid (pid_t, clockid_t *); + +struct sigevent; +int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict); +int timer_delete (timer_t); +int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict); +int timer_gettime (timer_t, struct itimerspec *); +int timer_getoverrun (timer_t); + +extern char *tzname[2]; + +#endif + + +#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict); +extern int daylight; +extern long timezone; +extern int getdate_err; +struct tm *getdate (const char *); +#endif + + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int stime(const time_t *); +time_t timegm(struct tm *); +#endif + +#if _REDIR_TIME64 +__REDIR(time, __time64); +__REDIR(difftime, __difftime64); +__REDIR(mktime, __mktime64); +__REDIR(gmtime, __gmtime64); +__REDIR(localtime, __localtime64); +__REDIR(ctime, __ctime64); +__REDIR(timespec_get, __timespec_get_time64); +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +__REDIR(gmtime_r, __gmtime64_r); +__REDIR(localtime_r, __localtime64_r); +__REDIR(ctime_r, __ctime64_r); +__REDIR(nanosleep, __nanosleep_time64); +__REDIR(clock_getres, __clock_getres_time64); +__REDIR(clock_gettime, __clock_gettime64); +__REDIR(clock_settime, __clock_settime64); +__REDIR(clock_nanosleep, __clock_nanosleep_time64); +__REDIR(timer_settime, __timer_settime64); +__REDIR(timer_gettime, __timer_gettime64); +#endif +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +__REDIR(stime, __stime64); +__REDIR(timegm, __timegm_time64); +#endif +#endif + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/vendor/modernc.org/libc/musl/include/uchar.h b/vendor/modernc.org/libc/musl/include/uchar.h new file mode 100644 index 000000000..7e5c4d406 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/uchar.h @@ -0,0 +1,29 @@ +#ifndef _UCHAR_H +#define _UCHAR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if __cplusplus < 201103L +typedef unsigned short char16_t; +typedef unsigned char32_t; +#endif + +#define __NEED_mbstate_t +#define __NEED_size_t + +#include +#include + +size_t c16rtomb(char *__restrict, char16_t, mbstate_t *__restrict); +size_t mbrtoc16(char16_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); + +size_t c32rtomb(char *__restrict, char32_t, mbstate_t *__restrict); +size_t mbrtoc32(char32_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/ucontext.h b/vendor/modernc.org/libc/musl/include/ucontext.h new file mode 100644 index 000000000..0f7571254 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ucontext.h @@ -0,0 +1,25 @@ +#ifndef _UCONTEXT_H +#define _UCONTEXT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define NGREG (sizeof(gregset_t)/sizeof(greg_t)) +#endif + +struct __ucontext; + +int getcontext(struct __ucontext *); +void makecontext(struct __ucontext *, void (*)(), int, ...); +int setcontext(const struct __ucontext *); +int swapcontext(struct __ucontext *, const struct __ucontext *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/modernc.org/libc/musl/include/ulimit.h b/vendor/modernc.org/libc/musl/include/ulimit.h new file mode 100644 index 000000000..efdcd311e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/ulimit.h @@ -0,0 +1,17 @@ +#ifndef _ULIMIT_H +#define _ULIMIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define UL_GETFSIZE 1 +#define UL_SETFSIZE 2 + +long ulimit (int, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/unistd.h b/vendor/modernc.org/libc/musl/include/unistd.h new file mode 100644 index 000000000..7bcbff943 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/unistd.h @@ -0,0 +1,469 @@ +#ifndef _UNISTD_H +#define _UNISTD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#define __NEED_size_t +#define __NEED_ssize_t +#define __NEED_uid_t +#define __NEED_gid_t +#define __NEED_off_t +#define __NEED_pid_t +#define __NEED_intptr_t +#define __NEED_useconds_t + +#include + +int pipe(int [2]); +int pipe2(int [2], int); +int close(int); +int posix_close(int, int); +int dup(int); +int dup2(int, int); +int dup3(int, int, int); +off_t lseek(int, off_t, int); +int fsync(int); +int fdatasync(int); + +ssize_t read(int, void *, size_t); +ssize_t write(int, const void *, size_t); +ssize_t pread(int, void *, size_t, off_t); +ssize_t pwrite(int, const void *, size_t, off_t); + +int chown(const char *, uid_t, gid_t); +int fchown(int, uid_t, gid_t); +int lchown(const char *, uid_t, gid_t); +int fchownat(int, const char *, uid_t, gid_t, int); + +int link(const char *, const char *); +int linkat(int, const char *, int, const char *, int); +int symlink(const char *, const char *); +int symlinkat(const char *, int, const char *); +ssize_t readlink(const char *__restrict, char *__restrict, size_t); +ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t); +int unlink(const char *); +int unlinkat(int, const char *, int); +int rmdir(const char *); +int truncate(const char *, off_t); +int ftruncate(int, off_t); + +#define F_OK 0 +#define R_OK 4 +#define W_OK 2 +#define X_OK 1 + +int access(const char *, int); +int faccessat(int, const char *, int, int); + +int chdir(const char *); +int fchdir(int); +char *getcwd(char *, size_t); + +unsigned alarm(unsigned); +unsigned sleep(unsigned); +int pause(void); + +pid_t fork(void); +int execve(const char *, char *const [], char *const []); +int execv(const char *, char *const []); +int execle(const char *, const char *, ...); +int execl(const char *, const char *, ...); +int execvp(const char *, char *const []); +int execlp(const char *, const char *, ...); +int fexecve(int, char *const [], char *const []); +_Noreturn void _exit(int); + +pid_t getpid(void); +pid_t getppid(void); +pid_t getpgrp(void); +pid_t getpgid(pid_t); +int setpgid(pid_t, pid_t); +pid_t setsid(void); +pid_t getsid(pid_t); +char *ttyname(int); +int ttyname_r(int, char *, size_t); +int isatty(int); +pid_t tcgetpgrp(int); +int tcsetpgrp(int, pid_t); + +uid_t getuid(void); +uid_t geteuid(void); +gid_t getgid(void); +gid_t getegid(void); +int getgroups(int, gid_t []); +int setuid(uid_t); +int seteuid(uid_t); +int setgid(gid_t); +int setegid(gid_t); + +char *getlogin(void); +int getlogin_r(char *, size_t); +int gethostname(char *, size_t); +char *ctermid(char *); + +int getopt(int, char * const [], const char *); +extern char *optarg; +extern int optind, opterr, optopt; + +long pathconf(const char *, int); +long fpathconf(int, int); +long sysconf(int); +size_t confstr(int, char *, size_t); + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define F_ULOCK 0 +#define F_LOCK 1 +#define F_TLOCK 2 +#define F_TEST 3 +int setreuid(uid_t, uid_t); +int setregid(gid_t, gid_t); +int lockf(int, int, off_t); +long gethostid(void); +int nice(int); +void sync(void); +pid_t setpgrp(void); +char *crypt(const char *, const char *); +void encrypt(char *, int); +void swab(const void *__restrict, void *__restrict, ssize_t); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) +int usleep(unsigned); +unsigned ualarm(unsigned, unsigned); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define L_SET 0 +#define L_INCR 1 +#define L_XTND 2 +int brk(void *); +void *sbrk(intptr_t); +pid_t vfork(void); +int vhangup(void); +int chroot(const char *); +int getpagesize(void); +int getdtablesize(void); +int sethostname(const char *, size_t); +int getdomainname(char *, size_t); +int setdomainname(const char *, size_t); +int setgroups(size_t, const gid_t *); +char *getpass(const char *); +int daemon(int, int); +void setusershell(void); +void endusershell(void); +char *getusershell(void); +int acct(const char *); +long syscall(long, ...); +int execvpe(const char *, char *const [], char *const []); +int issetugid(void); +int getentropy(void *, size_t); +extern int optreset; +#endif + +#ifdef _GNU_SOURCE +extern char **environ; +int setresuid(uid_t, uid_t, uid_t); +int setresgid(gid_t, gid_t, gid_t); +int getresuid(uid_t *, uid_t *, uid_t *); +int getresgid(gid_t *, gid_t *, gid_t *); +char *get_current_dir_name(void); +int syncfs(int); +int euidaccess(const char *, int); +int eaccess(const char *, int); +ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned); +#endif + +#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#define lseek64 lseek +#define pread64 pread +#define pwrite64 pwrite +#define truncate64 truncate +#define ftruncate64 ftruncate +#define lockf64 lockf +#define off64_t off_t +#endif + +#define POSIX_CLOSE_RESTART 0 + +#define _XOPEN_VERSION 700 +#define _XOPEN_UNIX 1 +#define _XOPEN_ENH_I18N 1 + +#define _POSIX_VERSION 200809L +#define _POSIX2_VERSION _POSIX_VERSION + +#define _POSIX_ADVISORY_INFO _POSIX_VERSION +#define _POSIX_CHOWN_RESTRICTED 1 +#define _POSIX_IPV6 _POSIX_VERSION +#define _POSIX_JOB_CONTROL 1 +#define _POSIX_MAPPED_FILES _POSIX_VERSION +#define _POSIX_MEMLOCK _POSIX_VERSION +#define _POSIX_MEMLOCK_RANGE _POSIX_VERSION +#define _POSIX_MEMORY_PROTECTION _POSIX_VERSION +#define _POSIX_MESSAGE_PASSING _POSIX_VERSION +#define _POSIX_FSYNC _POSIX_VERSION +#define _POSIX_NO_TRUNC 1 +#define _POSIX_RAW_SOCKETS _POSIX_VERSION +#define _POSIX_REALTIME_SIGNALS _POSIX_VERSION +#define _POSIX_REGEXP 1 +#define _POSIX_SAVED_IDS 1 +#define _POSIX_SHELL 1 +#define _POSIX_SPAWN _POSIX_VERSION +#define _POSIX_VDISABLE 0 + +#define _POSIX_THREADS _POSIX_VERSION +#define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION +#define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION +#define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION +#define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION +#define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION +#define _POSIX_THREAD_CPUTIME _POSIX_VERSION +#define _POSIX_TIMERS _POSIX_VERSION +#define _POSIX_TIMEOUTS _POSIX_VERSION +#define _POSIX_MONOTONIC_CLOCK _POSIX_VERSION +#define _POSIX_CPUTIME _POSIX_VERSION +#define _POSIX_CLOCK_SELECTION _POSIX_VERSION +#define _POSIX_BARRIERS _POSIX_VERSION +#define _POSIX_SPIN_LOCKS _POSIX_VERSION +#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION +#define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION +#define _POSIX_SEMAPHORES _POSIX_VERSION +#define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION + +#define _POSIX2_C_BIND _POSIX_VERSION + +#include + + + +#define _PC_LINK_MAX 0 +#define _PC_MAX_CANON 1 +#define _PC_MAX_INPUT 2 +#define _PC_NAME_MAX 3 +#define _PC_PATH_MAX 4 +#define _PC_PIPE_BUF 5 +#define _PC_CHOWN_RESTRICTED 6 +#define _PC_NO_TRUNC 7 +#define _PC_VDISABLE 8 +#define _PC_SYNC_IO 9 +#define _PC_ASYNC_IO 10 +#define _PC_PRIO_IO 11 +#define _PC_SOCK_MAXBUF 12 +#define _PC_FILESIZEBITS 13 +#define _PC_REC_INCR_XFER_SIZE 14 +#define _PC_REC_MAX_XFER_SIZE 15 +#define _PC_REC_MIN_XFER_SIZE 16 +#define _PC_REC_XFER_ALIGN 17 +#define _PC_ALLOC_SIZE_MIN 18 +#define _PC_SYMLINK_MAX 19 +#define _PC_2_SYMLINKS 20 + +#define _SC_ARG_MAX 0 +#define _SC_CHILD_MAX 1 +#define _SC_CLK_TCK 2 +#define _SC_NGROUPS_MAX 3 +#define _SC_OPEN_MAX 4 +#define _SC_STREAM_MAX 5 +#define _SC_TZNAME_MAX 6 +#define _SC_JOB_CONTROL 7 +#define _SC_SAVED_IDS 8 +#define _SC_REALTIME_SIGNALS 9 +#define _SC_PRIORITY_SCHEDULING 10 +#define _SC_TIMERS 11 +#define _SC_ASYNCHRONOUS_IO 12 +#define _SC_PRIORITIZED_IO 13 +#define _SC_SYNCHRONIZED_IO 14 +#define _SC_FSYNC 15 +#define _SC_MAPPED_FILES 16 +#define _SC_MEMLOCK 17 +#define _SC_MEMLOCK_RANGE 18 +#define _SC_MEMORY_PROTECTION 19 +#define _SC_MESSAGE_PASSING 20 +#define _SC_SEMAPHORES 21 +#define _SC_SHARED_MEMORY_OBJECTS 22 +#define _SC_AIO_LISTIO_MAX 23 +#define _SC_AIO_MAX 24 +#define _SC_AIO_PRIO_DELTA_MAX 25 +#define _SC_DELAYTIMER_MAX 26 +#define _SC_MQ_OPEN_MAX 27 +#define _SC_MQ_PRIO_MAX 28 +#define _SC_VERSION 29 +#define _SC_PAGE_SIZE 30 +#define _SC_PAGESIZE 30 /* !! */ +#define _SC_RTSIG_MAX 31 +#define _SC_SEM_NSEMS_MAX 32 +#define _SC_SEM_VALUE_MAX 33 +#define _SC_SIGQUEUE_MAX 34 +#define _SC_TIMER_MAX 35 +#define _SC_BC_BASE_MAX 36 +#define _SC_BC_DIM_MAX 37 +#define _SC_BC_SCALE_MAX 38 +#define _SC_BC_STRING_MAX 39 +#define _SC_COLL_WEIGHTS_MAX 40 +#define _SC_EXPR_NEST_MAX 42 +#define _SC_LINE_MAX 43 +#define _SC_RE_DUP_MAX 44 +#define _SC_2_VERSION 46 +#define _SC_2_C_BIND 47 +#define _SC_2_C_DEV 48 +#define _SC_2_FORT_DEV 49 +#define _SC_2_FORT_RUN 50 +#define _SC_2_SW_DEV 51 +#define _SC_2_LOCALEDEF 52 +#define _SC_UIO_MAXIOV 60 /* !! */ +#define _SC_IOV_MAX 60 +#define _SC_THREADS 67 +#define _SC_THREAD_SAFE_FUNCTIONS 68 +#define _SC_GETGR_R_SIZE_MAX 69 +#define _SC_GETPW_R_SIZE_MAX 70 +#define _SC_LOGIN_NAME_MAX 71 +#define _SC_TTY_NAME_MAX 72 +#define _SC_THREAD_DESTRUCTOR_ITERATIONS 73 +#define _SC_THREAD_KEYS_MAX 74 +#define _SC_THREAD_STACK_MIN 75 +#define _SC_THREAD_THREADS_MAX 76 +#define _SC_THREAD_ATTR_STACKADDR 77 +#define _SC_THREAD_ATTR_STACKSIZE 78 +#define _SC_THREAD_PRIORITY_SCHEDULING 79 +#define _SC_THREAD_PRIO_INHERIT 80 +#define _SC_THREAD_PRIO_PROTECT 81 +#define _SC_THREAD_PROCESS_SHARED 82 +#define _SC_NPROCESSORS_CONF 83 +#define _SC_NPROCESSORS_ONLN 84 +#define _SC_PHYS_PAGES 85 +#define _SC_AVPHYS_PAGES 86 +#define _SC_ATEXIT_MAX 87 +#define _SC_PASS_MAX 88 +#define _SC_XOPEN_VERSION 89 +#define _SC_XOPEN_XCU_VERSION 90 +#define _SC_XOPEN_UNIX 91 +#define _SC_XOPEN_CRYPT 92 +#define _SC_XOPEN_ENH_I18N 93 +#define _SC_XOPEN_SHM 94 +#define _SC_2_CHAR_TERM 95 +#define _SC_2_UPE 97 +#define _SC_XOPEN_XPG2 98 +#define _SC_XOPEN_XPG3 99 +#define _SC_XOPEN_XPG4 100 +#define _SC_NZERO 109 +#define _SC_XBS5_ILP32_OFF32 125 +#define _SC_XBS5_ILP32_OFFBIG 126 +#define _SC_XBS5_LP64_OFF64 127 +#define _SC_XBS5_LPBIG_OFFBIG 128 +#define _SC_XOPEN_LEGACY 129 +#define _SC_XOPEN_REALTIME 130 +#define _SC_XOPEN_REALTIME_THREADS 131 +#define _SC_ADVISORY_INFO 132 +#define _SC_BARRIERS 133 +#define _SC_CLOCK_SELECTION 137 +#define _SC_CPUTIME 138 +#define _SC_THREAD_CPUTIME 139 +#define _SC_MONOTONIC_CLOCK 149 +#define _SC_READER_WRITER_LOCKS 153 +#define _SC_SPIN_LOCKS 154 +#define _SC_REGEXP 155 +#define _SC_SHELL 157 +#define _SC_SPAWN 159 +#define _SC_SPORADIC_SERVER 160 +#define _SC_THREAD_SPORADIC_SERVER 161 +#define _SC_TIMEOUTS 164 +#define _SC_TYPED_MEMORY_OBJECTS 165 +#define _SC_2_PBS 168 +#define _SC_2_PBS_ACCOUNTING 169 +#define _SC_2_PBS_LOCATE 170 +#define _SC_2_PBS_MESSAGE 171 +#define _SC_2_PBS_TRACK 172 +#define _SC_SYMLOOP_MAX 173 +#define _SC_STREAMS 174 +#define _SC_2_PBS_CHECKPOINT 175 +#define _SC_V6_ILP32_OFF32 176 +#define _SC_V6_ILP32_OFFBIG 177 +#define _SC_V6_LP64_OFF64 178 +#define _SC_V6_LPBIG_OFFBIG 179 +#define _SC_HOST_NAME_MAX 180 +#define _SC_TRACE 181 +#define _SC_TRACE_EVENT_FILTER 182 +#define _SC_TRACE_INHERIT 183 +#define _SC_TRACE_LOG 184 + +#define _SC_IPV6 235 +#define _SC_RAW_SOCKETS 236 +#define _SC_V7_ILP32_OFF32 237 +#define _SC_V7_ILP32_OFFBIG 238 +#define _SC_V7_LP64_OFF64 239 +#define _SC_V7_LPBIG_OFFBIG 240 +#define _SC_SS_REPL_MAX 241 +#define _SC_TRACE_EVENT_NAME_MAX 242 +#define _SC_TRACE_NAME_MAX 243 +#define _SC_TRACE_SYS_MAX 244 +#define _SC_TRACE_USER_EVENT_MAX 245 +#define _SC_XOPEN_STREAMS 246 +#define _SC_THREAD_ROBUST_PRIO_INHERIT 247 +#define _SC_THREAD_ROBUST_PRIO_PROTECT 248 + +#define _CS_PATH 0 +#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 1 +#define _CS_GNU_LIBC_VERSION 2 +#define _CS_GNU_LIBPTHREAD_VERSION 3 +#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS 4 +#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 5 + +#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 1116 +#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 1117 +#define _CS_POSIX_V6_ILP32_OFF32_LIBS 1118 +#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS 1119 +#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 1120 +#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 1121 +#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 1122 +#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS 1123 +#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 1124 +#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 1125 +#define _CS_POSIX_V6_LP64_OFF64_LIBS 1126 +#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS 1127 +#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 1128 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 1129 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 1130 +#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS 1131 +#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1132 +#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 1133 +#define _CS_POSIX_V7_ILP32_OFF32_LIBS 1134 +#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS 1135 +#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 1136 +#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 1137 +#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 1138 +#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS 1139 +#define _CS_POSIX_V7_LP64_OFF64_CFLAGS 1140 +#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 1141 +#define _CS_POSIX_V7_LP64_OFF64_LIBS 1142 +#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS 1143 +#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 1144 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 1145 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 1146 +#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS 1147 +#define _CS_V6_ENV 1148 +#define _CS_V7_ENV 1149 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/utime.h b/vendor/modernc.org/libc/musl/include/utime.h new file mode 100644 index 000000000..5755bd53e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/utime.h @@ -0,0 +1,29 @@ +#ifndef _UTIME_H +#define _UTIME_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_time_t + +#include + +struct utimbuf { + time_t actime; + time_t modtime; +}; + +int utime (const char *, const struct utimbuf *); + +#if _REDIR_TIME64 +__REDIR(utime, __utime64); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/utmp.h b/vendor/modernc.org/libc/musl/include/utmp.h new file mode 100644 index 000000000..48a400d84 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/utmp.h @@ -0,0 +1,52 @@ +#ifndef _UTMP_H +#define _UTMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define ACCOUNTING 9 +#define UT_NAMESIZE 32 +#define UT_HOSTSIZE 256 +#define UT_LINESIZE 32 + +struct lastlog { + time_t ll_time; + char ll_line[UT_LINESIZE]; + char ll_host[UT_HOSTSIZE]; +}; + +#define ut_time ut_tv.tv_sec +#define ut_name ut_user +#define ut_addr ut_addr_v6[0] +#define utmp utmpx +#define e_exit __e_exit +#define e_termination __e_termination + +void endutent(void); +struct utmp *getutent(void); +struct utmp *getutid(const struct utmp *); +struct utmp *getutline(const struct utmp *); +struct utmp *pututline(const struct utmp *); +void setutent(void); + +void updwtmp(const char *, const struct utmp *); +int utmpname(const char *); + +int login_tty(int); + +#define _PATH_UTMP "/dev/null/utmp" +#define _PATH_WTMP "/dev/null/wtmp" + +#define UTMP_FILE _PATH_UTMP +#define WTMP_FILE _PATH_WTMP +#define UTMP_FILENAME _PATH_UTMP +#define WTMP_FILENAME _PATH_WTMP + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/utmpx.h b/vendor/modernc.org/libc/musl/include/utmpx.h new file mode 100644 index 000000000..b293f427e --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/utmpx.h @@ -0,0 +1,67 @@ +#ifndef _UTMPX_H +#define _UTMPX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_pid_t +#define __NEED_time_t +#define __NEED_suseconds_t +#define __NEED_struct_timeval + +#include + +struct utmpx { + short ut_type; + short __ut_pad1; + pid_t ut_pid; + char ut_line[32]; + char ut_id[4]; + char ut_user[32]; + char ut_host[256]; + struct { + short __e_termination; + short __e_exit; + } ut_exit; +#if __BYTE_ORDER == 1234 + int ut_session, __ut_pad2; +#else + int __ut_pad2, ut_session; +#endif + struct timeval ut_tv; + unsigned ut_addr_v6[4]; + char __unused[20]; +}; + +void endutxent(void); +struct utmpx *getutxent(void); +struct utmpx *getutxid(const struct utmpx *); +struct utmpx *getutxline(const struct utmpx *); +struct utmpx *pututxline(const struct utmpx *); +void setutxent(void); + +#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) +#define e_exit __e_exit +#define e_termination __e_termination +void updwtmpx(const char *, const struct utmpx *); +int utmpxname(const char *); +#endif + +#define EMPTY 0 +#define RUN_LVL 1 +#define BOOT_TIME 2 +#define NEW_TIME 3 +#define OLD_TIME 4 +#define INIT_PROCESS 5 +#define LOGIN_PROCESS 6 +#define USER_PROCESS 7 +#define DEAD_PROCESS 8 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/values.h b/vendor/modernc.org/libc/musl/include/values.h new file mode 100644 index 000000000..fe4949f85 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/values.h @@ -0,0 +1,39 @@ +#ifndef _VALUES_H +#define _VALUES_H + +#include + +#define CHARBITS (sizeof(char) * 8) +#define SHORTBITS (sizeof(short) * 8) +#define INTBITS (sizeof(int) * 8) +#define LONGBITS (sizeof(long) * 8) +#define PTRBITS (sizeof(char *) * 8) +#define DOUBLEBITS (sizeof(double) * 8) +#define FLOATBITS (sizeof(float) * 8) + +#define MINSHORT SHRT_MIN +#define MININT INT_MIN +#define MINLONG LONG_MIN + +#define MAXSHORT SHRT_MAX +#define MAXINT INT_MAX +#define MAXLONG LONG_MAX + +#define HIBITS MINSHORT +#define HIBITL MINLONG + +#include + +#define MAXDOUBLE DBL_MAX +#undef MAXFLOAT +#define MAXFLOAT FLT_MAX +#define MINDOUBLE DBL_MIN +#define MINFLOAT FLT_MIN +#define DMINEXP DBL_MIN_EXP +#define FMINEXP FLT_MIN_EXP +#define DMAXEXP DBL_MAX_EXP +#define FMAXEXP FLT_MAX_EXP + +#define BITSPERBYTE CHAR_BIT + +#endif diff --git a/vendor/modernc.org/libc/musl/include/wait.h b/vendor/modernc.org/libc/musl/include/wait.h new file mode 100644 index 000000000..98396e2d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/wait.h @@ -0,0 +1,2 @@ +#warning redirecting incorrect #include to +#include diff --git a/vendor/modernc.org/libc/musl/include/wchar.h b/vendor/modernc.org/libc/musl/include/wchar.h new file mode 100644 index 000000000..88eb55b18 --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/wchar.h @@ -0,0 +1,205 @@ +#ifndef _WCHAR_H +#define _WCHAR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_FILE +#define __NEED___isoc_va_list +#define __NEED_size_t +#define __NEED_wchar_t +#define __NEED_wint_t +#define __NEED_mbstate_t + +#if __STDC_VERSION__ < 201112L +#define __NEED_struct__IO_FILE +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_locale_t +#define __NEED_va_list +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_wctype_t +#endif + +#include + +#if L'\0'-1 > 0 +#define WCHAR_MAX (0xffffffffu+L'\0') +#define WCHAR_MIN (0+L'\0') +#else +#define WCHAR_MAX (0x7fffffff+L'\0') +#define WCHAR_MIN (-1-0x7fffffff+L'\0') +#endif + +#ifdef __cplusplus +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#undef WEOF +#define WEOF 0xffffffffU + +wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); + +wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t); + +int wcscmp (const wchar_t *, const wchar_t *); +int wcsncmp (const wchar_t *, const wchar_t *, size_t); + +int wcscoll(const wchar_t *, const wchar_t *); +size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t); + +wchar_t *wcschr (const wchar_t *, wchar_t); +wchar_t *wcsrchr (const wchar_t *, wchar_t); + +size_t wcscspn (const wchar_t *, const wchar_t *); +size_t wcsspn (const wchar_t *, const wchar_t *); +wchar_t *wcspbrk (const wchar_t *, const wchar_t *); + +wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict); + +size_t wcslen (const wchar_t *); + +wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcswcs (const wchar_t *, const wchar_t *); + +wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); +int wmemcmp (const wchar_t *, const wchar_t *, size_t); +wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); +wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); +wchar_t *wmemset (wchar_t *, wchar_t, size_t); + +wint_t btowc (int); +int wctob (wint_t); + +int mbsinit (const mbstate_t *); +size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); +size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict); + +size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict); + +size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict); +size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict); + +float wcstof (const wchar_t *__restrict, wchar_t **__restrict); +double wcstod (const wchar_t *__restrict, wchar_t **__restrict); +long double wcstold (const wchar_t *__restrict, wchar_t **__restrict); + +long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int); +unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int); + +long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int); +unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int); + + + +int fwide (FILE *, int); + + +int wprintf (const wchar_t *__restrict, ...); +int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...); +int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...); + +int vwprintf (const wchar_t *__restrict, __isoc_va_list); +int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list); +int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list); + +int wscanf (const wchar_t *__restrict, ...); +int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...); +int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...); + +int vwscanf (const wchar_t *__restrict, __isoc_va_list); +int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list); +int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list); + +wint_t fgetwc (FILE *); +wint_t getwc (FILE *); +wint_t getwchar (void); + +wint_t fputwc (wchar_t, FILE *); +wint_t putwc (wchar_t, FILE *); +wint_t putwchar (wchar_t); + +wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict); +int fputws (const wchar_t *__restrict, FILE *__restrict); + +wint_t ungetwc (wint_t, FILE *); + +struct tm; +size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict); + +#undef iswdigit + +#if defined(_GNU_SOURCE) +wint_t fgetwc_unlocked (FILE *); +wint_t getwc_unlocked (FILE *); +wint_t getwchar_unlocked (void); +wint_t fputwc_unlocked (wchar_t, FILE *); +wint_t putwc_unlocked (wchar_t, FILE *); +wint_t putwchar_unlocked (wchar_t); +wchar_t *fgetws_unlocked (wchar_t *__restrict, int, FILE *__restrict); +int fputws_unlocked (const wchar_t *__restrict, FILE *__restrict); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict, locale_t); +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +FILE *open_wmemstream(wchar_t **, size_t *); +size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict); +size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict); +wchar_t *wcsdup(const wchar_t *); +size_t wcsnlen (const wchar_t *, size_t); +wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); +int wcscasecmp(const wchar_t *, const wchar_t *); +int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t); +int wcsncasecmp(const wchar_t *, const wchar_t *, size_t); +int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t); +int wcscoll_l(const wchar_t *, const wchar_t *, locale_t); +size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t, locale_t); +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +int wcwidth (wchar_t); +int wcswidth (const wchar_t *, size_t); +int iswalnum(wint_t); +int iswalpha(wint_t); +int iswblank(wint_t); +int iswcntrl(wint_t); +int iswdigit(wint_t); +int iswgraph(wint_t); +int iswlower(wint_t); +int iswprint(wint_t); +int iswpunct(wint_t); +int iswspace(wint_t); +int iswupper(wint_t); +int iswxdigit(wint_t); +int iswctype(wint_t, wctype_t); +wint_t towlower(wint_t); +wint_t towupper(wint_t); +wctype_t wctype(const char *); + +#ifndef __cplusplus +#undef iswdigit +#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10) +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/wctype.h b/vendor/modernc.org/libc/musl/include/wctype.h new file mode 100644 index 000000000..bc2420d3f --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/wctype.h @@ -0,0 +1,79 @@ +#ifndef _WCTYPE_H +#define _WCTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_wint_t +#define __NEED_wctype_t + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define __NEED_locale_t +#endif + +#include + +typedef const int * wctrans_t; + +#undef WEOF +#define WEOF 0xffffffffU + +#undef iswdigit + +int iswalnum(wint_t); +int iswalpha(wint_t); +int iswblank(wint_t); +int iswcntrl(wint_t); +int iswdigit(wint_t); +int iswgraph(wint_t); +int iswlower(wint_t); +int iswprint(wint_t); +int iswpunct(wint_t); +int iswspace(wint_t); +int iswupper(wint_t); +int iswxdigit(wint_t); +int iswctype(wint_t, wctype_t); +wint_t towctrans(wint_t, wctrans_t); +wint_t towlower(wint_t); +wint_t towupper(wint_t); +wctrans_t wctrans(const char *); +wctype_t wctype(const char *); + +#ifndef __cplusplus +#undef iswdigit +#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10) +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +int iswalnum_l(wint_t, locale_t); +int iswalpha_l(wint_t, locale_t); +int iswblank_l(wint_t, locale_t); +int iswcntrl_l(wint_t, locale_t); +int iswdigit_l(wint_t, locale_t); +int iswgraph_l(wint_t, locale_t); +int iswlower_l(wint_t, locale_t); +int iswprint_l(wint_t, locale_t); +int iswpunct_l(wint_t, locale_t); +int iswspace_l(wint_t, locale_t); +int iswupper_l(wint_t, locale_t); +int iswxdigit_l(wint_t, locale_t); +int iswctype_l(wint_t, wctype_t, locale_t); +wint_t towlower_l(wint_t, locale_t); +wint_t towupper_l(wint_t, locale_t); +wint_t towctrans_l(wint_t, wctrans_t, locale_t); +wctrans_t wctrans_l(const char *, locale_t); +wctype_t wctype_l(const char *, locale_t); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/include/wordexp.h b/vendor/modernc.org/libc/musl/include/wordexp.h new file mode 100644 index 000000000..5460002de --- /dev/null +++ b/vendor/modernc.org/libc/musl/include/wordexp.h @@ -0,0 +1,41 @@ +#ifndef _WORDEXP_H +#define _WORDEXP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_size_t + +#include + +#define WRDE_DOOFFS 1 +#define WRDE_APPEND 2 +#define WRDE_NOCMD 4 +#define WRDE_REUSE 8 +#define WRDE_SHOWERR 16 +#define WRDE_UNDEF 32 + +typedef struct { + size_t we_wordc; + char **we_wordv; + size_t we_offs; +} wordexp_t; + +#define WRDE_NOSYS -1 +#define WRDE_NOSPACE 1 +#define WRDE_BADCHAR 2 +#define WRDE_BADVAL 3 +#define WRDE_CMDSUB 4 +#define WRDE_SYNTAX 5 + +int wordexp (const char *__restrict, wordexp_t *__restrict, int); +void wordfree (wordexp_t *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/ldso/dlstart.c b/vendor/modernc.org/libc/musl/ldso/dlstart.c new file mode 100644 index 000000000..20d50f2cb --- /dev/null +++ b/vendor/modernc.org/libc/musl/ldso/dlstart.c @@ -0,0 +1,148 @@ +#include +#include "dynlink.h" +#include "libc.h" + +#ifndef START +#define START "_dlstart" +#endif + +#define SHARED + +#include "crt_arch.h" + +#ifndef GETFUNCSYM +#define GETFUNCSYM(fp, sym, got) do { \ + hidden void sym(); \ + static void (*static_func_ptr)() = sym; \ + __asm__ __volatile__ ( "" : "+m"(static_func_ptr) : : "memory"); \ + *(fp) = static_func_ptr; } while(0) +#endif + +hidden void _dlstart_c(size_t *sp, size_t *dynv) +{ + size_t i, aux[AUX_CNT], dyn[DYN_CNT]; + size_t *rel, rel_size, base; + + int argc = *sp; + char **argv = (void *)(sp+1); + + for (i=argc+1; argv[i]; i++); + size_t *auxv = (void *)(argv+i+1); + + for (i=0; isegs; + } else { + /* If dynv is null, the entry point was started from loader + * that is not fdpic-aware. We can assume normal fixed- + * displacement ELF loading was performed, but when ldso was + * run as a command, finding the Ehdr is a heursitic: we + * have to assume Phdrs start in the first 4k of the file. */ + base = aux[AT_BASE]; + if (!base) base = aux[AT_PHDR] & -4096; + segs = &fakeseg; + segs[0].addr = base; + segs[0].p_vaddr = 0; + segs[0].p_memsz = -1; + Ehdr *eh = (void *)base; + Phdr *ph = (void *)(base + eh->e_phoff); + size_t phnum = eh->e_phnum; + size_t phent = eh->e_phentsize; + while (phnum-- && ph->p_type != PT_DYNAMIC) + ph = (void *)((size_t)ph + phent); + dynv = (void *)(base + ph->p_vaddr); + } +#endif + + for (i=0; i= segs[j].p_memsz; j++); + dyn[i] += segs[j].addr - segs[j].p_vaddr; + } + base = 0; + + const Sym *syms = (void *)dyn[DT_SYMTAB]; + + rel = (void *)dyn[DT_RELA]; + rel_size = dyn[DT_RELASZ]; + for (; rel_size; rel+=3, rel_size-=3*sizeof(size_t)) { + if (!IS_RELATIVE(rel[1], syms)) continue; + for (j=0; rel[0]-segs[j].p_vaddr >= segs[j].p_memsz; j++); + size_t *rel_addr = (void *) + (rel[0] + segs[j].addr - segs[j].p_vaddr); + if (R_TYPE(rel[1]) == REL_FUNCDESC_VAL) { + *rel_addr += segs[rel_addr[1]].addr + - segs[rel_addr[1]].p_vaddr + + syms[R_SYM(rel[1])].st_value; + rel_addr[1] = dyn[DT_PLTGOT]; + } else { + size_t val = syms[R_SYM(rel[1])].st_value; + for (j=0; val-segs[j].p_vaddr >= segs[j].p_memsz; j++); + *rel_addr = rel[2] + segs[j].addr - segs[j].p_vaddr + val; + } + } +#else + /* If the dynamic linker is invoked as a command, its load + * address is not available in the aux vector. Instead, compute + * the load address as the difference between &_DYNAMIC and the + * virtual address in the PT_DYNAMIC program header. */ + base = aux[AT_BASE]; + if (!base) { + size_t phnum = aux[AT_PHNUM]; + size_t phentsize = aux[AT_PHENT]; + Phdr *ph = (void *)aux[AT_PHDR]; + for (i=phnum; i--; ph = (void *)((char *)ph + phentsize)) { + if (ph->p_type == PT_DYNAMIC) { + base = (size_t)dynv - ph->p_vaddr; + break; + } + } + } + + /* MIPS uses an ugly packed form for GOT relocations. Since we + * can't make function calls yet and the code is tiny anyway, + * it's simply inlined here. */ + if (NEED_MIPS_GOT_RELOCS) { + size_t local_cnt = 0; + size_t *got = (void *)(base + dyn[DT_PLTGOT]); + for (i=0; dynv[i]; i+=2) if (dynv[i]==DT_MIPS_LOCAL_GOTNO) + local_cnt = dynv[i+1]; + for (i=0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "pthread_impl.h" +#include "libc.h" +#include "dynlink.h" + +static void error(const char *, ...); + +#define MAXP2(a,b) (-(-(a)&-(b))) +#define ALIGN(x,y) ((x)+(y)-1 & -(y)) + +#define container_of(p,t,m) ((t*)((char *)(p)-offsetof(t,m))) +#define countof(a) ((sizeof (a))/(sizeof (a)[0])) + +struct debug { + int ver; + void *head; + void (*bp)(void); + int state; + void *base; +}; + +struct td_index { + size_t args[2]; + struct td_index *next; +}; + +struct dso { +#if DL_FDPIC + struct fdpic_loadmap *loadmap; +#else + unsigned char *base; +#endif + char *name; + size_t *dynv; + struct dso *next, *prev; + + Phdr *phdr; + int phnum; + size_t phentsize; + Sym *syms; + Elf_Symndx *hashtab; + uint32_t *ghashtab; + int16_t *versym; + char *strings; + struct dso *syms_next, *lazy_next; + size_t *lazy, lazy_cnt; + unsigned char *map; + size_t map_len; + dev_t dev; + ino_t ino; + char relocated; + char constructed; + char kernel_mapped; + char mark; + char bfs_built; + char runtime_loaded; + struct dso **deps, *needed_by; + size_t ndeps_direct; + size_t next_dep; + int ctor_visitor; + char *rpath_orig, *rpath; + struct tls_module tls; + size_t tls_id; + size_t relro_start, relro_end; + uintptr_t *new_dtv; + unsigned char *new_tls; + struct td_index *td_index; + struct dso *fini_next; + char *shortname; +#if DL_FDPIC + unsigned char *base; +#else + struct fdpic_loadmap *loadmap; +#endif + struct funcdesc { + void *addr; + size_t *got; + } *funcdescs; + size_t *got; + char buf[]; +}; + +struct symdef { + Sym *sym; + struct dso *dso; +}; + +typedef void (*stage3_func)(size_t *, size_t *); + +static struct builtin_tls { + char c; + struct pthread pt; + void *space[16]; +} builtin_tls[1]; +#define MIN_TLS_ALIGN offsetof(struct builtin_tls, pt) + +#define ADDEND_LIMIT 4096 +static size_t *saved_addends, *apply_addends_to; + +static struct dso ldso; +static struct dso *head, *tail, *fini_head, *syms_tail, *lazy_head; +static char *env_path, *sys_path; +static unsigned long long gencnt; +static int runtime; +static int ldd_mode; +static int ldso_fail; +static int noload; +static int shutting_down; +static jmp_buf *rtld_fail; +static pthread_rwlock_t lock; +static struct debug debug; +static struct tls_module *tls_tail; +static size_t tls_cnt, tls_offset, tls_align = MIN_TLS_ALIGN; +static size_t static_tls_cnt; +static pthread_mutex_t init_fini_lock; +static pthread_cond_t ctor_cond; +static struct dso *builtin_deps[2]; +static struct dso *const no_deps[1]; +static struct dso *builtin_ctor_queue[4]; +static struct dso **main_ctor_queue; +static struct fdpic_loadmap *app_loadmap; +static struct fdpic_dummy_loadmap app_dummy_loadmap; + +struct debug *_dl_debug_addr = &debug; + +extern hidden int __malloc_replaced; + +hidden void (*const __init_array_start)(void)=0, (*const __fini_array_start)(void)=0; + +extern hidden void (*const __init_array_end)(void), (*const __fini_array_end)(void); + +weak_alias(__init_array_start, __init_array_end); +weak_alias(__fini_array_start, __fini_array_end); + +static int dl_strcmp(const char *l, const char *r) +{ + for (; *l==*r && *l; l++, r++); + return *(unsigned char *)l - *(unsigned char *)r; +} +#define strcmp(l,r) dl_strcmp(l,r) + +/* Compute load address for a virtual address in a given dso. */ +#if DL_FDPIC +static void *laddr(const struct dso *p, size_t v) +{ + size_t j=0; + if (!p->loadmap) return p->base + v; + for (j=0; v-p->loadmap->segs[j].p_vaddr >= p->loadmap->segs[j].p_memsz; j++); + return (void *)(v - p->loadmap->segs[j].p_vaddr + p->loadmap->segs[j].addr); +} +static void *laddr_pg(const struct dso *p, size_t v) +{ + size_t j=0; + size_t pgsz = PAGE_SIZE; + if (!p->loadmap) return p->base + v; + for (j=0; ; j++) { + size_t a = p->loadmap->segs[j].p_vaddr; + size_t b = a + p->loadmap->segs[j].p_memsz; + a &= -pgsz; + b += pgsz-1; + b &= -pgsz; + if (v-aloadmap->segs[j].p_vaddr + p->loadmap->segs[j].addr); +} +static void (*fdbarrier(void *p))() +{ + void (*fd)(); + __asm__("" : "=r"(fd) : "0"(p)); + return fd; +} +#define fpaddr(p, v) fdbarrier((&(struct funcdesc){ \ + laddr(p, v), (p)->got })) +#else +#define laddr(p, v) (void *)((p)->base + (v)) +#define laddr_pg(p, v) laddr(p, v) +#define fpaddr(p, v) ((void (*)())laddr(p, v)) +#endif + +static void decode_vec(size_t *v, size_t *a, size_t cnt) +{ + size_t i; + for (i=0; i>24 & 0xf0; + } + return h & 0xfffffff; +} + +static uint32_t gnu_hash(const char *s0) +{ + const unsigned char *s = (void *)s0; + uint_fast32_t h = 5381; + for (; *s; s++) + h += h*32 + *s; + return h; +} + +static Sym *sysv_lookup(const char *s, uint32_t h, struct dso *dso) +{ + size_t i; + Sym *syms = dso->syms; + Elf_Symndx *hashtab = dso->hashtab; + char *strings = dso->strings; + for (i=hashtab[2+h%hashtab[0]]; i; i=hashtab[2+hashtab[0]+i]) { + if ((!dso->versym || dso->versym[i] >= 0) + && (!strcmp(s, strings+syms[i].st_name))) + return syms+i; + } + return 0; +} + +static Sym *gnu_lookup(uint32_t h1, uint32_t *hashtab, struct dso *dso, const char *s) +{ + uint32_t nbuckets = hashtab[0]; + uint32_t *buckets = hashtab + 4 + hashtab[2]*(sizeof(size_t)/4); + uint32_t i = buckets[h1 % nbuckets]; + + if (!i) return 0; + + uint32_t *hashval = buckets + nbuckets + (i - hashtab[1]); + + for (h1 |= 1; ; i++) { + uint32_t h2 = *hashval++; + if ((h1 == (h2|1)) && (!dso->versym || dso->versym[i] >= 0) + && !strcmp(s, dso->strings + dso->syms[i].st_name)) + return dso->syms+i; + if (h2 & 1) break; + } + + return 0; +} + +static Sym *gnu_lookup_filtered(uint32_t h1, uint32_t *hashtab, struct dso *dso, const char *s, uint32_t fofs, size_t fmask) +{ + const size_t *bloomwords = (const void *)(hashtab+4); + size_t f = bloomwords[fofs & (hashtab[2]-1)]; + if (!(f & fmask)) return 0; + + f >>= (h1 >> hashtab[3]) % (8 * sizeof f); + if (!(f & 1)) return 0; + + return gnu_lookup(h1, hashtab, dso, s); +} + +#define OK_TYPES (1<deps : 0; + for (; dso; dso=use_deps ? *deps++ : dso->syms_next) { + Sym *sym; + if ((ght = dso->ghashtab)) { + sym = gnu_lookup_filtered(gh, ght, dso, s, gho, ghm); + } else { + if (!h) h = sysv_hash(s); + sym = sysv_lookup(s, h, dso); + } + if (!sym) continue; + if (!sym->st_shndx) + if (need_def || (sym->st_info&0xf) == STT_TLS + || ARCH_SYM_REJECT_UND(sym)) + continue; + if (!sym->st_value) + if ((sym->st_info&0xf) != STT_TLS) + continue; + if (!(1<<(sym->st_info&0xf) & OK_TYPES)) continue; + if (!(1<<(sym->st_info>>4) & OK_BINDS)) continue; + def.sym = sym; + def.dso = dso; + break; + } + return def; +} + +static struct symdef find_sym(struct dso *dso, const char *s, int need_def) +{ + return find_sym2(dso, s, need_def, 0); +} + +static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride) +{ + unsigned char *base = dso->base; + Sym *syms = dso->syms; + char *strings = dso->strings; + Sym *sym; + const char *name; + void *ctx; + int type; + int sym_index; + struct symdef def; + size_t *reloc_addr; + size_t sym_val; + size_t tls_val; + size_t addend; + int skip_relative = 0, reuse_addends = 0, save_slot = 0; + + if (dso == &ldso) { + /* Only ldso's REL table needs addend saving/reuse. */ + if (rel == apply_addends_to) + reuse_addends = 1; + skip_relative = 1; + } + + for (; rel_size; rel+=stride, rel_size-=stride*sizeof(size_t)) { + if (skip_relative && IS_RELATIVE(rel[1], dso->syms)) continue; + type = R_TYPE(rel[1]); + if (type == REL_NONE) continue; + reloc_addr = laddr(dso, rel[0]); + + if (stride > 2) { + addend = rel[2]; + } else if (type==REL_GOT || type==REL_PLT|| type==REL_COPY) { + addend = 0; + } else if (reuse_addends) { + /* Save original addend in stage 2 where the dso + * chain consists of just ldso; otherwise read back + * saved addend since the inline one was clobbered. */ + if (head==&ldso) + saved_addends[save_slot] = *reloc_addr; + addend = saved_addends[save_slot++]; + } else { + addend = *reloc_addr; + } + + sym_index = R_SYM(rel[1]); + if (sym_index) { + sym = syms + sym_index; + name = strings + sym->st_name; + ctx = type==REL_COPY ? head->syms_next : head; + def = (sym->st_info>>4) == STB_LOCAL + ? (struct symdef){ .dso = dso, .sym = sym } + : find_sym(ctx, name, type==REL_PLT); + if (!def.sym && (sym->st_shndx != SHN_UNDEF + || sym->st_info>>4 != STB_WEAK)) { + if (dso->lazy && (type==REL_PLT || type==REL_GOT)) { + dso->lazy[3*dso->lazy_cnt+0] = rel[0]; + dso->lazy[3*dso->lazy_cnt+1] = rel[1]; + dso->lazy[3*dso->lazy_cnt+2] = addend; + dso->lazy_cnt++; + continue; + } + error("Error relocating %s: %s: symbol not found", + dso->name, name); + if (runtime) longjmp(*rtld_fail, 1); + continue; + } + } else { + sym = 0; + def.sym = 0; + def.dso = dso; + } + + sym_val = def.sym ? (size_t)laddr(def.dso, def.sym->st_value) : 0; + tls_val = def.sym ? def.sym->st_value : 0; + + if ((type == REL_TPOFF || type == REL_TPOFF_NEG) + && def.dso->tls_id > static_tls_cnt) { + error("Error relocating %s: %s: initial-exec TLS " + "resolves to dynamic definition in %s", + dso->name, name, def.dso->name); + longjmp(*rtld_fail, 1); + } + + switch(type) { + case REL_OFFSET: + addend -= (size_t)reloc_addr; + case REL_SYMBOLIC: + case REL_GOT: + case REL_PLT: + *reloc_addr = sym_val + addend; + break; + case REL_USYMBOLIC: + memcpy(reloc_addr, &(size_t){sym_val + addend}, sizeof(size_t)); + break; + case REL_RELATIVE: + *reloc_addr = (size_t)base + addend; + break; + case REL_SYM_OR_REL: + if (sym) *reloc_addr = sym_val + addend; + else *reloc_addr = (size_t)base + addend; + break; + case REL_COPY: + memcpy(reloc_addr, (void *)sym_val, sym->st_size); + break; + case REL_OFFSET32: + *(uint32_t *)reloc_addr = sym_val + addend + - (size_t)reloc_addr; + break; + case REL_FUNCDESC: + *reloc_addr = def.sym ? (size_t)(def.dso->funcdescs + + (def.sym - def.dso->syms)) : 0; + break; + case REL_FUNCDESC_VAL: + if ((sym->st_info&0xf) == STT_SECTION) *reloc_addr += sym_val; + else *reloc_addr = sym_val; + reloc_addr[1] = def.sym ? (size_t)def.dso->got : 0; + break; + case REL_DTPMOD: + *reloc_addr = def.dso->tls_id; + break; + case REL_DTPOFF: + *reloc_addr = tls_val + addend - DTP_OFFSET; + break; +#ifdef TLS_ABOVE_TP + case REL_TPOFF: + *reloc_addr = tls_val + def.dso->tls.offset + TPOFF_K + addend; + break; +#else + case REL_TPOFF: + *reloc_addr = tls_val - def.dso->tls.offset + addend; + break; + case REL_TPOFF_NEG: + *reloc_addr = def.dso->tls.offset - tls_val + addend; + break; +#endif + case REL_TLSDESC: + if (stride<3) addend = reloc_addr[1]; + if (def.dso->tls_id > static_tls_cnt) { + struct td_index *new = malloc(sizeof *new); + if (!new) { + error( + "Error relocating %s: cannot allocate TLSDESC for %s", + dso->name, sym ? name : "(local)" ); + longjmp(*rtld_fail, 1); + } + new->next = dso->td_index; + dso->td_index = new; + new->args[0] = def.dso->tls_id; + new->args[1] = tls_val + addend - DTP_OFFSET; + reloc_addr[0] = (size_t)__tlsdesc_dynamic; + reloc_addr[1] = (size_t)new; + } else { + reloc_addr[0] = (size_t)__tlsdesc_static; +#ifdef TLS_ABOVE_TP + reloc_addr[1] = tls_val + def.dso->tls.offset + + TPOFF_K + addend; +#else + reloc_addr[1] = tls_val - def.dso->tls.offset + + addend; +#endif + } +#ifdef TLSDESC_BACKWARDS + /* Some archs (32-bit ARM at least) invert the order of + * the descriptor members. Fix them up here. */ + size_t tmp = reloc_addr[0]; + reloc_addr[0] = reloc_addr[1]; + reloc_addr[1] = tmp; +#endif + break; + default: + error("Error relocating %s: unsupported relocation type %d", + dso->name, type); + if (runtime) longjmp(*rtld_fail, 1); + continue; + } + } +} + +static void redo_lazy_relocs() +{ + struct dso *p = lazy_head, *next; + lazy_head = 0; + for (; p; p=next) { + next = p->lazy_next; + size_t size = p->lazy_cnt*3*sizeof(size_t); + p->lazy_cnt = 0; + do_relocs(p, p->lazy, size, 3); + if (p->lazy_cnt) { + p->lazy_next = lazy_head; + lazy_head = p; + } else { + free(p->lazy); + p->lazy = 0; + p->lazy_next = 0; + } + } +} + +/* A huge hack: to make up for the wastefulness of shared libraries + * needing at least a page of dirty memory even if they have no global + * data, we reclaim the gaps at the beginning and end of writable maps + * and "donate" them to the heap. */ + +static void reclaim(struct dso *dso, size_t start, size_t end) +{ + if (start >= dso->relro_start && start < dso->relro_end) start = dso->relro_end; + if (end >= dso->relro_start && end < dso->relro_end) end = dso->relro_start; + if (start >= end) return; + char *base = laddr_pg(dso, start); + __malloc_donate(base, base+(end-start)); +} + +static void reclaim_gaps(struct dso *dso) +{ + Phdr *ph = dso->phdr; + size_t phcnt = dso->phnum; + + for (; phcnt--; ph=(void *)((char *)ph+dso->phentsize)) { + if (ph->p_type!=PT_LOAD) continue; + if ((ph->p_flags&(PF_R|PF_W))!=(PF_R|PF_W)) continue; + reclaim(dso, ph->p_vaddr & -PAGE_SIZE, ph->p_vaddr); + reclaim(dso, ph->p_vaddr+ph->p_memsz, + ph->p_vaddr+ph->p_memsz+PAGE_SIZE-1 & -PAGE_SIZE); + } +} + +static void *mmap_fixed(void *p, size_t n, int prot, int flags, int fd, off_t off) +{ + static int no_map_fixed; + char *q; + if (!no_map_fixed) { + q = mmap(p, n, prot, flags|MAP_FIXED, fd, off); + if (!DL_NOMMU_SUPPORT || q != MAP_FAILED || errno != EINVAL) + return q; + no_map_fixed = 1; + } + /* Fallbacks for MAP_FIXED failure on NOMMU kernels. */ + if (flags & MAP_ANONYMOUS) { + memset(p, 0, n); + return p; + } + ssize_t r; + if (lseek(fd, off, SEEK_SET) < 0) return MAP_FAILED; + for (q=p; n; q+=r, off+=r, n-=r) { + r = read(fd, q, n); + if (r < 0 && errno != EINTR) return MAP_FAILED; + if (!r) { + memset(q, 0, n); + break; + } + } + return p; +} + +static void unmap_library(struct dso *dso) +{ + if (dso->loadmap) { + size_t i; + for (i=0; iloadmap->nsegs; i++) { + if (!dso->loadmap->segs[i].p_memsz) + continue; + munmap((void *)dso->loadmap->segs[i].addr, + dso->loadmap->segs[i].p_memsz); + } + free(dso->loadmap); + } else if (dso->map && dso->map_len) { + munmap(dso->map, dso->map_len); + } +} + +static void *map_library(int fd, struct dso *dso) +{ + Ehdr buf[(896+sizeof(Ehdr))/sizeof(Ehdr)]; + void *allocated_buf=0; + size_t phsize; + size_t addr_min=SIZE_MAX, addr_max=0, map_len; + size_t this_min, this_max; + size_t nsegs = 0; + off_t off_start; + Ehdr *eh; + Phdr *ph, *ph0; + unsigned prot; + unsigned char *map=MAP_FAILED, *base; + size_t dyn=0; + size_t tls_image=0; + size_t i; + + ssize_t l = read(fd, buf, sizeof buf); + eh = buf; + if (l<0) return 0; + if (le_type != ET_DYN && eh->e_type != ET_EXEC)) + goto noexec; + phsize = eh->e_phentsize * eh->e_phnum; + if (phsize > sizeof buf - sizeof *eh) { + allocated_buf = malloc(phsize); + if (!allocated_buf) return 0; + l = pread(fd, allocated_buf, phsize, eh->e_phoff); + if (l < 0) goto error; + if (l != phsize) goto noexec; + ph = ph0 = allocated_buf; + } else if (eh->e_phoff + phsize > l) { + l = pread(fd, buf+1, phsize, eh->e_phoff); + if (l < 0) goto error; + if (l != phsize) goto noexec; + ph = ph0 = (void *)(buf + 1); + } else { + ph = ph0 = (void *)((char *)buf + eh->e_phoff); + } + for (i=eh->e_phnum; i; i--, ph=(void *)((char *)ph+eh->e_phentsize)) { + if (ph->p_type == PT_DYNAMIC) { + dyn = ph->p_vaddr; + } else if (ph->p_type == PT_TLS) { + tls_image = ph->p_vaddr; + dso->tls.align = ph->p_align; + dso->tls.len = ph->p_filesz; + dso->tls.size = ph->p_memsz; + } else if (ph->p_type == PT_GNU_RELRO) { + dso->relro_start = ph->p_vaddr & -PAGE_SIZE; + dso->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE; + } else if (ph->p_type == PT_GNU_STACK) { + if (!runtime && ph->p_memsz > __default_stacksize) { + __default_stacksize = + ph->p_memsz < DEFAULT_STACK_MAX ? + ph->p_memsz : DEFAULT_STACK_MAX; + } + } + if (ph->p_type != PT_LOAD) continue; + nsegs++; + if (ph->p_vaddr < addr_min) { + addr_min = ph->p_vaddr; + off_start = ph->p_offset; + prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) | + ((ph->p_flags&PF_W) ? PROT_WRITE: 0) | + ((ph->p_flags&PF_X) ? PROT_EXEC : 0)); + } + if (ph->p_vaddr+ph->p_memsz > addr_max) { + addr_max = ph->p_vaddr+ph->p_memsz; + } + } + if (!dyn) goto noexec; + if (DL_FDPIC && !(eh->e_flags & FDPIC_CONSTDISP_FLAG)) { + dso->loadmap = calloc(1, sizeof *dso->loadmap + + nsegs * sizeof *dso->loadmap->segs); + if (!dso->loadmap) goto error; + dso->loadmap->nsegs = nsegs; + for (ph=ph0, i=0; ie_phentsize)) { + if (ph->p_type != PT_LOAD) continue; + prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) | + ((ph->p_flags&PF_W) ? PROT_WRITE: 0) | + ((ph->p_flags&PF_X) ? PROT_EXEC : 0)); + map = mmap(0, ph->p_memsz + (ph->p_vaddr & PAGE_SIZE-1), + prot, MAP_PRIVATE, + fd, ph->p_offset & -PAGE_SIZE); + if (map == MAP_FAILED) { + unmap_library(dso); + goto error; + } + dso->loadmap->segs[i].addr = (size_t)map + + (ph->p_vaddr & PAGE_SIZE-1); + dso->loadmap->segs[i].p_vaddr = ph->p_vaddr; + dso->loadmap->segs[i].p_memsz = ph->p_memsz; + i++; + if (prot & PROT_WRITE) { + size_t brk = (ph->p_vaddr & PAGE_SIZE-1) + + ph->p_filesz; + size_t pgbrk = brk + PAGE_SIZE-1 & -PAGE_SIZE; + size_t pgend = brk + ph->p_memsz - ph->p_filesz + + PAGE_SIZE-1 & -PAGE_SIZE; + if (pgend > pgbrk && mmap_fixed(map+pgbrk, + pgend-pgbrk, prot, + MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, + -1, off_start) == MAP_FAILED) + goto error; + memset(map + brk, 0, pgbrk-brk); + } + } + map = (void *)dso->loadmap->segs[0].addr; + map_len = 0; + goto done_mapping; + } + addr_max += PAGE_SIZE-1; + addr_max &= -PAGE_SIZE; + addr_min &= -PAGE_SIZE; + off_start &= -PAGE_SIZE; + map_len = addr_max - addr_min + off_start; + /* The first time, we map too much, possibly even more than + * the length of the file. This is okay because we will not + * use the invalid part; we just need to reserve the right + * amount of virtual address space to map over later. */ + map = DL_NOMMU_SUPPORT + ? mmap((void *)addr_min, map_len, PROT_READ|PROT_WRITE|PROT_EXEC, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + : mmap((void *)addr_min, map_len, prot, + MAP_PRIVATE, fd, off_start); + if (map==MAP_FAILED) goto error; + dso->map = map; + dso->map_len = map_len; + /* If the loaded file is not relocatable and the requested address is + * not available, then the load operation must fail. */ + if (eh->e_type != ET_DYN && addr_min && map!=(void *)addr_min) { + errno = EBUSY; + goto error; + } + base = map - addr_min; + dso->phdr = 0; + dso->phnum = 0; + for (ph=ph0, i=eh->e_phnum; i; i--, ph=(void *)((char *)ph+eh->e_phentsize)) { + if (ph->p_type != PT_LOAD) continue; + /* Check if the programs headers are in this load segment, and + * if so, record the address for use by dl_iterate_phdr. */ + if (!dso->phdr && eh->e_phoff >= ph->p_offset + && eh->e_phoff+phsize <= ph->p_offset+ph->p_filesz) { + dso->phdr = (void *)(base + ph->p_vaddr + + (eh->e_phoff-ph->p_offset)); + dso->phnum = eh->e_phnum; + dso->phentsize = eh->e_phentsize; + } + this_min = ph->p_vaddr & -PAGE_SIZE; + this_max = ph->p_vaddr+ph->p_memsz+PAGE_SIZE-1 & -PAGE_SIZE; + off_start = ph->p_offset & -PAGE_SIZE; + prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) | + ((ph->p_flags&PF_W) ? PROT_WRITE: 0) | + ((ph->p_flags&PF_X) ? PROT_EXEC : 0)); + /* Reuse the existing mapping for the lowest-address LOAD */ + if ((ph->p_vaddr & -PAGE_SIZE) != addr_min || DL_NOMMU_SUPPORT) + if (mmap_fixed(base+this_min, this_max-this_min, prot, MAP_PRIVATE|MAP_FIXED, fd, off_start) == MAP_FAILED) + goto error; + if (ph->p_memsz > ph->p_filesz && (ph->p_flags&PF_W)) { + size_t brk = (size_t)base+ph->p_vaddr+ph->p_filesz; + size_t pgbrk = brk+PAGE_SIZE-1 & -PAGE_SIZE; + memset((void *)brk, 0, pgbrk-brk & PAGE_SIZE-1); + if (pgbrk-(size_t)base < this_max && mmap_fixed((void *)pgbrk, (size_t)base+this_max-pgbrk, prot, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) == MAP_FAILED) + goto error; + } + } + for (i=0; ((size_t *)(base+dyn))[i]; i+=2) + if (((size_t *)(base+dyn))[i]==DT_TEXTREL) { + if (mprotect(map, map_len, PROT_READ|PROT_WRITE|PROT_EXEC) + && errno != ENOSYS) + goto error; + break; + } +done_mapping: + dso->base = base; + dso->dynv = laddr(dso, dyn); + if (dso->tls.size) dso->tls.image = laddr(dso, tls_image); + free(allocated_buf); + return map; +noexec: + errno = ENOEXEC; +error: + if (map!=MAP_FAILED) unmap_library(dso); + free(allocated_buf); + return 0; +} + +static int path_open(const char *name, const char *s, char *buf, size_t buf_size) +{ + size_t l; + int fd; + for (;;) { + s += strspn(s, ":\n"); + l = strcspn(s, ":\n"); + if (l-1 >= INT_MAX) return -1; + if (snprintf(buf, buf_size, "%.*s/%s", (int)l, s, name) < buf_size) { + if ((fd = open(buf, O_RDONLY|O_CLOEXEC))>=0) return fd; + switch (errno) { + case ENOENT: + case ENOTDIR: + case EACCES: + case ENAMETOOLONG: + break; + default: + /* Any negative value but -1 will inhibit + * futher path search. */ + return -2; + } + } + s += l; + } +} + +static int fixup_rpath(struct dso *p, char *buf, size_t buf_size) +{ + size_t n, l; + const char *s, *t, *origin; + char *d; + if (p->rpath || !p->rpath_orig) return 0; + if (!strchr(p->rpath_orig, '$')) { + p->rpath = p->rpath_orig; + return 0; + } + n = 0; + s = p->rpath_orig; + while ((t=strchr(s, '$'))) { + if (strncmp(t, "$ORIGIN", 7) && strncmp(t, "${ORIGIN}", 9)) + return 0; + s = t+1; + n++; + } + if (n > SSIZE_MAX/PATH_MAX) return 0; + + if (p->kernel_mapped) { + /* $ORIGIN searches cannot be performed for the main program + * when it is suid/sgid/AT_SECURE. This is because the + * pathname is under the control of the caller of execve. + * For libraries, however, $ORIGIN can be processed safely + * since the library's pathname came from a trusted source + * (either system paths or a call to dlopen). */ + if (libc.secure) + return 0; + l = readlink("/proc/self/exe", buf, buf_size); + if (l == -1) switch (errno) { + case ENOENT: + case ENOTDIR: + case EACCES: + break; + default: + return -1; + } + if (l >= buf_size) + return 0; + buf[l] = 0; + origin = buf; + } else { + origin = p->name; + } + t = strrchr(origin, '/'); + if (t) { + l = t-origin; + } else { + /* Normally p->name will always be an absolute or relative + * pathname containing at least one '/' character, but in the + * case where ldso was invoked as a command to execute a + * program in the working directory, app.name may not. Fix. */ + origin = "."; + l = 1; + } + /* Disallow non-absolute origins for suid/sgid/AT_SECURE. */ + if (libc.secure && *origin != '/') + return 0; + p->rpath = malloc(strlen(p->rpath_orig) + n*l + 1); + if (!p->rpath) return -1; + + d = p->rpath; + s = p->rpath_orig; + while ((t=strchr(s, '$'))) { + memcpy(d, s, t-s); + d += t-s; + memcpy(d, origin, l); + d += l; + /* It was determined previously that the '$' is followed + * either by "ORIGIN" or "{ORIGIN}". */ + s = t + 7 + 2*(t[1]=='{'); + } + strcpy(d, s); + return 0; +} + +static void decode_dyn(struct dso *p) +{ + size_t dyn[DYN_CNT]; + decode_vec(p->dynv, dyn, DYN_CNT); + p->syms = laddr(p, dyn[DT_SYMTAB]); + p->strings = laddr(p, dyn[DT_STRTAB]); + if (dyn[0]&(1<hashtab = laddr(p, dyn[DT_HASH]); + if (dyn[0]&(1<rpath_orig = p->strings + dyn[DT_RPATH]; + if (dyn[0]&(1<rpath_orig = p->strings + dyn[DT_RUNPATH]; + if (dyn[0]&(1<got = laddr(p, dyn[DT_PLTGOT]); + if (search_vec(p->dynv, dyn, DT_GNU_HASH)) + p->ghashtab = laddr(p, *dyn); + if (search_vec(p->dynv, dyn, DT_VERSYM)) + p->versym = laddr(p, *dyn); +} + +static size_t count_syms(struct dso *p) +{ + if (p->hashtab) return p->hashtab[1]; + + size_t nsym, i; + uint32_t *buckets = p->ghashtab + 4 + (p->ghashtab[2]*sizeof(size_t)/4); + uint32_t *hashval; + for (i = nsym = 0; i < p->ghashtab[0]; i++) { + if (buckets[i] > nsym) + nsym = buckets[i]; + } + if (nsym) { + hashval = buckets + p->ghashtab[0] + (nsym - p->ghashtab[1]); + do nsym++; + while (!(*hashval++ & 1)); + } + return nsym; +} + +static void *dl_mmap(size_t n) +{ + void *p; + int prot = PROT_READ|PROT_WRITE, flags = MAP_ANONYMOUS|MAP_PRIVATE; +#ifdef SYS_mmap2 + p = (void *)__syscall(SYS_mmap2, 0, n, prot, flags, -1, 0); +#else + p = (void *)__syscall(SYS_mmap, 0, n, prot, flags, -1, 0); +#endif + return (unsigned long)p > -4096UL ? 0 : p; +} + +static void makefuncdescs(struct dso *p) +{ + static int self_done; + size_t nsym = count_syms(p); + size_t i, size = nsym * sizeof(*p->funcdescs); + + if (!self_done) { + p->funcdescs = dl_mmap(size); + self_done = 1; + } else { + p->funcdescs = malloc(size); + } + if (!p->funcdescs) { + if (!runtime) a_crash(); + error("Error allocating function descriptors for %s", p->name); + longjmp(*rtld_fail, 1); + } + for (i=0; isyms[i].st_info&0xf)==STT_FUNC && p->syms[i].st_shndx) { + p->funcdescs[i].addr = laddr(p, p->syms[i].st_value); + p->funcdescs[i].got = p->got; + } else { + p->funcdescs[i].addr = 0; + p->funcdescs[i].got = 0; + } + } +} + +static struct dso *load_library(const char *name, struct dso *needed_by) +{ + char buf[2*NAME_MAX+2]; + const char *pathname; + unsigned char *map; + struct dso *p, temp_dso = {0}; + int fd; + struct stat st; + size_t alloc_size; + int n_th = 0; + int is_self = 0; + + if (!*name) { + errno = EINVAL; + return 0; + } + + /* Catch and block attempts to reload the implementation itself */ + if (name[0]=='l' && name[1]=='i' && name[2]=='b') { + static const char reserved[] = + "c.pthread.rt.m.dl.util.xnet."; + const char *rp, *next; + for (rp=reserved; *rp; rp=next) { + next = strchr(rp, '.') + 1; + if (strncmp(name+3, rp, next-rp) == 0) + break; + } + if (*rp) { + if (ldd_mode) { + /* Track which names have been resolved + * and only report each one once. */ + static unsigned reported; + unsigned mask = 1U<<(rp-reserved); + if (!(reported & mask)) { + reported |= mask; + dprintf(1, "\t%s => %s (%p)\n", + name, ldso.name, + ldso.base); + } + } + is_self = 1; + } + } + if (!strcmp(name, ldso.name)) is_self = 1; + if (is_self) { + if (!ldso.prev) { + tail->next = &ldso; + ldso.prev = tail; + tail = &ldso; + } + return &ldso; + } + if (strchr(name, '/')) { + pathname = name; + fd = open(name, O_RDONLY|O_CLOEXEC); + } else { + /* Search for the name to see if it's already loaded */ + for (p=head->next; p; p=p->next) { + if (p->shortname && !strcmp(p->shortname, name)) { + return p; + } + } + if (strlen(name) > NAME_MAX) return 0; + fd = -1; + if (env_path) fd = path_open(name, env_path, buf, sizeof buf); + for (p=needed_by; fd == -1 && p; p=p->needed_by) { + if (fixup_rpath(p, buf, sizeof buf) < 0) + fd = -2; /* Inhibit further search. */ + if (p->rpath) + fd = path_open(name, p->rpath, buf, sizeof buf); + } + if (fd == -1) { + if (!sys_path) { + char *prefix = 0; + size_t prefix_len; + if (ldso.name[0]=='/') { + char *s, *t, *z; + for (s=t=z=ldso.name; *s; s++) + if (*s=='/') z=t, t=s; + prefix_len = z-ldso.name; + if (prefix_len < PATH_MAX) + prefix = ldso.name; + } + if (!prefix) { + prefix = ""; + prefix_len = 0; + } + char etc_ldso_path[prefix_len + 1 + + sizeof "/etc/ld-musl-" LDSO_ARCH ".path"]; + snprintf(etc_ldso_path, sizeof etc_ldso_path, + "%.*s/etc/ld-musl-" LDSO_ARCH ".path", + (int)prefix_len, prefix); + FILE *f = fopen(etc_ldso_path, "rbe"); + if (f) { + if (getdelim(&sys_path, (size_t[1]){0}, 0, f) <= 0) { + free(sys_path); + sys_path = ""; + } + fclose(f); + } else if (errno != ENOENT) { + sys_path = ""; + } + } + if (!sys_path) sys_path = "/lib:/usr/local/lib:/usr/lib"; + fd = path_open(name, sys_path, buf, sizeof buf); + } + pathname = buf; + } + if (fd < 0) return 0; + if (fstat(fd, &st) < 0) { + close(fd); + return 0; + } + for (p=head->next; p; p=p->next) { + if (p->dev == st.st_dev && p->ino == st.st_ino) { + /* If this library was previously loaded with a + * pathname but a search found the same inode, + * setup its shortname so it can be found by name. */ + if (!p->shortname && pathname != name) + p->shortname = strrchr(p->name, '/')+1; + close(fd); + return p; + } + } + map = noload ? 0 : map_library(fd, &temp_dso); + close(fd); + if (!map) return 0; + + /* Avoid the danger of getting two versions of libc mapped into the + * same process when an absolute pathname was used. The symbols + * checked are chosen to catch both musl and glibc, and to avoid + * false positives from interposition-hack libraries. */ + decode_dyn(&temp_dso); + if (find_sym(&temp_dso, "__libc_start_main", 1).sym && + find_sym(&temp_dso, "stdin", 1).sym) { + unmap_library(&temp_dso); + return load_library("libc.so", needed_by); + } + /* Past this point, if we haven't reached runtime yet, ldso has + * committed either to use the mapped library or to abort execution. + * Unmapping is not possible, so we can safely reclaim gaps. */ + if (!runtime) reclaim_gaps(&temp_dso); + + /* Allocate storage for the new DSO. When there is TLS, this + * storage must include a reservation for all pre-existing + * threads to obtain copies of both the new TLS, and an + * extended DTV capable of storing an additional slot for + * the newly-loaded DSO. */ + alloc_size = sizeof *p + strlen(pathname) + 1; + if (runtime && temp_dso.tls.image) { + size_t per_th = temp_dso.tls.size + temp_dso.tls.align + + sizeof(void *) * (tls_cnt+3); + n_th = libc.threads_minus_1 + 1; + if (n_th > SSIZE_MAX / per_th) alloc_size = SIZE_MAX; + else alloc_size += n_th * per_th; + } + p = calloc(1, alloc_size); + if (!p) { + unmap_library(&temp_dso); + return 0; + } + memcpy(p, &temp_dso, sizeof temp_dso); + p->dev = st.st_dev; + p->ino = st.st_ino; + p->needed_by = needed_by; + p->name = p->buf; + p->runtime_loaded = runtime; + strcpy(p->name, pathname); + /* Add a shortname only if name arg was not an explicit pathname. */ + if (pathname != name) p->shortname = strrchr(p->name, '/')+1; + if (p->tls.image) { + p->tls_id = ++tls_cnt; + tls_align = MAXP2(tls_align, p->tls.align); +#ifdef TLS_ABOVE_TP + p->tls.offset = tls_offset + ( (p->tls.align-1) & + (-tls_offset + (uintptr_t)p->tls.image) ); + tls_offset = p->tls.offset + p->tls.size; +#else + tls_offset += p->tls.size + p->tls.align - 1; + tls_offset -= (tls_offset + (uintptr_t)p->tls.image) + & (p->tls.align-1); + p->tls.offset = tls_offset; +#endif + p->new_dtv = (void *)(-sizeof(size_t) & + (uintptr_t)(p->name+strlen(p->name)+sizeof(size_t))); + p->new_tls = (void *)(p->new_dtv + n_th*(tls_cnt+1)); + if (tls_tail) tls_tail->next = &p->tls; + else libc.tls_head = &p->tls; + tls_tail = &p->tls; + } + + tail->next = p; + p->prev = tail; + tail = p; + + if (DL_FDPIC) makefuncdescs(p); + + if (ldd_mode) dprintf(1, "\t%s => %s (%p)\n", name, pathname, p->base); + + return p; +} + +static void load_direct_deps(struct dso *p) +{ + size_t i, cnt=0; + + if (p->deps) return; + /* For head, all preloads are direct pseudo-dependencies. + * Count and include them now to avoid realloc later. */ + if (p==head) for (struct dso *q=p->next; q; q=q->next) + cnt++; + for (i=0; p->dynv[i]; i+=2) + if (p->dynv[i] == DT_NEEDED) cnt++; + /* Use builtin buffer for apps with no external deps, to + * preserve property of no runtime failure paths. */ + p->deps = (p==head && cnt<2) ? builtin_deps : + calloc(cnt+1, sizeof *p->deps); + if (!p->deps) { + error("Error loading dependencies for %s", p->name); + if (runtime) longjmp(*rtld_fail, 1); + } + cnt=0; + if (p==head) for (struct dso *q=p->next; q; q=q->next) + p->deps[cnt++] = q; + for (i=0; p->dynv[i]; i+=2) { + if (p->dynv[i] != DT_NEEDED) continue; + struct dso *dep = load_library(p->strings + p->dynv[i+1], p); + if (!dep) { + error("Error loading shared library %s: %m (needed by %s)", + p->strings + p->dynv[i+1], p->name); + if (runtime) longjmp(*rtld_fail, 1); + continue; + } + p->deps[cnt++] = dep; + } + p->deps[cnt] = 0; + p->ndeps_direct = cnt; +} + +static void load_deps(struct dso *p) +{ + if (p->deps) return; + for (; p; p=p->next) + load_direct_deps(p); +} + +static void extend_bfs_deps(struct dso *p) +{ + size_t i, j, cnt, ndeps_all; + struct dso **tmp; + + /* Can't use realloc if the original p->deps was allocated at + * program entry and malloc has been replaced, or if it's + * the builtin non-allocated trivial main program deps array. */ + int no_realloc = (__malloc_replaced && !p->runtime_loaded) + || p->deps == builtin_deps; + + if (p->bfs_built) return; + ndeps_all = p->ndeps_direct; + + /* Mark existing (direct) deps so they won't be duplicated. */ + for (i=0; p->deps[i]; i++) + p->deps[i]->mark = 1; + + /* For each dependency already in the list, copy its list of direct + * dependencies to the list, excluding any items already in the + * list. Note that the list this loop iterates over will grow during + * the loop, but since duplicates are excluded, growth is bounded. */ + for (i=0; p->deps[i]; i++) { + struct dso *dep = p->deps[i]; + for (j=cnt=0; jndeps_direct; j++) + if (!dep->deps[j]->mark) cnt++; + tmp = no_realloc ? + malloc(sizeof(*tmp) * (ndeps_all+cnt+1)) : + realloc(p->deps, sizeof(*tmp) * (ndeps_all+cnt+1)); + if (!tmp) { + error("Error recording dependencies for %s", p->name); + if (runtime) longjmp(*rtld_fail, 1); + continue; + } + if (no_realloc) { + memcpy(tmp, p->deps, sizeof(*tmp) * (ndeps_all+1)); + no_realloc = 0; + } + p->deps = tmp; + for (j=0; jndeps_direct; j++) { + if (dep->deps[j]->mark) continue; + dep->deps[j]->mark = 1; + p->deps[ndeps_all++] = dep->deps[j]; + } + p->deps[ndeps_all] = 0; + } + p->bfs_built = 1; + for (p=head; p; p=p->next) + p->mark = 0; +} + +static void load_preload(char *s) +{ + int tmp; + char *z; + for (z=s; *z; s=z) { + for ( ; *s && (isspace(*s) || *s==':'); s++); + for (z=s; *z && !isspace(*z) && *z!=':'; z++); + tmp = *z; + *z = 0; + load_library(s, 0); + *z = tmp; + } +} + +static void add_syms(struct dso *p) +{ + if (!p->syms_next && syms_tail != p) { + syms_tail->syms_next = p; + syms_tail = p; + } +} + +static void revert_syms(struct dso *old_tail) +{ + struct dso *p, *next; + /* Chop off the tail of the list of dsos that participate in + * the global symbol table, reverting them to RTLD_LOCAL. */ + for (p=old_tail; p; p=next) { + next = p->syms_next; + p->syms_next = 0; + } + syms_tail = old_tail; +} + +static void do_mips_relocs(struct dso *p, size_t *got) +{ + size_t i, j, rel[2]; + unsigned char *base = p->base; + i=0; search_vec(p->dynv, &i, DT_MIPS_LOCAL_GOTNO); + if (p==&ldso) { + got += i; + } else { + while (i--) *got++ += (size_t)base; + } + j=0; search_vec(p->dynv, &j, DT_MIPS_GOTSYM); + i=0; search_vec(p->dynv, &i, DT_MIPS_SYMTABNO); + Sym *sym = p->syms + j; + rel[0] = (unsigned char *)got - base; + for (i-=j; i; i--, sym++, rel[0]+=sizeof(size_t)) { + rel[1] = R_INFO(sym-p->syms, R_MIPS_JUMP_SLOT); + do_relocs(p, rel, sizeof rel, 2); + } +} + +static void reloc_all(struct dso *p) +{ + size_t dyn[DYN_CNT]; + for (; p; p=p->next) { + if (p->relocated) continue; + decode_vec(p->dynv, dyn, DYN_CNT); + if (NEED_MIPS_GOT_RELOCS) + do_mips_relocs(p, laddr(p, dyn[DT_PLTGOT])); + do_relocs(p, laddr(p, dyn[DT_JMPREL]), dyn[DT_PLTRELSZ], + 2+(dyn[DT_PLTREL]==DT_RELA)); + do_relocs(p, laddr(p, dyn[DT_REL]), dyn[DT_RELSZ], 2); + do_relocs(p, laddr(p, dyn[DT_RELA]), dyn[DT_RELASZ], 3); + + if (head != &ldso && p->relro_start != p->relro_end && + mprotect(laddr(p, p->relro_start), p->relro_end-p->relro_start, PROT_READ) + && errno != ENOSYS) { + error("Error relocating %s: RELRO protection failed: %m", + p->name); + if (runtime) longjmp(*rtld_fail, 1); + } + + p->relocated = 1; + } +} + +static void kernel_mapped_dso(struct dso *p) +{ + size_t min_addr = -1, max_addr = 0, cnt; + Phdr *ph = p->phdr; + for (cnt = p->phnum; cnt--; ph = (void *)((char *)ph + p->phentsize)) { + if (ph->p_type == PT_DYNAMIC) { + p->dynv = laddr(p, ph->p_vaddr); + } else if (ph->p_type == PT_GNU_RELRO) { + p->relro_start = ph->p_vaddr & -PAGE_SIZE; + p->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE; + } else if (ph->p_type == PT_GNU_STACK) { + if (!runtime && ph->p_memsz > __default_stacksize) { + __default_stacksize = + ph->p_memsz < DEFAULT_STACK_MAX ? + ph->p_memsz : DEFAULT_STACK_MAX; + } + } + if (ph->p_type != PT_LOAD) continue; + if (ph->p_vaddr < min_addr) + min_addr = ph->p_vaddr; + if (ph->p_vaddr+ph->p_memsz > max_addr) + max_addr = ph->p_vaddr+ph->p_memsz; + } + min_addr &= -PAGE_SIZE; + max_addr = (max_addr + PAGE_SIZE-1) & -PAGE_SIZE; + p->map = p->base + min_addr; + p->map_len = max_addr - min_addr; + p->kernel_mapped = 1; +} + +void __libc_exit_fini() +{ + struct dso *p; + size_t dyn[DYN_CNT]; + int self = __pthread_self()->tid; + + /* Take both locks before setting shutting_down, so that + * either lock is sufficient to read its value. The lock + * order matches that in dlopen to avoid deadlock. */ + pthread_rwlock_wrlock(&lock); + pthread_mutex_lock(&init_fini_lock); + shutting_down = 1; + pthread_rwlock_unlock(&lock); + for (p=fini_head; p; p=p->fini_next) { + while (p->ctor_visitor && p->ctor_visitor!=self) + pthread_cond_wait(&ctor_cond, &init_fini_lock); + if (!p->constructed) continue; + decode_vec(p->dynv, dyn, DYN_CNT); + if (dyn[0] & (1<bfs_built) { + for (cnt=0; dso->deps[cnt]; cnt++) + dso->deps[cnt]->mark = 0; + cnt++; /* self, not included in deps */ + } else { + for (cnt=0, p=head; p; cnt++, p=p->next) + p->mark = 0; + } + cnt++; /* termination slot */ + if (dso==head && cnt <= countof(builtin_ctor_queue)) + queue = builtin_ctor_queue; + else + queue = calloc(cnt, sizeof *queue); + + if (!queue) { + error("Error allocating constructor queue: %m\n"); + if (runtime) longjmp(*rtld_fail, 1); + return 0; + } + + /* Opposite ends of the allocated buffer serve as an output queue + * and a working stack. Setup initial stack with just the argument + * dso and initial queue empty... */ + stack = queue; + qpos = 0; + spos = cnt; + stack[--spos] = dso; + dso->next_dep = 0; + dso->mark = 1; + + /* Then perform pseudo-DFS sort, but ignoring circular deps. */ + while (sposnext_dep < p->ndeps_direct) { + if (p->deps[p->next_dep]->mark) { + p->next_dep++; + } else { + stack[--spos] = p; + p = p->deps[p->next_dep]; + p->next_dep = 0; + p->mark = 1; + } + } + queue[qpos++] = p; + } + queue[qpos] = 0; + for (i=0; imark = 0; + + return queue; +} + +static void do_init_fini(struct dso **queue) +{ + struct dso *p; + size_t dyn[DYN_CNT], i; + int self = __pthread_self()->tid; + + pthread_mutex_lock(&init_fini_lock); + for (i=0; (p=queue[i]); i++) { + while ((p->ctor_visitor && p->ctor_visitor!=self) || shutting_down) + pthread_cond_wait(&ctor_cond, &init_fini_lock); + if (p->ctor_visitor || p->constructed) + continue; + p->ctor_visitor = self; + + decode_vec(p->dynv, dyn, DYN_CNT); + if (dyn[0] & ((1<fini_next = fini_head; + fini_head = p; + } + + pthread_mutex_unlock(&init_fini_lock); + +#ifndef NO_LEGACY_INITFINI + if ((dyn[0] & (1<ctor_visitor = 0; + p->constructed = 1; + pthread_cond_broadcast(&ctor_cond); + } + pthread_mutex_unlock(&init_fini_lock); +} + +void __libc_start_init(void) +{ + do_init_fini(main_ctor_queue); + if (!__malloc_replaced && main_ctor_queue != builtin_ctor_queue) + free(main_ctor_queue); + main_ctor_queue = 0; +} + +static void dl_debug_state(void) +{ +} + +weak_alias(dl_debug_state, _dl_debug_state); + +void __init_tls(size_t *auxv) +{ +} + +static void update_tls_size() +{ + libc.tls_cnt = tls_cnt; + libc.tls_align = tls_align; + libc.tls_size = ALIGN( + (1+tls_cnt) * sizeof(void *) + + tls_offset + + sizeof(struct pthread) + + tls_align * 2, + tls_align); +} + +static void install_new_tls(void) +{ + sigset_t set; + pthread_t self = __pthread_self(), td; + struct dso *dtv_provider = container_of(tls_tail, struct dso, tls); + uintptr_t (*newdtv)[tls_cnt+1] = (void *)dtv_provider->new_dtv; + struct dso *p; + size_t i, j; + size_t old_cnt = self->dtv[0]; + + __block_app_sigs(&set); + __tl_lock(); + /* Copy existing dtv contents from all existing threads. */ + for (i=0, td=self; !i || td!=self; i++, td=td->next) { + memcpy(newdtv+i, td->dtv, + (old_cnt+1)*sizeof(uintptr_t)); + newdtv[i][0] = tls_cnt; + } + /* Install new dtls into the enlarged, uninstalled dtv copies. */ + for (p=head; ; p=p->next) { + if (p->tls_id <= old_cnt) continue; + unsigned char *mem = p->new_tls; + for (j=0; jtls.image - (uintptr_t)mem) + & (p->tls.align-1); + memcpy(new, p->tls.image, p->tls.len); + newdtv[j][p->tls_id] = + (uintptr_t)new + DTP_OFFSET; + mem += p->tls.size + p->tls.align; + } + if (p->tls_id == tls_cnt) break; + } + + /* Broadcast barrier to ensure contents of new dtv is visible + * if the new dtv pointer is. The __membarrier function has a + * fallback emulation using signals for kernels that lack the + * feature at the syscall level. */ + + __membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED, 0); + + /* Install new dtv for each thread. */ + for (j=0, td=self; !j || td!=self; j++, td=td->next) { + td->dtv = td->dtv_copy = newdtv[j]; + } + + __tl_unlock(); + __restore_sigs(&set); +} + +/* Stage 1 of the dynamic linker is defined in dlstart.c. It calls the + * following stage 2 and stage 3 functions via primitive symbolic lookup + * since it does not have access to their addresses to begin with. */ + +/* Stage 2 of the dynamic linker is called after relative relocations + * have been processed. It can make function calls to static functions + * and access string literals and static data, but cannot use extern + * symbols. Its job is to perform symbolic relocations on the dynamic + * linker itself, but some of the relocations performed may need to be + * replaced later due to copy relocations in the main program. */ + +hidden void __dls2(unsigned char *base, size_t *sp) +{ + size_t *auxv; + for (auxv=sp+1+*sp+1; *auxv; auxv++); + auxv++; + if (DL_FDPIC) { + void *p1 = (void *)sp[-2]; + void *p2 = (void *)sp[-1]; + if (!p1) { + size_t aux[AUX_CNT]; + decode_vec(auxv, aux, AUX_CNT); + if (aux[AT_BASE]) ldso.base = (void *)aux[AT_BASE]; + else ldso.base = (void *)(aux[AT_PHDR] & -4096); + } + app_loadmap = p2 ? p1 : 0; + ldso.loadmap = p2 ? p2 : p1; + ldso.base = laddr(&ldso, 0); + } else { + ldso.base = base; + } + Ehdr *ehdr = (void *)ldso.base; + ldso.name = ldso.shortname = "libc.so"; + ldso.phnum = ehdr->e_phnum; + ldso.phdr = laddr(&ldso, ehdr->e_phoff); + ldso.phentsize = ehdr->e_phentsize; + kernel_mapped_dso(&ldso); + decode_dyn(&ldso); + + if (DL_FDPIC) makefuncdescs(&ldso); + + /* Prepare storage for to save clobbered REL addends so they + * can be reused in stage 3. There should be very few. If + * something goes wrong and there are a huge number, abort + * instead of risking stack overflow. */ + size_t dyn[DYN_CNT]; + decode_vec(ldso.dynv, dyn, DYN_CNT); + size_t *rel = laddr(&ldso, dyn[DT_REL]); + size_t rel_size = dyn[DT_RELSZ]; + size_t symbolic_rel_cnt = 0; + apply_addends_to = rel; + for (; rel_size; rel+=2, rel_size-=2*sizeof(size_t)) + if (!IS_RELATIVE(rel[1], ldso.syms)) symbolic_rel_cnt++; + if (symbolic_rel_cnt >= ADDEND_LIMIT) a_crash(); + size_t addends[symbolic_rel_cnt+1]; + saved_addends = addends; + + head = &ldso; + reloc_all(&ldso); + + ldso.relocated = 0; + + /* Call dynamic linker stage-2b, __dls2b, looking it up + * symbolically as a barrier against moving the address + * load across the above relocation processing. */ + struct symdef dls2b_def = find_sym(&ldso, "__dls2b", 0); + if (DL_FDPIC) ((stage3_func)&ldso.funcdescs[dls2b_def.sym-ldso.syms])(sp, auxv); + else ((stage3_func)laddr(&ldso, dls2b_def.sym->st_value))(sp, auxv); +} + +/* Stage 2b sets up a valid thread pointer, which requires relocations + * completed in stage 2, and on which stage 3 is permitted to depend. + * This is done as a separate stage, with symbolic lookup as a barrier, + * so that loads of the thread pointer and &errno can be pure/const and + * thereby hoistable. */ + +void __dls2b(size_t *sp, size_t *auxv) +{ + /* Setup early thread pointer in builtin_tls for ldso/libc itself to + * use during dynamic linking. If possible it will also serve as the + * thread pointer at runtime. */ + search_vec(auxv, &__hwcap, AT_HWCAP); + libc.auxv = auxv; + libc.tls_size = sizeof builtin_tls; + libc.tls_align = tls_align; + if (__init_tp(__copy_tls((void *)builtin_tls)) < 0) { + a_crash(); + } + + struct symdef dls3_def = find_sym(&ldso, "__dls3", 0); + if (DL_FDPIC) ((stage3_func)&ldso.funcdescs[dls3_def.sym-ldso.syms])(sp, auxv); + else ((stage3_func)laddr(&ldso, dls3_def.sym->st_value))(sp, auxv); +} + +/* Stage 3 of the dynamic linker is called with the dynamic linker/libc + * fully functional. Its job is to load (if not already loaded) and + * process dependencies and relocations for the main application and + * transfer control to its entry point. */ + +void __dls3(size_t *sp, size_t *auxv) +{ + static struct dso app, vdso; + size_t aux[AUX_CNT]; + size_t i; + char *env_preload=0; + char *replace_argv0=0; + size_t vdso_base; + int argc = *sp; + char **argv = (void *)(sp+1); + char **argv_orig = argv; + char **envp = argv+argc+1; + + /* Find aux vector just past environ[] and use it to initialize + * global data that may be needed before we can make syscalls. */ + __environ = envp; + decode_vec(auxv, aux, AUX_CNT); + search_vec(auxv, &__sysinfo, AT_SYSINFO); + __pthread_self()->sysinfo = __sysinfo; + libc.page_size = aux[AT_PAGESZ]; + libc.secure = ((aux[0]&0x7800)!=0x7800 || aux[AT_UID]!=aux[AT_EUID] + || aux[AT_GID]!=aux[AT_EGID] || aux[AT_SECURE]); + + /* Only trust user/env if kernel says we're not suid/sgid */ + if (!libc.secure) { + env_path = getenv("LD_LIBRARY_PATH"); + env_preload = getenv("LD_PRELOAD"); + } + + /* If the main program was already loaded by the kernel, + * AT_PHDR will point to some location other than the dynamic + * linker's program headers. */ + if (aux[AT_PHDR] != (size_t)ldso.phdr) { + size_t interp_off = 0; + size_t tls_image = 0; + /* Find load address of the main program, via AT_PHDR vs PT_PHDR. */ + Phdr *phdr = app.phdr = (void *)aux[AT_PHDR]; + app.phnum = aux[AT_PHNUM]; + app.phentsize = aux[AT_PHENT]; + for (i=aux[AT_PHNUM]; i; i--, phdr=(void *)((char *)phdr + aux[AT_PHENT])) { + if (phdr->p_type == PT_PHDR) + app.base = (void *)(aux[AT_PHDR] - phdr->p_vaddr); + else if (phdr->p_type == PT_INTERP) + interp_off = (size_t)phdr->p_vaddr; + else if (phdr->p_type == PT_TLS) { + tls_image = phdr->p_vaddr; + app.tls.len = phdr->p_filesz; + app.tls.size = phdr->p_memsz; + app.tls.align = phdr->p_align; + } + } + if (DL_FDPIC) app.loadmap = app_loadmap; + if (app.tls.size) app.tls.image = laddr(&app, tls_image); + if (interp_off) ldso.name = laddr(&app, interp_off); + if ((aux[0] & (1UL<= 3 && !strcmp(ldname+l-3, "ldd")) ldd_mode = 1; + argv++; + while (argv[0] && argv[0][0]=='-' && argv[0][1]=='-') { + char *opt = argv[0]+2; + *argv++ = (void *)-1; + if (!*opt) { + break; + } else if (!memcmp(opt, "list", 5)) { + ldd_mode = 1; + } else if (!memcmp(opt, "library-path", 12)) { + if (opt[12]=='=') env_path = opt+13; + else if (opt[12]) *argv = 0; + else if (*argv) env_path = *argv++; + } else if (!memcmp(opt, "preload", 7)) { + if (opt[7]=='=') env_preload = opt+8; + else if (opt[7]) *argv = 0; + else if (*argv) env_preload = *argv++; + } else if (!memcmp(opt, "argv0", 5)) { + if (opt[5]=='=') replace_argv0 = opt+6; + else if (opt[5]) *argv = 0; + else if (*argv) replace_argv0 = *argv++; + } else { + argv[0] = 0; + } + } + argv[-1] = (void *)(argc - (argv-argv_orig)); + if (!argv[0]) { + dprintf(2, "musl libc (" LDSO_ARCH ")\n" + "Version %s\n" + "Dynamic Program Loader\n" + "Usage: %s [options] [--] pathname%s\n", + __libc_version, ldname, + ldd_mode ? "" : " [args]"); + _exit(1); + } + fd = open(argv[0], O_RDONLY); + if (fd < 0) { + dprintf(2, "%s: cannot load %s: %s\n", ldname, argv[0], strerror(errno)); + _exit(1); + } + Ehdr *ehdr = (void *)map_library(fd, &app); + if (!ehdr) { + dprintf(2, "%s: %s: Not a valid dynamic program\n", ldname, argv[0]); + _exit(1); + } + close(fd); + ldso.name = ldname; + app.name = argv[0]; + aux[AT_ENTRY] = (size_t)laddr(&app, ehdr->e_entry); + /* Find the name that would have been used for the dynamic + * linker had ldd not taken its place. */ + if (ldd_mode) { + for (i=0; insegs = 1; + app.loadmap->segs[0].addr = (size_t)app.map; + app.loadmap->segs[0].p_vaddr = (size_t)app.map + - (size_t)app.base; + app.loadmap->segs[0].p_memsz = app.map_len; + } + argv[-3] = (void *)app.loadmap; + } + + /* Initial dso chain consists only of the app. */ + head = tail = syms_tail = &app; + + /* Donate unused parts of app and library mapping to malloc */ + reclaim_gaps(&app); + reclaim_gaps(&ldso); + + /* Load preload/needed libraries, add symbols to global namespace. */ + ldso.deps = (struct dso **)no_deps; + if (env_preload) load_preload(env_preload); + load_deps(&app); + for (struct dso *p=head; p; p=p->next) + add_syms(p); + + /* Attach to vdso, if provided by the kernel, last so that it does + * not become part of the global namespace. */ + if (search_vec(auxv, &vdso_base, AT_SYSINFO_EHDR) && vdso_base) { + Ehdr *ehdr = (void *)vdso_base; + Phdr *phdr = vdso.phdr = (void *)(vdso_base + ehdr->e_phoff); + vdso.phnum = ehdr->e_phnum; + vdso.phentsize = ehdr->e_phentsize; + for (i=ehdr->e_phnum; i; i--, phdr=(void *)((char *)phdr + ehdr->e_phentsize)) { + if (phdr->p_type == PT_DYNAMIC) + vdso.dynv = (void *)(vdso_base + phdr->p_offset); + if (phdr->p_type == PT_LOAD) + vdso.base = (void *)(vdso_base - phdr->p_vaddr + phdr->p_offset); + } + vdso.name = ""; + vdso.shortname = "linux-gate.so.1"; + vdso.relocated = 1; + vdso.deps = (struct dso **)no_deps; + decode_dyn(&vdso); + vdso.prev = tail; + tail->next = &vdso; + tail = &vdso; + } + + for (i=0; app.dynv[i]; i+=2) { + if (!DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG) + app.dynv[i+1] = (size_t)&debug; + if (DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG_INDIRECT) { + size_t *ptr = (size_t *) app.dynv[i+1]; + *ptr = (size_t)&debug; + } + } + + /* This must be done before final relocations, since it calls + * malloc, which may be provided by the application. Calling any + * application code prior to the jump to its entry point is not + * valid in our model and does not work with FDPIC, where there + * are additional relocation-like fixups that only the entry point + * code can see to perform. */ + main_ctor_queue = queue_ctors(&app); + + /* Initial TLS must also be allocated before final relocations + * might result in calloc being a call to application code. */ + update_tls_size(); + void *initial_tls = builtin_tls; + if (libc.tls_size > sizeof builtin_tls || tls_align > MIN_TLS_ALIGN) { + initial_tls = calloc(libc.tls_size, 1); + if (!initial_tls) { + dprintf(2, "%s: Error getting %zu bytes thread-local storage: %m\n", + argv[0], libc.tls_size); + _exit(127); + } + } + static_tls_cnt = tls_cnt; + + /* The main program must be relocated LAST since it may contain + * copy relocations which depend on libraries' relocations. */ + reloc_all(app.next); + reloc_all(&app); + + /* Actual copying to new TLS needs to happen after relocations, + * since the TLS images might have contained relocated addresses. */ + if (initial_tls != builtin_tls) { + if (__init_tp(__copy_tls(initial_tls)) < 0) { + a_crash(); + } + } else { + size_t tmp_tls_size = libc.tls_size; + pthread_t self = __pthread_self(); + /* Temporarily set the tls size to the full size of + * builtin_tls so that __copy_tls will use the same layout + * as it did for before. Then check, just to be safe. */ + libc.tls_size = sizeof builtin_tls; + if (__copy_tls((void*)builtin_tls) != self) a_crash(); + libc.tls_size = tmp_tls_size; + } + + if (ldso_fail) _exit(127); + if (ldd_mode) _exit(0); + + /* Determine if malloc was interposed by a replacement implementation + * so that calloc and the memalign family can harden against the + * possibility of incomplete replacement. */ + if (find_sym(head, "malloc", 1).dso != &ldso) + __malloc_replaced = 1; + if (find_sym(head, "aligned_alloc", 1).dso != &ldso) + __aligned_alloc_replaced = 1; + + /* Switch to runtime mode: any further failures in the dynamic + * linker are a reportable failure rather than a fatal startup + * error. */ + runtime = 1; + + debug.ver = 1; + debug.bp = dl_debug_state; + debug.head = head; + debug.base = ldso.base; + debug.state = 0; + _dl_debug_state(); + + if (replace_argv0) argv[0] = replace_argv0; + + errno = 0; + + CRTJMP((void *)aux[AT_ENTRY], argv-1); + for(;;); +} + +static void prepare_lazy(struct dso *p) +{ + size_t dyn[DYN_CNT], n, flags1=0; + decode_vec(p->dynv, dyn, DYN_CNT); + search_vec(p->dynv, &flags1, DT_FLAGS_1); + if (dyn[DT_BIND_NOW] || (dyn[DT_FLAGS] & DF_BIND_NOW) || (flags1 & DF_1_NOW)) + return; + n = dyn[DT_RELSZ]/2 + dyn[DT_RELASZ]/3 + dyn[DT_PLTRELSZ]/2 + 1; + if (NEED_MIPS_GOT_RELOCS) { + size_t j=0; search_vec(p->dynv, &j, DT_MIPS_GOTSYM); + size_t i=0; search_vec(p->dynv, &i, DT_MIPS_SYMTABNO); + n += i-j; + } + p->lazy = calloc(n, 3*sizeof(size_t)); + if (!p->lazy) { + error("Error preparing lazy relocation for %s: %m", p->name); + longjmp(*rtld_fail, 1); + } + p->lazy_next = lazy_head; + lazy_head = p; +} + +void *dlopen(const char *file, int mode) +{ + struct dso *volatile p, *orig_tail, *orig_syms_tail, *orig_lazy_head, *next; + struct tls_module *orig_tls_tail; + size_t orig_tls_cnt, orig_tls_offset, orig_tls_align; + size_t i; + int cs; + jmp_buf jb; + struct dso **volatile ctor_queue = 0; + + if (!file) return head; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + pthread_rwlock_wrlock(&lock); + __inhibit_ptc(); + + p = 0; + if (shutting_down) { + error("Cannot dlopen while program is exiting."); + goto end; + } + orig_tls_tail = tls_tail; + orig_tls_cnt = tls_cnt; + orig_tls_offset = tls_offset; + orig_tls_align = tls_align; + orig_lazy_head = lazy_head; + orig_syms_tail = syms_tail; + orig_tail = tail; + noload = mode & RTLD_NOLOAD; + + rtld_fail = &jb; + if (setjmp(*rtld_fail)) { + /* Clean up anything new that was (partially) loaded */ + revert_syms(orig_syms_tail); + for (p=orig_tail->next; p; p=next) { + next = p->next; + while (p->td_index) { + void *tmp = p->td_index->next; + free(p->td_index); + p->td_index = tmp; + } + free(p->funcdescs); + if (p->rpath != p->rpath_orig) + free(p->rpath); + free(p->deps); + unmap_library(p); + free(p); + } + free(ctor_queue); + ctor_queue = 0; + if (!orig_tls_tail) libc.tls_head = 0; + tls_tail = orig_tls_tail; + if (tls_tail) tls_tail->next = 0; + tls_cnt = orig_tls_cnt; + tls_offset = orig_tls_offset; + tls_align = orig_tls_align; + lazy_head = orig_lazy_head; + tail = orig_tail; + tail->next = 0; + p = 0; + goto end; + } else p = load_library(file, head); + + if (!p) { + error(noload ? + "Library %s is not already loaded" : + "Error loading shared library %s: %m", + file); + goto end; + } + + /* First load handling */ + load_deps(p); + extend_bfs_deps(p); + pthread_mutex_lock(&init_fini_lock); + if (!p->constructed) ctor_queue = queue_ctors(p); + pthread_mutex_unlock(&init_fini_lock); + if (!p->relocated && (mode & RTLD_LAZY)) { + prepare_lazy(p); + for (i=0; p->deps[i]; i++) + if (!p->deps[i]->relocated) + prepare_lazy(p->deps[i]); + } + if (!p->relocated || (mode & RTLD_GLOBAL)) { + /* Make new symbols global, at least temporarily, so we can do + * relocations. If not RTLD_GLOBAL, this is reverted below. */ + add_syms(p); + for (i=0; p->deps[i]; i++) + add_syms(p->deps[i]); + } + if (!p->relocated) { + reloc_all(p); + } + + /* If RTLD_GLOBAL was not specified, undo any new additions + * to the global symbol table. This is a nop if the library was + * previously loaded and already global. */ + if (!(mode & RTLD_GLOBAL)) + revert_syms(orig_syms_tail); + + /* Processing of deferred lazy relocations must not happen until + * the new libraries are committed; otherwise we could end up with + * relocations resolved to symbol definitions that get removed. */ + redo_lazy_relocs(); + + update_tls_size(); + if (tls_cnt != orig_tls_cnt) + install_new_tls(); + _dl_debug_state(); + orig_tail = tail; +end: + __release_ptc(); + if (p) gencnt++; + pthread_rwlock_unlock(&lock); + if (ctor_queue) { + do_init_fini(ctor_queue); + free(ctor_queue); + } + pthread_setcancelstate(cs, 0); + return p; +} + +hidden int __dl_invalid_handle(void *h) +{ + struct dso *p; + for (p=head; p; p=p->next) if (h==p) return 0; + error("Invalid library handle %p", (void *)h); + return 1; +} + +static void *addr2dso(size_t a) +{ + struct dso *p; + size_t i; + if (DL_FDPIC) for (p=head; p; p=p->next) { + i = count_syms(p); + if (a-(size_t)p->funcdescs < i*sizeof(*p->funcdescs)) + return p; + } + for (p=head; p; p=p->next) { + if (DL_FDPIC && p->loadmap) { + for (i=0; iloadmap->nsegs; i++) { + if (a-p->loadmap->segs[i].p_vaddr + < p->loadmap->segs[i].p_memsz) + return p; + } + } else { + Phdr *ph = p->phdr; + size_t phcnt = p->phnum; + size_t entsz = p->phentsize; + size_t base = (size_t)p->base; + for (; phcnt--; ph=(void *)((char *)ph+entsz)) { + if (ph->p_type != PT_LOAD) continue; + if (a-base-ph->p_vaddr < ph->p_memsz) + return p; + } + if (a-(size_t)p->map < p->map_len) + return 0; + } + } + return 0; +} + +static void *do_dlsym(struct dso *p, const char *s, void *ra) +{ + int use_deps = 0; + if (p == head || p == RTLD_DEFAULT) { + p = head; + } else if (p == RTLD_NEXT) { + p = addr2dso((size_t)ra); + if (!p) p=head; + p = p->next; + } else if (__dl_invalid_handle(p)) { + return 0; + } else + use_deps = 1; + struct symdef def = find_sym2(p, s, 0, use_deps); + if (!def.sym) { + error("Symbol not found: %s", s); + return 0; + } + if ((def.sym->st_info&0xf) == STT_TLS) + return __tls_get_addr((tls_mod_off_t []){def.dso->tls_id, def.sym->st_value-DTP_OFFSET}); + if (DL_FDPIC && (def.sym->st_info&0xf) == STT_FUNC) + return def.dso->funcdescs + (def.sym - def.dso->syms); + return laddr(def.dso, def.sym->st_value); +} + +int dladdr(const void *addr_arg, Dl_info *info) +{ + size_t addr = (size_t)addr_arg; + struct dso *p; + Sym *sym, *bestsym; + uint32_t nsym; + char *strings; + size_t best = 0; + size_t besterr = -1; + + pthread_rwlock_rdlock(&lock); + p = addr2dso(addr); + pthread_rwlock_unlock(&lock); + + if (!p) return 0; + + sym = p->syms; + strings = p->strings; + nsym = count_syms(p); + + if (DL_FDPIC) { + size_t idx = (addr-(size_t)p->funcdescs) + / sizeof(*p->funcdescs); + if (idx < nsym && (sym[idx].st_info&0xf) == STT_FUNC) { + best = (size_t)(p->funcdescs + idx); + bestsym = sym + idx; + besterr = 0; + } + } + + if (!best) for (; nsym; nsym--, sym++) { + if (sym->st_value + && (1<<(sym->st_info&0xf) & OK_TYPES) + && (1<<(sym->st_info>>4) & OK_BINDS)) { + size_t symaddr = (size_t)laddr(p, sym->st_value); + if (symaddr > addr || symaddr <= best) + continue; + best = symaddr; + bestsym = sym; + besterr = addr - symaddr; + if (addr == symaddr) + break; + } + } + + if (best && besterr > bestsym->st_size-1) { + best = 0; + bestsym = 0; + } + + info->dli_fname = p->name; + info->dli_fbase = p->map; + + if (!best) { + info->dli_sname = 0; + info->dli_saddr = 0; + return 1; + } + + if (DL_FDPIC && (bestsym->st_info&0xf) == STT_FUNC) + best = (size_t)(p->funcdescs + (bestsym - p->syms)); + info->dli_sname = strings + bestsym->st_name; + info->dli_saddr = (void *)best; + + return 1; +} + +hidden void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra) +{ + void *res; + pthread_rwlock_rdlock(&lock); + res = do_dlsym(p, s, ra); + pthread_rwlock_unlock(&lock); + return res; +} + +hidden void *__dlsym_redir_time64(void *restrict p, const char *restrict s, void *restrict ra) +{ +#if _REDIR_TIME64 + const char *suffix, *suffix2 = ""; + char redir[36]; + + /* Map the symbol name to a time64 version of itself according to the + * pattern used for naming the redirected time64 symbols. */ + size_t l = strnlen(s, sizeof redir); + if (l<4 || l==sizeof redir) goto no_redir; + if (s[l-2]=='_' && s[l-1]=='r') { + l -= 2; + suffix2 = s+l; + } + if (l<4) goto no_redir; + if (!strcmp(s+l-4, "time")) suffix = "64"; + else suffix = "_time64"; + + /* Use the presence of the remapped symbol name in libc to determine + * whether it's one that requires time64 redirection; replace if so. */ + snprintf(redir, sizeof redir, "__%.*s%s%s", (int)l, s, suffix, suffix2); + if (find_sym(&ldso, redir, 1).sym) s = redir; +no_redir: +#endif + return __dlsym(p, s, ra); +} + +int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data) +{ + struct dso *current; + struct dl_phdr_info info; + int ret = 0; + for(current = head; current;) { + info.dlpi_addr = (uintptr_t)current->base; + info.dlpi_name = current->name; + info.dlpi_phdr = current->phdr; + info.dlpi_phnum = current->phnum; + info.dlpi_adds = gencnt; + info.dlpi_subs = 0; + info.dlpi_tls_modid = current->tls_id; + info.dlpi_tls_data = current->tls.image; + + ret = (callback)(&info, sizeof (info), data); + + if (ret != 0) break; + + pthread_rwlock_rdlock(&lock); + current = current->next; + pthread_rwlock_unlock(&lock); + } + return ret; +} + +static void error(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if (!runtime) { + vdprintf(2, fmt, ap); + dprintf(2, "\n"); + ldso_fail = 1; + va_end(ap); + return; + } + __dl_vseterr(fmt, ap); + va_end(ap); +} diff --git a/vendor/modernc.org/libc/musl/src/aio/aio.c b/vendor/modernc.org/libc/musl/src/aio/aio.c new file mode 100644 index 000000000..6d34fa869 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/aio/aio.c @@ -0,0 +1,400 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "atomic.h" +#include "pthread_impl.h" + +/* The following is a threads-based implementation of AIO with minimal + * dependence on implementation details. Most synchronization is + * performed with pthread primitives, but atomics and futex operations + * are used for notification in a couple places where the pthread + * primitives would be inefficient or impractical. + * + * For each fd with outstanding aio operations, an aio_queue structure + * is maintained. These are reference-counted and destroyed by the last + * aio worker thread to exit. Accessing any member of the aio_queue + * structure requires a lock on the aio_queue. Adding and removing aio + * queues themselves requires a write lock on the global map object, + * a 4-level table mapping file descriptor numbers to aio queues. A + * read lock on the map is used to obtain locks on existing queues by + * excluding destruction of the queue by a different thread while it is + * being locked. + * + * Each aio queue has a list of active threads/operations. Presently there + * is a one to one relationship between threads and operations. The only + * members of the aio_thread structure which are accessed by other threads + * are the linked list pointers, op (which is immutable), running (which + * is updated atomically), and err (which is synchronized via running), + * so no locking is necessary. Most of the other other members are used + * for sharing data between the main flow of execution and cancellation + * cleanup handler. + * + * Taking any aio locks requires having all signals blocked. This is + * necessary because aio_cancel is needed by close, and close is required + * to be async-signal safe. All aio worker threads run with all signals + * blocked permanently. + */ + +struct aio_thread { + pthread_t td; + struct aiocb *cb; + struct aio_thread *next, *prev; + struct aio_queue *q; + volatile int running; + int err, op; + ssize_t ret; +}; + +struct aio_queue { + int fd, seekable, append, ref, init; + pthread_mutex_t lock; + pthread_cond_t cond; + struct aio_thread *head; +}; + +struct aio_args { + struct aiocb *cb; + struct aio_queue *q; + int op; + sem_t sem; +}; + +static pthread_rwlock_t maplock = PTHREAD_RWLOCK_INITIALIZER; +static struct aio_queue *****map; +static volatile int aio_fd_cnt; +volatile int __aio_fut; + +static struct aio_queue *__aio_get_queue(int fd, int need) +{ + if (fd < 0) { + errno = EBADF; + return 0; + } + int a=fd>>24; + unsigned char b=fd>>16, c=fd>>8, d=fd; + struct aio_queue *q = 0; + pthread_rwlock_rdlock(&maplock); + if ((!map || !map[a] || !map[a][b] || !map[a][b][c] || !(q=map[a][b][c][d])) && need) { + pthread_rwlock_unlock(&maplock); + if (fcntl(fd, F_GETFD) < 0) return 0; + pthread_rwlock_wrlock(&maplock); + if (!map) map = calloc(sizeof *map, (-1U/2+1)>>24); + if (!map) goto out; + if (!map[a]) map[a] = calloc(sizeof **map, 256); + if (!map[a]) goto out; + if (!map[a][b]) map[a][b] = calloc(sizeof ***map, 256); + if (!map[a][b]) goto out; + if (!map[a][b][c]) map[a][b][c] = calloc(sizeof ****map, 256); + if (!map[a][b][c]) goto out; + if (!(q = map[a][b][c][d])) { + map[a][b][c][d] = q = calloc(sizeof *****map, 1); + if (q) { + q->fd = fd; + pthread_mutex_init(&q->lock, 0); + pthread_cond_init(&q->cond, 0); + a_inc(&aio_fd_cnt); + } + } + } + if (q) pthread_mutex_lock(&q->lock); +out: + pthread_rwlock_unlock(&maplock); + return q; +} + +static void __aio_unref_queue(struct aio_queue *q) +{ + if (q->ref > 1) { + q->ref--; + pthread_mutex_unlock(&q->lock); + return; + } + + /* This is potentially the last reference, but a new reference + * may arrive since we cannot free the queue object without first + * taking the maplock, which requires releasing the queue lock. */ + pthread_mutex_unlock(&q->lock); + pthread_rwlock_wrlock(&maplock); + pthread_mutex_lock(&q->lock); + if (q->ref == 1) { + int fd=q->fd; + int a=fd>>24; + unsigned char b=fd>>16, c=fd>>8, d=fd; + map[a][b][c][d] = 0; + a_dec(&aio_fd_cnt); + pthread_rwlock_unlock(&maplock); + pthread_mutex_unlock(&q->lock); + free(q); + } else { + q->ref--; + pthread_rwlock_unlock(&maplock); + pthread_mutex_unlock(&q->lock); + } +} + +static void cleanup(void *ctx) +{ + struct aio_thread *at = ctx; + struct aio_queue *q = at->q; + struct aiocb *cb = at->cb; + struct sigevent sev = cb->aio_sigevent; + + /* There are four potential types of waiters we could need to wake: + * 1. Callers of aio_cancel/close. + * 2. Callers of aio_suspend with a single aiocb. + * 3. Callers of aio_suspend with a list. + * 4. AIO worker threads waiting for sequenced operations. + * Types 1-3 are notified via atomics/futexes, mainly for AS-safety + * considerations. Type 4 is notified later via a cond var. */ + + cb->__ret = at->ret; + if (a_swap(&at->running, 0) < 0) + __wake(&at->running, -1, 1); + if (a_swap(&cb->__err, at->err) != EINPROGRESS) + __wake(&cb->__err, -1, 1); + if (a_swap(&__aio_fut, 0)) + __wake(&__aio_fut, -1, 1); + + pthread_mutex_lock(&q->lock); + + if (at->next) at->next->prev = at->prev; + if (at->prev) at->prev->next = at->next; + else q->head = at->next; + + /* Signal aio worker threads waiting for sequenced operations. */ + pthread_cond_broadcast(&q->cond); + + __aio_unref_queue(q); + + if (sev.sigev_notify == SIGEV_SIGNAL) { + siginfo_t si = { + .si_signo = sev.sigev_signo, + .si_value = sev.sigev_value, + .si_code = SI_ASYNCIO, + .si_pid = getpid(), + .si_uid = getuid() + }; + __syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si); + } + if (sev.sigev_notify == SIGEV_THREAD) { + a_store(&__pthread_self()->cancel, 0); + sev.sigev_notify_function(sev.sigev_value); + } +} + +static void *io_thread_func(void *ctx) +{ + struct aio_thread at, *p; + + struct aio_args *args = ctx; + struct aiocb *cb = args->cb; + int fd = cb->aio_fildes; + int op = args->op; + void *buf = (void *)cb->aio_buf; + size_t len = cb->aio_nbytes; + off_t off = cb->aio_offset; + + struct aio_queue *q = args->q; + ssize_t ret; + + pthread_mutex_lock(&q->lock); + sem_post(&args->sem); + + at.op = op; + at.running = 1; + at.ret = -1; + at.err = ECANCELED; + at.q = q; + at.td = __pthread_self(); + at.cb = cb; + at.prev = 0; + if ((at.next = q->head)) at.next->prev = &at; + q->head = &at; + + if (!q->init) { + int seekable = lseek(fd, 0, SEEK_CUR) >= 0; + q->seekable = seekable; + q->append = !seekable || (fcntl(fd, F_GETFL) & O_APPEND); + q->init = 1; + } + + pthread_cleanup_push(cleanup, &at); + + /* Wait for sequenced operations. */ + if (op!=LIO_READ && (op!=LIO_WRITE || q->append)) { + for (;;) { + for (p=at.next; p && p->op!=LIO_WRITE; p=p->next); + if (!p) break; + pthread_cond_wait(&q->cond, &q->lock); + } + } + + pthread_mutex_unlock(&q->lock); + + switch (op) { + case LIO_WRITE: + ret = q->append ? write(fd, buf, len) : pwrite(fd, buf, len, off); + break; + case LIO_READ: + ret = !q->seekable ? read(fd, buf, len) : pread(fd, buf, len, off); + break; + case O_SYNC: + ret = fsync(fd); + break; + case O_DSYNC: + ret = fdatasync(fd); + break; + } + at.ret = ret; + at.err = ret<0 ? errno : 0; + + pthread_cleanup_pop(1); + + return 0; +} + +static size_t io_thread_stack_size = MINSIGSTKSZ+2048; +static pthread_once_t init_stack_size_once; + +static void init_stack_size() +{ + unsigned long val = __getauxval(AT_MINSIGSTKSZ); + if (val > MINSIGSTKSZ) io_thread_stack_size = val + 512; +} + +static int submit(struct aiocb *cb, int op) +{ + int ret = 0; + pthread_attr_t a; + sigset_t allmask, origmask; + pthread_t td; + struct aio_queue *q = __aio_get_queue(cb->aio_fildes, 1); + struct aio_args args = { .cb = cb, .op = op, .q = q }; + sem_init(&args.sem, 0, 0); + + if (!q) { + if (errno != EBADF) errno = EAGAIN; + cb->__ret = -1; + cb->__err = errno; + return -1; + } + q->ref++; + pthread_mutex_unlock(&q->lock); + + if (cb->aio_sigevent.sigev_notify == SIGEV_THREAD) { + if (cb->aio_sigevent.sigev_notify_attributes) + a = *cb->aio_sigevent.sigev_notify_attributes; + else + pthread_attr_init(&a); + } else { + pthread_once(&init_stack_size_once, init_stack_size); + pthread_attr_init(&a); + pthread_attr_setstacksize(&a, io_thread_stack_size); + pthread_attr_setguardsize(&a, 0); + } + pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED); + sigfillset(&allmask); + pthread_sigmask(SIG_BLOCK, &allmask, &origmask); + cb->__err = EINPROGRESS; + if (pthread_create(&td, &a, io_thread_func, &args)) { + pthread_mutex_lock(&q->lock); + __aio_unref_queue(q); + cb->__err = errno = EAGAIN; + cb->__ret = ret = -1; + } + pthread_sigmask(SIG_SETMASK, &origmask, 0); + + if (!ret) { + while (sem_wait(&args.sem)); + } + + return ret; +} + +int aio_read(struct aiocb *cb) +{ + return submit(cb, LIO_READ); +} + +int aio_write(struct aiocb *cb) +{ + return submit(cb, LIO_WRITE); +} + +int aio_fsync(int op, struct aiocb *cb) +{ + if (op != O_SYNC && op != O_DSYNC) { + errno = EINVAL; + return -1; + } + return submit(cb, op); +} + +ssize_t aio_return(struct aiocb *cb) +{ + return cb->__ret; +} + +int aio_error(const struct aiocb *cb) +{ + a_barrier(); + return cb->__err & 0x7fffffff; +} + +int aio_cancel(int fd, struct aiocb *cb) +{ + sigset_t allmask, origmask; + int ret = AIO_ALLDONE; + struct aio_thread *p; + struct aio_queue *q; + + /* Unspecified behavior case. Report an error. */ + if (cb && fd != cb->aio_fildes) { + errno = EINVAL; + return -1; + } + + sigfillset(&allmask); + pthread_sigmask(SIG_BLOCK, &allmask, &origmask); + + errno = ENOENT; + if (!(q = __aio_get_queue(fd, 0))) { + if (errno == EBADF) ret = -1; + goto done; + } + + for (p = q->head; p; p = p->next) { + if (cb && cb != p->cb) continue; + /* Transition target from running to running-with-waiters */ + if (a_cas(&p->running, 1, -1)) { + pthread_cancel(p->td); + __wait(&p->running, 0, -1, 1); + if (p->err == ECANCELED) ret = AIO_CANCELED; + } + } + + pthread_mutex_unlock(&q->lock); +done: + pthread_sigmask(SIG_SETMASK, &origmask, 0); + return ret; +} + +int __aio_close(int fd) +{ + a_barrier(); + if (aio_fd_cnt) aio_cancel(fd, 0); + return fd; +} + +weak_alias(aio_cancel, aio_cancel64); +weak_alias(aio_error, aio_error64); +weak_alias(aio_fsync, aio_fsync64); +weak_alias(aio_read, aio_read64); +weak_alias(aio_write, aio_write64); +weak_alias(aio_return, aio_return64); diff --git a/vendor/modernc.org/libc/musl/src/aio/aio_suspend.c b/vendor/modernc.org/libc/musl/src/aio/aio_suspend.c new file mode 100644 index 000000000..34b66f878 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/aio/aio_suspend.c @@ -0,0 +1,78 @@ +#include +#include +#include +#include "atomic.h" +#include "pthread_impl.h" + +int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec *ts) +{ + int i, tid = 0, ret, expect = 0; + struct timespec at; + volatile int dummy_fut, *pfut; + int nzcnt = 0; + const struct aiocb *cb = 0; + + pthread_testcancel(); + + if (cnt<0) { + errno = EINVAL; + return -1; + } + + for (i=0; itv_sec; + if ((at.tv_nsec += ts->tv_nsec) >= 1000000000) { + at.tv_nsec -= 1000000000; + at.tv_sec++; + } + } + + for (;;) { + for (i=0; i__err; + expect = EINPROGRESS | 0x80000000; + a_cas(pfut, EINPROGRESS, expect); + break; + default: + pfut = &__aio_fut; + if (!tid) tid = __pthread_self()->tid; + expect = a_cas(pfut, 0, tid); + if (!expect) expect = tid; + /* Need to recheck the predicate before waiting. */ + for (i=0; i +#include +#include +#include +#include "pthread_impl.h" + +struct lio_state { + struct sigevent *sev; + int cnt; + struct aiocb *cbs[]; +}; + +static int lio_wait(struct lio_state *st) +{ + int i, err, got_err = 0; + int cnt = st->cnt; + struct aiocb **cbs = st->cbs; + + for (;;) { + for (i=0; isigev_signo, + .si_value = sev->sigev_value, + .si_code = SI_ASYNCIO, + .si_pid = getpid(), + .si_uid = getuid() + }; + __syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si); +} + +static void *wait_thread(void *p) +{ + struct lio_state *st = p; + struct sigevent *sev = st->sev; + lio_wait(st); + free(st); + switch (sev->sigev_notify) { + case SIGEV_SIGNAL: + notify_signal(sev); + break; + case SIGEV_THREAD: + sev->sigev_notify_function(sev->sigev_value); + break; + } + return 0; +} + +int lio_listio(int mode, struct aiocb *restrict const *restrict cbs, int cnt, struct sigevent *restrict sev) +{ + int i, ret; + struct lio_state *st=0; + + if (cnt < 0) { + errno = EINVAL; + return -1; + } + + if (mode == LIO_WAIT || (sev && sev->sigev_notify != SIGEV_NONE)) { + if (!(st = malloc(sizeof *st + cnt*sizeof *cbs))) { + errno = EAGAIN; + return -1; + } + st->cnt = cnt; + st->sev = sev; + memcpy(st->cbs, (void*) cbs, cnt*sizeof *cbs); + } + + for (i=0; iaio_lio_opcode) { + case LIO_READ: + ret = aio_read(cbs[i]); + break; + case LIO_WRITE: + ret = aio_write(cbs[i]); + break; + default: + continue; + } + if (ret) { + free(st); + errno = EAGAIN; + return -1; + } + } + + if (mode == LIO_WAIT) { + ret = lio_wait(st); + free(st); + return ret; + } + + if (st) { + pthread_attr_t a; + sigset_t set, set_old; + pthread_t td; + + if (sev->sigev_notify == SIGEV_THREAD) { + if (sev->sigev_notify_attributes) + a = *sev->sigev_notify_attributes; + else + pthread_attr_init(&a); + } else { + pthread_attr_init(&a); + pthread_attr_setstacksize(&a, PAGE_SIZE); + pthread_attr_setguardsize(&a, 0); + } + pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED); + sigfillset(&set); + pthread_sigmask(SIG_BLOCK, &set, &set_old); + if (pthread_create(&td, &a, wait_thread, st)) { + free(st); + errno = EAGAIN; + return -1; + } + pthread_sigmask(SIG_SETMASK, &set_old, 0); + } + + return 0; +} + +weak_alias(lio_listio, lio_listio64); diff --git a/vendor/modernc.org/libc/musl/src/complex/__cexp.c b/vendor/modernc.org/libc/musl/src/complex/__cexp.c new file mode 100644 index 000000000..003d20af6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/__cexp.c @@ -0,0 +1,87 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_exp.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +static const uint32_t k = 1799; /* constant for reduction */ +static const double kln2 = 1246.97177782734161156; /* k * ln2 */ + +/* + * Compute exp(x), scaled to avoid spurious overflow. An exponent is + * returned separately in 'expt'. + * + * Input: ln(DBL_MAX) <= x < ln(2 * DBL_MAX / DBL_MIN_DENORM) ~= 1454.91 + * Output: 2**1023 <= y < 2**1024 + */ +static double __frexp_exp(double x, int *expt) +{ + double exp_x; + uint32_t hx; + + /* + * We use exp(x) = exp(x - kln2) * 2**k, carefully chosen to + * minimize |exp(kln2) - 2**k|. We also scale the exponent of + * exp_x to MAX_EXP so that the result can be multiplied by + * a tiny number without losing accuracy due to denormalization. + */ + exp_x = exp(x - kln2); + GET_HIGH_WORD(hx, exp_x); + *expt = (hx >> 20) - (0x3ff + 1023) + k; + SET_HIGH_WORD(exp_x, (hx & 0xfffff) | ((0x3ff + 1023) << 20)); + return exp_x; +} + +/* + * __ldexp_cexp(x, expt) compute exp(x) * 2**expt. + * It is intended for large arguments (real part >= ln(DBL_MAX)) + * where care is needed to avoid overflow. + * + * The present implementation is narrowly tailored for our hyperbolic and + * exponential functions. We assume expt is small (0 or -1), and the caller + * has filtered out very large x, for which overflow would be inevitable. + */ +double complex __ldexp_cexp(double complex z, int expt) +{ + double x, y, exp_x, scale1, scale2; + int ex_expt, half_expt; + + x = creal(z); + y = cimag(z); + exp_x = __frexp_exp(x, &ex_expt); + expt += ex_expt; + + /* + * Arrange so that scale1 * scale2 == 2**expt. We use this to + * compensate for scalbn being horrendously slow. + */ + half_expt = expt / 2; + INSERT_WORDS(scale1, (0x3ff + half_expt) << 20, 0); + half_expt = expt - half_expt; + INSERT_WORDS(scale2, (0x3ff + half_expt) << 20, 0); + + return CMPLX(cos(y) * exp_x * scale1 * scale2, sin(y) * exp_x * scale1 * scale2); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/__cexpf.c b/vendor/modernc.org/libc/musl/src/complex/__cexpf.c new file mode 100644 index 000000000..ee5ff2bce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/__cexpf.c @@ -0,0 +1,68 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_expf.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +static const uint32_t k = 235; /* constant for reduction */ +static const float kln2 = 162.88958740F; /* k * ln2 */ + +/* + * See __cexp.c for details. + * + * Input: ln(FLT_MAX) <= x < ln(2 * FLT_MAX / FLT_MIN_DENORM) ~= 192.7 + * Output: 2**127 <= y < 2**128 + */ +static float __frexp_expf(float x, int *expt) +{ + float exp_x; + uint32_t hx; + + exp_x = expf(x - kln2); + GET_FLOAT_WORD(hx, exp_x); + *expt = (hx >> 23) - (0x7f + 127) + k; + SET_FLOAT_WORD(exp_x, (hx & 0x7fffff) | ((0x7f + 127) << 23)); + return exp_x; +} + +float complex __ldexp_cexpf(float complex z, int expt) +{ + float x, y, exp_x, scale1, scale2; + int ex_expt, half_expt; + + x = crealf(z); + y = cimagf(z); + exp_x = __frexp_expf(x, &ex_expt); + expt += ex_expt; + + half_expt = expt / 2; + SET_FLOAT_WORD(scale1, (0x7f + half_expt) << 23); + half_expt = expt - half_expt; + SET_FLOAT_WORD(scale2, (0x7f + half_expt) << 23); + + return CMPLXF(cosf(y) * exp_x * scale1 * scale2, + sinf(y) * exp_x * scale1 * scale2); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cabs.c b/vendor/modernc.org/libc/musl/src/complex/cabs.c new file mode 100644 index 000000000..c5ad58ab9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cabs.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +double cabs(double complex z) +{ + return hypot(creal(z), cimag(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cabsf.c b/vendor/modernc.org/libc/musl/src/complex/cabsf.c new file mode 100644 index 000000000..619f28d39 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cabsf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float cabsf(float complex z) +{ + return hypotf(crealf(z), cimagf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cabsl.c b/vendor/modernc.org/libc/musl/src/complex/cabsl.c new file mode 100644 index 000000000..d37e3f2ea --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cabsl.c @@ -0,0 +1,13 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double cabsl(long double complex z) +{ + return cabs(z); +} +#else +long double cabsl(long double complex z) +{ + return hypotl(creall(z), cimagl(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/cacos.c b/vendor/modernc.org/libc/musl/src/complex/cacos.c new file mode 100644 index 000000000..c39d257b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacos.c @@ -0,0 +1,11 @@ +#include "complex_impl.h" + +// FIXME: Hull et al. "Implementing the complex arcsine and arccosine functions using exception handling" 1997 + +/* acos(z) = pi/2 - asin(z) */ + +double complex cacos(double complex z) +{ + z = casin(z); + return CMPLX(M_PI_2 - creal(z), -cimag(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cacosf.c b/vendor/modernc.org/libc/musl/src/complex/cacosf.c new file mode 100644 index 000000000..2e048540f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacosf.c @@ -0,0 +1,9 @@ +#include "complex_impl.h" + +// FIXME + +float complex cacosf(float complex z) +{ + z = casinf(z); + return CMPLXF((float)M_PI_2 - crealf(z), -cimagf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cacosh.c b/vendor/modernc.org/libc/musl/src/complex/cacosh.c new file mode 100644 index 000000000..76127f75f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacosh.c @@ -0,0 +1,12 @@ +#include "complex_impl.h" + +/* acosh(z) = i acos(z) */ + +double complex cacosh(double complex z) +{ + int zineg = signbit(cimag(z)); + + z = cacos(z); + if (zineg) return CMPLX(cimag(z), -creal(z)); + else return CMPLX(-cimag(z), creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cacoshf.c b/vendor/modernc.org/libc/musl/src/complex/cacoshf.c new file mode 100644 index 000000000..8bd80581a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacoshf.c @@ -0,0 +1,10 @@ +#include "complex_impl.h" + +float complex cacoshf(float complex z) +{ + int zineg = signbit(cimagf(z)); + + z = cacosf(z); + if (zineg) return CMPLXF(cimagf(z), -crealf(z)); + else return CMPLXF(-cimagf(z), crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cacoshl.c b/vendor/modernc.org/libc/musl/src/complex/cacoshl.c new file mode 100644 index 000000000..3a284be9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacoshl.c @@ -0,0 +1,17 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex cacoshl(long double complex z) +{ + return cacosh(z); +} +#else +long double complex cacoshl(long double complex z) +{ + int zineg = signbit(cimagl(z)); + + z = cacosl(z); + if (zineg) return CMPLXL(cimagl(z), -creall(z)); + else return CMPLXL(-cimagl(z), creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/cacosl.c b/vendor/modernc.org/libc/musl/src/complex/cacosl.c new file mode 100644 index 000000000..cc20dcd7d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cacosl.c @@ -0,0 +1,16 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex cacosl(long double complex z) +{ + return cacos(z); +} +#else +// FIXME +#define PI_2 1.57079632679489661923132169163975144L +long double complex cacosl(long double complex z) +{ + z = casinl(z); + return CMPLXL(PI_2 - creall(z), -cimagl(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/carg.c b/vendor/modernc.org/libc/musl/src/complex/carg.c new file mode 100644 index 000000000..dfe9b97a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/carg.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +double carg(double complex z) +{ + return atan2(cimag(z), creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cargf.c b/vendor/modernc.org/libc/musl/src/complex/cargf.c new file mode 100644 index 000000000..9a6c19b63 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cargf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float cargf(float complex z) +{ + return atan2f(cimagf(z), crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cargl.c b/vendor/modernc.org/libc/musl/src/complex/cargl.c new file mode 100644 index 000000000..88f95f96e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cargl.c @@ -0,0 +1,13 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double cargl(long double complex z) +{ + return carg(z); +} +#else +long double cargl(long double complex z) +{ + return atan2l(cimagl(z), creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/casin.c b/vendor/modernc.org/libc/musl/src/complex/casin.c new file mode 100644 index 000000000..3244bebb1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casin.c @@ -0,0 +1,17 @@ +#include "complex_impl.h" + +// FIXME + +/* asin(z) = -i log(i z + sqrt(1 - z*z)) */ + +double complex casin(double complex z) +{ + double complex w; + double x, y; + + x = creal(z); + y = cimag(z); + w = CMPLX(1.0 - (x - y)*(x + y), -2.0*x*y); + double complex r = clog(CMPLX(-y, x) + csqrt(w)); + return CMPLX(cimag(r), -creal(r)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/casinf.c b/vendor/modernc.org/libc/musl/src/complex/casinf.c new file mode 100644 index 000000000..2cda2f086 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casinf.c @@ -0,0 +1,15 @@ +#include "complex_impl.h" + +// FIXME + +float complex casinf(float complex z) +{ + float complex w; + float x, y; + + x = crealf(z); + y = cimagf(z); + w = CMPLXF(1.0 - (x - y)*(x + y), -2.0*x*y); + float complex r = clogf(CMPLXF(-y, x) + csqrtf(w)); + return CMPLXF(cimagf(r), -crealf(r)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/casinh.c b/vendor/modernc.org/libc/musl/src/complex/casinh.c new file mode 100644 index 000000000..50bf27ce8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casinh.c @@ -0,0 +1,9 @@ +#include "complex_impl.h" + +/* asinh(z) = -i asin(i z) */ + +double complex casinh(double complex z) +{ + z = casin(CMPLX(-cimag(z), creal(z))); + return CMPLX(cimag(z), -creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/casinhf.c b/vendor/modernc.org/libc/musl/src/complex/casinhf.c new file mode 100644 index 000000000..93d82e5f4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casinhf.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +float complex casinhf(float complex z) +{ + z = casinf(CMPLXF(-cimagf(z), crealf(z))); + return CMPLXF(cimagf(z), -crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/casinhl.c b/vendor/modernc.org/libc/musl/src/complex/casinhl.c new file mode 100644 index 000000000..68ba3ddfc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casinhl.c @@ -0,0 +1,14 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex casinhl(long double complex z) +{ + return casinh(z); +} +#else +long double complex casinhl(long double complex z) +{ + z = casinl(CMPLXL(-cimagl(z), creall(z))); + return CMPLXL(cimagl(z), -creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/casinl.c b/vendor/modernc.org/libc/musl/src/complex/casinl.c new file mode 100644 index 000000000..072adc450 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/casinl.c @@ -0,0 +1,21 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex casinl(long double complex z) +{ + return casin(z); +} +#else +// FIXME +long double complex casinl(long double complex z) +{ + long double complex w; + long double x, y; + + x = creall(z); + y = cimagl(z); + w = CMPLXL(1.0 - (x - y)*(x + y), -2.0*x*y); + long double complex r = clogl(CMPLXL(-y, x) + csqrtl(w)); + return CMPLXL(cimagl(r), -creall(r)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/catan.c b/vendor/modernc.org/libc/musl/src/complex/catan.c new file mode 100644 index 000000000..ccc2fb539 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catan.c @@ -0,0 +1,107 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/s_catan.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Complex circular arc tangent + * + * + * SYNOPSIS: + * + * double complex catan(); + * double complex z, w; + * + * w = catan (z); + * + * + * DESCRIPTION: + * + * If + * z = x + iy, + * + * then + * 1 ( 2x ) + * Re w = - arctan(-----------) + k PI + * 2 ( 2 2) + * (1 - x - y ) + * + * ( 2 2) + * 1 (x + (y+1) ) + * Im w = - log(------------) + * 4 ( 2 2) + * (x + (y-1) ) + * + * Where k is an arbitrary integer. + * + * catan(z) = -i catanh(iz). + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * DEC -10,+10 5900 1.3e-16 7.8e-18 + * IEEE -10,+10 30000 2.3e-15 8.5e-17 + * The check catan( ctan(z) ) = z, with |x| and |y| < PI/2, + * had peak relative error 1.5e-16, rms relative error + * 2.9e-17. See also clog(). + */ + +#include "complex_impl.h" + +#define MAXNUM 1.0e308 + +static const double DP1 = 3.14159265160560607910E0; +static const double DP2 = 1.98418714791870343106E-9; +static const double DP3 = 1.14423774522196636802E-17; + +static double _redupi(double x) +{ + double t; + long i; + + t = x/M_PI; + if (t >= 0.0) + t += 0.5; + else + t -= 0.5; + + i = t; /* the multiple */ + t = i; + t = ((x - t * DP1) - t * DP2) - t * DP3; + return t; +} + +double complex catan(double complex z) +{ + double complex w; + double a, t, x, x2, y; + + x = creal(z); + y = cimag(z); + + x2 = x * x; + a = 1.0 - x2 - (y * y); + + t = 0.5 * atan2(2.0 * x, a); + w = _redupi(t); + + t = y - 1.0; + a = x2 + (t * t); + + t = y + 1.0; + a = (x2 + t * t)/a; + w = CMPLX(w, 0.25 * log(a)); + return w; +} diff --git a/vendor/modernc.org/libc/musl/src/complex/catanf.c b/vendor/modernc.org/libc/musl/src/complex/catanf.c new file mode 100644 index 000000000..ef3907a50 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catanf.c @@ -0,0 +1,103 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/s_catanf.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Complex circular arc tangent + * + * + * SYNOPSIS: + * + * float complex catanf(); + * float complex z, w; + * + * w = catanf( z ); + * + * + * DESCRIPTION: + * + * If + * z = x + iy, + * + * then + * 1 ( 2x ) + * Re w = - arctan(-----------) + k PI + * 2 ( 2 2) + * (1 - x - y ) + * + * ( 2 2) + * 1 (x + (y+1) ) + * Im w = - log(------------) + * 4 ( 2 2) + * (x + (y-1) ) + * + * Where k is an arbitrary integer. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -10,+10 30000 2.3e-6 5.2e-8 + */ + +#include "complex_impl.h" + +#define MAXNUMF 1.0e38F + +static const double DP1 = 3.140625; +static const double DP2 = 9.67502593994140625E-4; +static const double DP3 = 1.509957990978376432E-7; + +static float _redupif(float xx) +{ + float x, t; + long i; + + x = xx; + t = x/(float)M_PI; + if (t >= 0.0f) + t += 0.5f; + else + t -= 0.5f; + + i = t; /* the multiple */ + t = i; + t = ((x - t * DP1) - t * DP2) - t * DP3; + return t; +} + +float complex catanf(float complex z) +{ + float complex w; + float a, t, x, x2, y; + + x = crealf(z); + y = cimagf(z); + + x2 = x * x; + a = 1.0f - x2 - (y * y); + + t = 0.5f * atan2f(2.0f * x, a); + w = _redupif(t); + + t = y - 1.0f; + a = x2 + (t * t); + + t = y + 1.0f; + a = (x2 + (t * t))/a; + w = CMPLXF(w, 0.25f * logf(a)); + return w; +} diff --git a/vendor/modernc.org/libc/musl/src/complex/catanh.c b/vendor/modernc.org/libc/musl/src/complex/catanh.c new file mode 100644 index 000000000..c324c7f2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catanh.c @@ -0,0 +1,9 @@ +#include "complex_impl.h" + +/* atanh = -i atan(i z) */ + +double complex catanh(double complex z) +{ + z = catan(CMPLX(-cimag(z), creal(z))); + return CMPLX(cimag(z), -creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/catanhf.c b/vendor/modernc.org/libc/musl/src/complex/catanhf.c new file mode 100644 index 000000000..b0505f605 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catanhf.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +float complex catanhf(float complex z) +{ + z = catanf(CMPLXF(-cimagf(z), crealf(z))); + return CMPLXF(cimagf(z), -crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/catanhl.c b/vendor/modernc.org/libc/musl/src/complex/catanhl.c new file mode 100644 index 000000000..6025c4140 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catanhl.c @@ -0,0 +1,14 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex catanhl(long double complex z) +{ + return catanh(z); +} +#else +long double complex catanhl(long double complex z) +{ + z = catanl(CMPLXL(-cimagl(z), creall(z))); + return CMPLXL(cimagl(z), -creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/catanl.c b/vendor/modernc.org/libc/musl/src/complex/catanl.c new file mode 100644 index 000000000..e62526c00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/catanl.c @@ -0,0 +1,114 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/s_catanl.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Complex circular arc tangent + * + * + * SYNOPSIS: + * + * long double complex catanl(); + * long double complex z, w; + * + * w = catanl( z ); + * + * + * DESCRIPTION: + * + * If + * z = x + iy, + * + * then + * 1 ( 2x ) + * Re w = - arctan(-----------) + k PI + * 2 ( 2 2) + * (1 - x - y ) + * + * ( 2 2) + * 1 (x + (y+1) ) + * Im w = - log(------------) + * 4 ( 2 2) + * (x + (y-1) ) + * + * Where k is an arbitrary integer. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * DEC -10,+10 5900 1.3e-16 7.8e-18 + * IEEE -10,+10 30000 2.3e-15 8.5e-17 + * The check catan( ctan(z) ) = z, with |x| and |y| < PI/2, + * had peak relative error 1.5e-16, rms relative error + * 2.9e-17. See also clog(). + */ + +#include +#include +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex catanl(long double complex z) +{ + return catan(z); +} +#else +static const long double PIL = 3.141592653589793238462643383279502884197169L; +static const long double DP1 = 3.14159265358979323829596852490908531763125L; +static const long double DP2 = 1.6667485837041756656403424829301998703007e-19L; +static const long double DP3 = 1.8830410776607851167459095484560349402753e-39L; + +static long double redupil(long double x) +{ + long double t; + long i; + + t = x / PIL; + if (t >= 0.0L) + t += 0.5L; + else + t -= 0.5L; + + i = t; /* the multiple */ + t = i; + t = ((x - t * DP1) - t * DP2) - t * DP3; + return t; +} + +long double complex catanl(long double complex z) +{ + long double complex w; + long double a, t, x, x2, y; + + x = creall(z); + y = cimagl(z); + + x2 = x * x; + a = 1.0L - x2 - (y * y); + + t = atan2l(2.0L * x, a) * 0.5L; + w = redupil(t); + + t = y - 1.0L; + a = x2 + (t * t); + + t = y + 1.0L; + a = (x2 + (t * t)) / a; + w = CMPLXF(w, 0.25L * logl(a)); + return w; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/ccos.c b/vendor/modernc.org/libc/musl/src/complex/ccos.c new file mode 100644 index 000000000..f32e1fadf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccos.c @@ -0,0 +1,8 @@ +#include "complex_impl.h" + +/* cos(z) = cosh(i z) */ + +double complex ccos(double complex z) +{ + return ccosh(CMPLX(-cimag(z), creal(z))); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ccosf.c b/vendor/modernc.org/libc/musl/src/complex/ccosf.c new file mode 100644 index 000000000..490be9b3f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccosf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float complex ccosf(float complex z) +{ + return ccoshf(CMPLXF(-cimagf(z), crealf(z))); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ccosh.c b/vendor/modernc.org/libc/musl/src/complex/ccosh.c new file mode 100644 index 000000000..c995da7bb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccosh.c @@ -0,0 +1,140 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_ccosh.c */ +/*- + * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic cosine of a complex argument z = x + i y. + * + * cosh(z) = cosh(x+iy) + * = cosh(x) cos(y) + i sinh(x) sin(y). + * + * Exceptional values are noted in the comments within the source code. + * These values and the return value were taken from n1124.pdf. + */ + +#include "complex_impl.h" + +static const double huge = 0x1p1023; + +double complex ccosh(double complex z) +{ + double x, y, h; + int32_t hx, hy, ix, iy, lx, ly; + + x = creal(z); + y = cimag(z); + + EXTRACT_WORDS(hx, lx, x); + EXTRACT_WORDS(hy, ly, y); + + ix = 0x7fffffff & hx; + iy = 0x7fffffff & hy; + + /* Handle the nearly-non-exceptional cases where x and y are finite. */ + if (ix < 0x7ff00000 && iy < 0x7ff00000) { + if ((iy | ly) == 0) + return CMPLX(cosh(x), x * y); + if (ix < 0x40360000) /* small x: normal case */ + return CMPLX(cosh(x) * cos(y), sinh(x) * sin(y)); + + /* |x| >= 22, so cosh(x) ~= exp(|x|) */ + if (ix < 0x40862e42) { + /* x < 710: exp(|x|) won't overflow */ + h = exp(fabs(x)) * 0.5; + return CMPLX(h * cos(y), copysign(h, x) * sin(y)); + } else if (ix < 0x4096bbaa) { + /* x < 1455: scale to avoid overflow */ + z = __ldexp_cexp(CMPLX(fabs(x), y), -1); + return CMPLX(creal(z), cimag(z) * copysign(1, x)); + } else { + /* x >= 1455: the result always overflows */ + h = huge * x; + return CMPLX(h * h * cos(y), h * sin(y)); + } + } + + /* + * cosh(+-0 +- I Inf) = dNaN + I sign(d(+-0, dNaN))0. + * The sign of 0 in the result is unspecified. Choice = normally + * the same as dNaN. Raise the invalid floating-point exception. + * + * cosh(+-0 +- I NaN) = d(NaN) + I sign(d(+-0, NaN))0. + * The sign of 0 in the result is unspecified. Choice = normally + * the same as d(NaN). + */ + if ((ix | lx) == 0 && iy >= 0x7ff00000) + return CMPLX(y - y, copysign(0, x * (y - y))); + + /* + * cosh(+-Inf +- I 0) = +Inf + I (+-)(+-)0. + * + * cosh(NaN +- I 0) = d(NaN) + I sign(d(NaN, +-0))0. + * The sign of 0 in the result is unspecified. + */ + if ((iy | ly) == 0 && ix >= 0x7ff00000) { + if (((hx & 0xfffff) | lx) == 0) + return CMPLX(x * x, copysign(0, x) * y); + return CMPLX(x * x, copysign(0, (x + x) * y)); + } + + /* + * cosh(x +- I Inf) = dNaN + I dNaN. + * Raise the invalid floating-point exception for finite nonzero x. + * + * cosh(x + I NaN) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception for finite + * nonzero x. Choice = don't raise (except for signaling NaNs). + */ + if (ix < 0x7ff00000 && iy >= 0x7ff00000) + return CMPLX(y - y, x * (y - y)); + + /* + * cosh(+-Inf + I NaN) = +Inf + I d(NaN). + * + * cosh(+-Inf +- I Inf) = +Inf + I dNaN. + * The sign of Inf in the result is unspecified. Choice = always +. + * Raise the invalid floating-point exception. + * + * cosh(+-Inf + I y) = +Inf cos(y) +- I Inf sin(y) + */ + if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) { + if (iy >= 0x7ff00000) + return CMPLX(x * x, x * (y - y)); + return CMPLX((x * x) * cos(y), x * sin(y)); + } + + /* + * cosh(NaN + I NaN) = d(NaN) + I d(NaN). + * + * cosh(NaN +- I Inf) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception. + * Choice = raise. + * + * cosh(NaN + I y) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception for finite + * nonzero y. Choice = don't raise (except for signaling NaNs). + */ + return CMPLX((x * x) * (y - y), (x + x) * (y - y)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ccoshf.c b/vendor/modernc.org/libc/musl/src/complex/ccoshf.c new file mode 100644 index 000000000..189ce946d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccoshf.c @@ -0,0 +1,90 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_ccoshf.c */ +/*- + * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic cosine of a complex argument. See s_ccosh.c for details. + */ + +#include "complex_impl.h" + +static const float huge = 0x1p127; + +float complex ccoshf(float complex z) +{ + float x, y, h; + int32_t hx, hy, ix, iy; + + x = crealf(z); + y = cimagf(z); + + GET_FLOAT_WORD(hx, x); + GET_FLOAT_WORD(hy, y); + + ix = 0x7fffffff & hx; + iy = 0x7fffffff & hy; + + if (ix < 0x7f800000 && iy < 0x7f800000) { + if (iy == 0) + return CMPLXF(coshf(x), x * y); + if (ix < 0x41100000) /* small x: normal case */ + return CMPLXF(coshf(x) * cosf(y), sinhf(x) * sinf(y)); + + /* |x| >= 9, so cosh(x) ~= exp(|x|) */ + if (ix < 0x42b17218) { + /* x < 88.7: expf(|x|) won't overflow */ + h = expf(fabsf(x)) * 0.5f; + return CMPLXF(h * cosf(y), copysignf(h, x) * sinf(y)); + } else if (ix < 0x4340b1e7) { + /* x < 192.7: scale to avoid overflow */ + z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1); + return CMPLXF(crealf(z), cimagf(z) * copysignf(1, x)); + } else { + /* x >= 192.7: the result always overflows */ + h = huge * x; + return CMPLXF(h * h * cosf(y), h * sinf(y)); + } + } + + if (ix == 0 && iy >= 0x7f800000) + return CMPLXF(y - y, copysignf(0, x * (y - y))); + + if (iy == 0 && ix >= 0x7f800000) { + if ((hx & 0x7fffff) == 0) + return CMPLXF(x * x, copysignf(0, x) * y); + return CMPLXF(x * x, copysignf(0, (x + x) * y)); + } + + if (ix < 0x7f800000 && iy >= 0x7f800000) + return CMPLXF(y - y, x * (y - y)); + + if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) { + if (iy >= 0x7f800000) + return CMPLXF(x * x, x * (y - y)); + return CMPLXF((x * x) * cosf(y), x * sinf(y)); + } + + return CMPLXF((x * x) * (y - y), (x + x) * (y - y)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ccoshl.c b/vendor/modernc.org/libc/musl/src/complex/ccoshl.c new file mode 100644 index 000000000..ffb4d8a14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccoshl.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +//FIXME +long double complex ccoshl(long double complex z) +{ + return ccosh(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ccosl.c b/vendor/modernc.org/libc/musl/src/complex/ccosl.c new file mode 100644 index 000000000..2530006bf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ccosl.c @@ -0,0 +1,13 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex ccosl(long double complex z) +{ + return ccos(z); +} +#else +long double complex ccosl(long double complex z) +{ + return ccoshl(CMPLXL(-cimagl(z), creall(z))); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/cexp.c b/vendor/modernc.org/libc/musl/src/complex/cexp.c new file mode 100644 index 000000000..7fb489bb9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cexp.c @@ -0,0 +1,83 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cexp.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +static const uint32_t +exp_ovfl = 0x40862e42, /* high bits of MAX_EXP * ln2 ~= 710 */ +cexp_ovfl = 0x4096b8e4; /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */ + +double complex cexp(double complex z) +{ + double x, y, exp_x; + uint32_t hx, hy, lx, ly; + + x = creal(z); + y = cimag(z); + + EXTRACT_WORDS(hy, ly, y); + hy &= 0x7fffffff; + + /* cexp(x + I 0) = exp(x) + I 0 */ + if ((hy | ly) == 0) + return CMPLX(exp(x), y); + EXTRACT_WORDS(hx, lx, x); + /* cexp(0 + I y) = cos(y) + I sin(y) */ + if (((hx & 0x7fffffff) | lx) == 0) + return CMPLX(cos(y), sin(y)); + + if (hy >= 0x7ff00000) { + if (lx != 0 || (hx & 0x7fffffff) != 0x7ff00000) { + /* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */ + return CMPLX(y - y, y - y); + } else if (hx & 0x80000000) { + /* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */ + return CMPLX(0.0, 0.0); + } else { + /* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */ + return CMPLX(x, y - y); + } + } + + if (hx >= exp_ovfl && hx <= cexp_ovfl) { + /* + * x is between 709.7 and 1454.3, so we must scale to avoid + * overflow in exp(x). + */ + return __ldexp_cexp(z, 0); + } else { + /* + * Cases covered here: + * - x < exp_ovfl and exp(x) won't overflow (common case) + * - x > cexp_ovfl, so exp(x) * s overflows for all s > 0 + * - x = +-Inf (generated by exp()) + * - x = NaN (spurious inexact exception from y) + */ + exp_x = exp(x); + return CMPLX(exp_x * cos(y), exp_x * sin(y)); + } +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cexpf.c b/vendor/modernc.org/libc/musl/src/complex/cexpf.c new file mode 100644 index 000000000..00d258f3f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cexpf.c @@ -0,0 +1,83 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cexpf.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +static const uint32_t +exp_ovfl = 0x42b17218, /* MAX_EXP * ln2 ~= 88.722839355 */ +cexp_ovfl = 0x43400074; /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */ + +float complex cexpf(float complex z) +{ + float x, y, exp_x; + uint32_t hx, hy; + + x = crealf(z); + y = cimagf(z); + + GET_FLOAT_WORD(hy, y); + hy &= 0x7fffffff; + + /* cexp(x + I 0) = exp(x) + I 0 */ + if (hy == 0) + return CMPLXF(expf(x), y); + GET_FLOAT_WORD(hx, x); + /* cexp(0 + I y) = cos(y) + I sin(y) */ + if ((hx & 0x7fffffff) == 0) + return CMPLXF(cosf(y), sinf(y)); + + if (hy >= 0x7f800000) { + if ((hx & 0x7fffffff) != 0x7f800000) { + /* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */ + return CMPLXF(y - y, y - y); + } else if (hx & 0x80000000) { + /* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */ + return CMPLXF(0.0, 0.0); + } else { + /* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */ + return CMPLXF(x, y - y); + } + } + + if (hx >= exp_ovfl && hx <= cexp_ovfl) { + /* + * x is between 88.7 and 192, so we must scale to avoid + * overflow in expf(x). + */ + return __ldexp_cexpf(z, 0); + } else { + /* + * Cases covered here: + * - x < exp_ovfl and exp(x) won't overflow (common case) + * - x > cexp_ovfl, so exp(x) * s overflows for all s > 0 + * - x = +-Inf (generated by exp()) + * - x = NaN (spurious inexact exception from y) + */ + exp_x = expf(x); + return CMPLXF(exp_x * cosf(y), exp_x * sinf(y)); + } +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cexpl.c b/vendor/modernc.org/libc/musl/src/complex/cexpl.c new file mode 100644 index 000000000..d4df950e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cexpl.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +//FIXME +long double complex cexpl(long double complex z) +{ + return cexp(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cimag.c b/vendor/modernc.org/libc/musl/src/complex/cimag.c new file mode 100644 index 000000000..d6b0e6838 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cimag.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +double (cimag)(double complex z) +{ + return cimag(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cimagf.c b/vendor/modernc.org/libc/musl/src/complex/cimagf.c new file mode 100644 index 000000000..b7166dcfa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cimagf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float (cimagf)(float complex z) +{ + return cimagf(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cimagl.c b/vendor/modernc.org/libc/musl/src/complex/cimagl.c new file mode 100644 index 000000000..4db77f201 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cimagl.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +long double (cimagl)(long double complex z) +{ + return cimagl(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/clog.c b/vendor/modernc.org/libc/musl/src/complex/clog.c new file mode 100644 index 000000000..b587c2915 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/clog.c @@ -0,0 +1,14 @@ +#include "complex_impl.h" + +// FIXME + +/* log(z) = log(|z|) + i arg(z) */ + +double complex clog(double complex z) +{ + double r, phi; + + r = cabs(z); + phi = carg(z); + return CMPLX(log(r), phi); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/clogf.c b/vendor/modernc.org/libc/musl/src/complex/clogf.c new file mode 100644 index 000000000..0389d4723 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/clogf.c @@ -0,0 +1,12 @@ +#include "complex_impl.h" + +// FIXME + +float complex clogf(float complex z) +{ + float r, phi; + + r = cabsf(z); + phi = cargf(z); + return CMPLXF(logf(r), phi); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/clogl.c b/vendor/modernc.org/libc/musl/src/complex/clogl.c new file mode 100644 index 000000000..88e83e87c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/clogl.c @@ -0,0 +1,18 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex clogl(long double complex z) +{ + return clog(z); +} +#else +// FIXME +long double complex clogl(long double complex z) +{ + long double r, phi; + + r = cabsl(z); + phi = cargl(z); + return CMPLXL(logl(r), phi); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/conj.c b/vendor/modernc.org/libc/musl/src/complex/conj.c new file mode 100644 index 000000000..a3b19a4aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/conj.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +double complex conj(double complex z) +{ + return CMPLX(creal(z), -cimag(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/conjf.c b/vendor/modernc.org/libc/musl/src/complex/conjf.c new file mode 100644 index 000000000..b2195c840 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/conjf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float complex conjf(float complex z) +{ + return CMPLXF(crealf(z), -cimagf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/conjl.c b/vendor/modernc.org/libc/musl/src/complex/conjl.c new file mode 100644 index 000000000..87a4ebecc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/conjl.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +long double complex conjl(long double complex z) +{ + return CMPLXL(creall(z), -cimagl(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cpow.c b/vendor/modernc.org/libc/musl/src/complex/cpow.c new file mode 100644 index 000000000..1137d3911 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cpow.c @@ -0,0 +1,8 @@ +#include "complex_impl.h" + +/* pow(z, c) = exp(c log(z)), See C99 G.6.4.1 */ + +double complex cpow(double complex z, double complex c) +{ + return cexp(c * clog(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cpowf.c b/vendor/modernc.org/libc/musl/src/complex/cpowf.c new file mode 100644 index 000000000..f3fd4b7b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cpowf.c @@ -0,0 +1,6 @@ +#include "complex_impl.h" + +float complex cpowf(float complex z, float complex c) +{ + return cexpf(c * clogf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cpowl.c b/vendor/modernc.org/libc/musl/src/complex/cpowl.c new file mode 100644 index 000000000..be36f0461 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cpowl.c @@ -0,0 +1,13 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex cpowl(long double complex z, long double complex c) +{ + return cpow(z, c); +} +#else +long double complex cpowl(long double complex z, long double complex c) +{ + return cexpl(c * clogl(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/cproj.c b/vendor/modernc.org/libc/musl/src/complex/cproj.c new file mode 100644 index 000000000..9ae1e17c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cproj.c @@ -0,0 +1,8 @@ +#include "complex_impl.h" + +double complex cproj(double complex z) +{ + if (isinf(creal(z)) || isinf(cimag(z))) + return CMPLX(INFINITY, copysign(0.0, creal(z))); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cprojf.c b/vendor/modernc.org/libc/musl/src/complex/cprojf.c new file mode 100644 index 000000000..03fab339d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cprojf.c @@ -0,0 +1,8 @@ +#include "complex_impl.h" + +float complex cprojf(float complex z) +{ + if (isinf(crealf(z)) || isinf(cimagf(z))) + return CMPLXF(INFINITY, copysignf(0.0, crealf(z))); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/complex/cprojl.c b/vendor/modernc.org/libc/musl/src/complex/cprojl.c new file mode 100644 index 000000000..38a494c5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/cprojl.c @@ -0,0 +1,15 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex cprojl(long double complex z) +{ + return cproj(z); +} +#else +long double complex cprojl(long double complex z) +{ + if (isinf(creall(z)) || isinf(cimagl(z))) + return CMPLXL(INFINITY, copysignl(0.0, creall(z))); + return z; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/creal.c b/vendor/modernc.org/libc/musl/src/complex/creal.c new file mode 100644 index 000000000..f6703040d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/creal.c @@ -0,0 +1,6 @@ +#include + +double (creal)(double complex z) +{ + return creal(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/crealf.c b/vendor/modernc.org/libc/musl/src/complex/crealf.c new file mode 100644 index 000000000..5dc3ff1d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/crealf.c @@ -0,0 +1,6 @@ +#include + +float (crealf)(float complex z) +{ + return crealf(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/creall.c b/vendor/modernc.org/libc/musl/src/complex/creall.c new file mode 100644 index 000000000..fd9dc3470 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/creall.c @@ -0,0 +1,6 @@ +#include + +long double (creall)(long double complex z) +{ + return creall(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csin.c b/vendor/modernc.org/libc/musl/src/complex/csin.c new file mode 100644 index 000000000..535c4bf8b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csin.c @@ -0,0 +1,9 @@ +#include "complex_impl.h" + +/* sin(z) = -i sinh(i z) */ + +double complex csin(double complex z) +{ + z = csinh(CMPLX(-cimag(z), creal(z))); + return CMPLX(cimag(z), -creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csinf.c b/vendor/modernc.org/libc/musl/src/complex/csinf.c new file mode 100644 index 000000000..69f5164eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csinf.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +float complex csinf(float complex z) +{ + z = csinhf(CMPLXF(-cimagf(z), crealf(z))); + return CMPLXF(cimagf(z), -crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csinh.c b/vendor/modernc.org/libc/musl/src/complex/csinh.c new file mode 100644 index 000000000..eda0ab59f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csinh.c @@ -0,0 +1,141 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_csinh.c */ +/*- + * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic sine of a complex argument z = x + i y. + * + * sinh(z) = sinh(x+iy) + * = sinh(x) cos(y) + i cosh(x) sin(y). + * + * Exceptional values are noted in the comments within the source code. + * These values and the return value were taken from n1124.pdf. + */ + +#include "complex_impl.h" + +static const double huge = 0x1p1023; + +double complex csinh(double complex z) +{ + double x, y, h; + int32_t hx, hy, ix, iy, lx, ly; + + x = creal(z); + y = cimag(z); + + EXTRACT_WORDS(hx, lx, x); + EXTRACT_WORDS(hy, ly, y); + + ix = 0x7fffffff & hx; + iy = 0x7fffffff & hy; + + /* Handle the nearly-non-exceptional cases where x and y are finite. */ + if (ix < 0x7ff00000 && iy < 0x7ff00000) { + if ((iy | ly) == 0) + return CMPLX(sinh(x), y); + if (ix < 0x40360000) /* small x: normal case */ + return CMPLX(sinh(x) * cos(y), cosh(x) * sin(y)); + + /* |x| >= 22, so cosh(x) ~= exp(|x|) */ + if (ix < 0x40862e42) { + /* x < 710: exp(|x|) won't overflow */ + h = exp(fabs(x)) * 0.5; + return CMPLX(copysign(h, x) * cos(y), h * sin(y)); + } else if (ix < 0x4096bbaa) { + /* x < 1455: scale to avoid overflow */ + z = __ldexp_cexp(CMPLX(fabs(x), y), -1); + return CMPLX(creal(z) * copysign(1, x), cimag(z)); + } else { + /* x >= 1455: the result always overflows */ + h = huge * x; + return CMPLX(h * cos(y), h * h * sin(y)); + } + } + + /* + * sinh(+-0 +- I Inf) = sign(d(+-0, dNaN))0 + I dNaN. + * The sign of 0 in the result is unspecified. Choice = normally + * the same as dNaN. Raise the invalid floating-point exception. + * + * sinh(+-0 +- I NaN) = sign(d(+-0, NaN))0 + I d(NaN). + * The sign of 0 in the result is unspecified. Choice = normally + * the same as d(NaN). + */ + if ((ix | lx) == 0 && iy >= 0x7ff00000) + return CMPLX(copysign(0, x * (y - y)), y - y); + + /* + * sinh(+-Inf +- I 0) = +-Inf + I +-0. + * + * sinh(NaN +- I 0) = d(NaN) + I +-0. + */ + if ((iy | ly) == 0 && ix >= 0x7ff00000) { + if (((hx & 0xfffff) | lx) == 0) + return CMPLX(x, y); + return CMPLX(x, copysign(0, y)); + } + + /* + * sinh(x +- I Inf) = dNaN + I dNaN. + * Raise the invalid floating-point exception for finite nonzero x. + * + * sinh(x + I NaN) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception for finite + * nonzero x. Choice = don't raise (except for signaling NaNs). + */ + if (ix < 0x7ff00000 && iy >= 0x7ff00000) + return CMPLX(y - y, x * (y - y)); + + /* + * sinh(+-Inf + I NaN) = +-Inf + I d(NaN). + * The sign of Inf in the result is unspecified. Choice = normally + * the same as d(NaN). + * + * sinh(+-Inf +- I Inf) = +Inf + I dNaN. + * The sign of Inf in the result is unspecified. Choice = always +. + * Raise the invalid floating-point exception. + * + * sinh(+-Inf + I y) = +-Inf cos(y) + I Inf sin(y) + */ + if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) { + if (iy >= 0x7ff00000) + return CMPLX(x * x, x * (y - y)); + return CMPLX(x * cos(y), INFINITY * sin(y)); + } + + /* + * sinh(NaN + I NaN) = d(NaN) + I d(NaN). + * + * sinh(NaN +- I Inf) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception. + * Choice = raise. + * + * sinh(NaN + I y) = d(NaN) + I d(NaN). + * Optionally raises the invalid floating-point exception for finite + * nonzero y. Choice = don't raise (except for signaling NaNs). + */ + return CMPLX((x * x) * (y - y), (x + x) * (y - y)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csinhf.c b/vendor/modernc.org/libc/musl/src/complex/csinhf.c new file mode 100644 index 000000000..eb1d98c52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csinhf.c @@ -0,0 +1,90 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_csinhf.c */ +/*- + * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic sine of a complex argument z. See s_csinh.c for details. + */ + +#include "complex_impl.h" + +static const float huge = 0x1p127; + +float complex csinhf(float complex z) +{ + float x, y, h; + int32_t hx, hy, ix, iy; + + x = crealf(z); + y = cimagf(z); + + GET_FLOAT_WORD(hx, x); + GET_FLOAT_WORD(hy, y); + + ix = 0x7fffffff & hx; + iy = 0x7fffffff & hy; + + if (ix < 0x7f800000 && iy < 0x7f800000) { + if (iy == 0) + return CMPLXF(sinhf(x), y); + if (ix < 0x41100000) /* small x: normal case */ + return CMPLXF(sinhf(x) * cosf(y), coshf(x) * sinf(y)); + + /* |x| >= 9, so cosh(x) ~= exp(|x|) */ + if (ix < 0x42b17218) { + /* x < 88.7: expf(|x|) won't overflow */ + h = expf(fabsf(x)) * 0.5f; + return CMPLXF(copysignf(h, x) * cosf(y), h * sinf(y)); + } else if (ix < 0x4340b1e7) { + /* x < 192.7: scale to avoid overflow */ + z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1); + return CMPLXF(crealf(z) * copysignf(1, x), cimagf(z)); + } else { + /* x >= 192.7: the result always overflows */ + h = huge * x; + return CMPLXF(h * cosf(y), h * h * sinf(y)); + } + } + + if (ix == 0 && iy >= 0x7f800000) + return CMPLXF(copysignf(0, x * (y - y)), y - y); + + if (iy == 0 && ix >= 0x7f800000) { + if ((hx & 0x7fffff) == 0) + return CMPLXF(x, y); + return CMPLXF(x, copysignf(0, y)); + } + + if (ix < 0x7f800000 && iy >= 0x7f800000) + return CMPLXF(y - y, x * (y - y)); + + if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) { + if (iy >= 0x7f800000) + return CMPLXF(x * x, x * (y - y)); + return CMPLXF(x * cosf(y), INFINITY * sinf(y)); + } + + return CMPLXF((x * x) * (y - y), (x + x) * (y - y)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csinhl.c b/vendor/modernc.org/libc/musl/src/complex/csinhl.c new file mode 100644 index 000000000..09fd18f93 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csinhl.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +//FIXME +long double complex csinhl(long double complex z) +{ + return csinh(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csinl.c b/vendor/modernc.org/libc/musl/src/complex/csinl.c new file mode 100644 index 000000000..90a4eb377 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csinl.c @@ -0,0 +1,14 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex csinl(long double complex z) +{ + return csin(z); +} +#else +long double complex csinl(long double complex z) +{ + z = csinhl(CMPLXL(-cimagl(z), creall(z))); + return CMPLXL(cimagl(z), -creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/complex/csqrt.c b/vendor/modernc.org/libc/musl/src/complex/csqrt.c new file mode 100644 index 000000000..c36de0019 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csqrt.c @@ -0,0 +1,100 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_csqrt.c */ +/*- + * Copyright (c) 2007 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +/* + * gcc doesn't implement complex multiplication or division correctly, + * so we need to handle infinities specially. We turn on this pragma to + * notify conforming c99 compilers that the fast-but-incorrect code that + * gcc generates is acceptable, since the special cases have already been + * handled. + */ +#pragma STDC CX_LIMITED_RANGE ON + +/* We risk spurious overflow for components >= DBL_MAX / (1 + sqrt(2)). */ +#define THRESH 0x1.a827999fcef32p+1022 + +double complex csqrt(double complex z) +{ + double complex result; + double a, b; + double t; + int scale; + + a = creal(z); + b = cimag(z); + + /* Handle special cases. */ + if (z == 0) + return CMPLX(0, b); + if (isinf(b)) + return CMPLX(INFINITY, b); + if (isnan(a)) { + t = (b - b) / (b - b); /* raise invalid if b is not a NaN */ + return CMPLX(a, t); /* return NaN + NaN i */ + } + if (isinf(a)) { + /* + * csqrt(inf + NaN i) = inf + NaN i + * csqrt(inf + y i) = inf + 0 i + * csqrt(-inf + NaN i) = NaN +- inf i + * csqrt(-inf + y i) = 0 + inf i + */ + if (signbit(a)) + return CMPLX(fabs(b - b), copysign(a, b)); + else + return CMPLX(a, copysign(b - b, b)); + } + /* + * The remaining special case (b is NaN) is handled just fine by + * the normal code path below. + */ + + /* Scale to avoid overflow. */ + if (fabs(a) >= THRESH || fabs(b) >= THRESH) { + a *= 0.25; + b *= 0.25; + scale = 1; + } else { + scale = 0; + } + + /* Algorithm 312, CACM vol 10, Oct 1967. */ + if (a >= 0) { + t = sqrt((a + hypot(a, b)) * 0.5); + result = CMPLX(t, b / (2 * t)); + } else { + t = sqrt((-a + hypot(a, b)) * 0.5); + result = CMPLX(fabs(b) / (2 * t), copysign(t, b)); + } + + /* Rescale. */ + if (scale) + result *= 2; + return result; +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csqrtf.c b/vendor/modernc.org/libc/musl/src/complex/csqrtf.c new file mode 100644 index 000000000..a6163974d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csqrtf.c @@ -0,0 +1,82 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_csqrtf.c */ +/*- + * Copyright (c) 2007 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "complex_impl.h" + +/* + * gcc doesn't implement complex multiplication or division correctly, + * so we need to handle infinities specially. We turn on this pragma to + * notify conforming c99 compilers that the fast-but-incorrect code that + * gcc generates is acceptable, since the special cases have already been + * handled. + */ +#pragma STDC CX_LIMITED_RANGE ON + +float complex csqrtf(float complex z) +{ + float a = crealf(z), b = cimagf(z); + double t; + + /* Handle special cases. */ + if (z == 0) + return CMPLXF(0, b); + if (isinf(b)) + return CMPLXF(INFINITY, b); + if (isnan(a)) { + t = (b - b) / (b - b); /* raise invalid if b is not a NaN */ + return CMPLXF(a, t); /* return NaN + NaN i */ + } + if (isinf(a)) { + /* + * csqrtf(inf + NaN i) = inf + NaN i + * csqrtf(inf + y i) = inf + 0 i + * csqrtf(-inf + NaN i) = NaN +- inf i + * csqrtf(-inf + y i) = 0 + inf i + */ + if (signbit(a)) + return CMPLXF(fabsf(b - b), copysignf(a, b)); + else + return CMPLXF(a, copysignf(b - b, b)); + } + /* + * The remaining special case (b is NaN) is handled just fine by + * the normal code path below. + */ + + /* + * We compute t in double precision to avoid overflow and to + * provide correct rounding in nearly all cases. + * This is Algorithm 312, CACM vol 10, Oct 1967. + */ + if (a >= 0) { + t = sqrt((a + hypot(a, b)) * 0.5); + return CMPLXF(t, b / (2.0 * t)); + } else { + t = sqrt((-a + hypot(a, b)) * 0.5); + return CMPLXF(fabsf(b) / (2.0 * t), copysignf(t, b)); + } +} diff --git a/vendor/modernc.org/libc/musl/src/complex/csqrtl.c b/vendor/modernc.org/libc/musl/src/complex/csqrtl.c new file mode 100644 index 000000000..225393790 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/csqrtl.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +//FIXME +long double complex csqrtl(long double complex z) +{ + return csqrt(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctan.c b/vendor/modernc.org/libc/musl/src/complex/ctan.c new file mode 100644 index 000000000..918717bfc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctan.c @@ -0,0 +1,9 @@ +#include "complex_impl.h" + +/* tan(z) = -i tanh(i z) */ + +double complex ctan(double complex z) +{ + z = ctanh(CMPLX(-cimag(z), creal(z))); + return CMPLX(cimag(z), -creal(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctanf.c b/vendor/modernc.org/libc/musl/src/complex/ctanf.c new file mode 100644 index 000000000..04c3ff198 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctanf.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +float complex ctanf(float complex z) +{ + z = ctanhf(CMPLXF(-cimagf(z), crealf(z))); + return CMPLXF(cimagf(z), -crealf(z)); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctanh.c b/vendor/modernc.org/libc/musl/src/complex/ctanh.c new file mode 100644 index 000000000..54004cd7d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctanh.c @@ -0,0 +1,129 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_ctanh.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic tangent of a complex argument z = x + i y. + * + * The algorithm is from: + * + * W. Kahan. Branch Cuts for Complex Elementary Functions or Much + * Ado About Nothing's Sign Bit. In The State of the Art in + * Numerical Analysis, pp. 165 ff. Iserles and Powell, eds., 1987. + * + * Method: + * + * Let t = tan(x) + * beta = 1/cos^2(y) + * s = sinh(x) + * rho = cosh(x) + * + * We have: + * + * tanh(z) = sinh(z) / cosh(z) + * + * sinh(x) cos(y) + i cosh(x) sin(y) + * = --------------------------------- + * cosh(x) cos(y) + i sinh(x) sin(y) + * + * cosh(x) sinh(x) / cos^2(y) + i tan(y) + * = ------------------------------------- + * 1 + sinh^2(x) / cos^2(y) + * + * beta rho s + i t + * = ---------------- + * 1 + beta s^2 + * + * Modifications: + * + * I omitted the original algorithm's handling of overflow in tan(x) after + * verifying with nearpi.c that this can't happen in IEEE single or double + * precision. I also handle large x differently. + */ + +#include "complex_impl.h" + +double complex ctanh(double complex z) +{ + double x, y; + double t, beta, s, rho, denom; + uint32_t hx, ix, lx; + + x = creal(z); + y = cimag(z); + + EXTRACT_WORDS(hx, lx, x); + ix = hx & 0x7fffffff; + + /* + * ctanh(NaN + i 0) = NaN + i 0 + * + * ctanh(NaN + i y) = NaN + i NaN for y != 0 + * + * The imaginary part has the sign of x*sin(2*y), but there's no + * special effort to get this right. + * + * ctanh(+-Inf +- i Inf) = +-1 +- 0 + * + * ctanh(+-Inf + i y) = +-1 + 0 sin(2y) for y finite + * + * The imaginary part of the sign is unspecified. This special + * case is only needed to avoid a spurious invalid exception when + * y is infinite. + */ + if (ix >= 0x7ff00000) { + if ((ix & 0xfffff) | lx) /* x is NaN */ + return CMPLX(x, (y == 0 ? y : x * y)); + SET_HIGH_WORD(x, hx - 0x40000000); /* x = copysign(1, x) */ + return CMPLX(x, copysign(0, isinf(y) ? y : sin(y) * cos(y))); + } + + /* + * ctanh(+-0 + i NAN) = +-0 + i NaN + * ctanh(+-0 +- i Inf) = +-0 + i NaN + * ctanh(x + i NAN) = NaN + i NaN + * ctanh(x +- i Inf) = NaN + i NaN + */ + if (!isfinite(y)) + return CMPLX(x ? y - y : x, y - y); + + /* + * ctanh(+-huge + i +-y) ~= +-1 +- i 2sin(2y)/exp(2x), using the + * approximation sinh^2(huge) ~= exp(2*huge) / 4. + * We use a modified formula to avoid spurious overflow. + */ + if (ix >= 0x40360000) { /* x >= 22 */ + double exp_mx = exp(-fabs(x)); + return CMPLX(copysign(1, x), 4 * sin(y) * cos(y) * exp_mx * exp_mx); + } + + /* Kahan's algorithm */ + t = tan(y); + beta = 1.0 + t * t; /* = 1 / cos^2(y) */ + s = sinh(x); + rho = sqrt(1 + s * s); /* = cosh(x) */ + denom = 1 + beta * s * s; + return CMPLX((beta * rho * s) / denom, t / denom); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctanhf.c b/vendor/modernc.org/libc/musl/src/complex/ctanhf.c new file mode 100644 index 000000000..7f422ba7f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctanhf.c @@ -0,0 +1,66 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_ctanhf.c */ +/*- + * Copyright (c) 2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Hyperbolic tangent of a complex argument z. See s_ctanh.c for details. + */ + +#include "complex_impl.h" + +float complex ctanhf(float complex z) +{ + float x, y; + float t, beta, s, rho, denom; + uint32_t hx, ix; + + x = crealf(z); + y = cimagf(z); + + GET_FLOAT_WORD(hx, x); + ix = hx & 0x7fffffff; + + if (ix >= 0x7f800000) { + if (ix & 0x7fffff) + return CMPLXF(x, (y == 0 ? y : x * y)); + SET_FLOAT_WORD(x, hx - 0x40000000); + return CMPLXF(x, copysignf(0, isinf(y) ? y : sinf(y) * cosf(y))); + } + + if (!isfinite(y)) + return CMPLXF(ix ? y - y : x, y - y); + + if (ix >= 0x41300000) { /* x >= 11 */ + float exp_mx = expf(-fabsf(x)); + return CMPLXF(copysignf(1, x), 4 * sinf(y) * cosf(y) * exp_mx * exp_mx); + } + + t = tanf(y); + beta = 1.0 + t * t; + s = sinhf(x); + rho = sqrtf(1 + s * s); + denom = 1 + beta * s * s; + return CMPLXF((beta * rho * s) / denom, t / denom); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctanhl.c b/vendor/modernc.org/libc/musl/src/complex/ctanhl.c new file mode 100644 index 000000000..45d5862c8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctanhl.c @@ -0,0 +1,7 @@ +#include "complex_impl.h" + +//FIXME +long double complex ctanhl(long double complex z) +{ + return ctanh(z); +} diff --git a/vendor/modernc.org/libc/musl/src/complex/ctanl.c b/vendor/modernc.org/libc/musl/src/complex/ctanl.c new file mode 100644 index 000000000..4b87420d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/complex/ctanl.c @@ -0,0 +1,14 @@ +#include "complex_impl.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double complex ctanl(long double complex z) +{ + return ctan(z); +} +#else +long double complex ctanl(long double complex z) +{ + z = ctanhl(CMPLXL(-cimagl(z), creall(z))); + return CMPLXL(cimagl(z), -creall(z)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/conf/confstr.c b/vendor/modernc.org/libc/musl/src/conf/confstr.c new file mode 100644 index 000000000..02cb1aa25 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/conf/confstr.c @@ -0,0 +1,17 @@ +#include +#include +#include + +size_t confstr(int name, char *buf, size_t len) +{ + const char *s = ""; + if (!name) { + s = "/bin:/usr/bin"; + } else if ((name&~4U)!=1 && name-_CS_POSIX_V6_ILP32_OFF32_CFLAGS>33U) { + errno = EINVAL; + return 0; + } + // snprintf is overkill but avoid wasting code size to implement + // this completely useless function and its truncation semantics + return snprintf(buf, len, "%s", s) + 1; +} diff --git a/vendor/modernc.org/libc/musl/src/conf/fpathconf.c b/vendor/modernc.org/libc/musl/src/conf/fpathconf.c new file mode 100644 index 000000000..e6aca5cff --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/conf/fpathconf.c @@ -0,0 +1,35 @@ +#include +#include +#include + +long fpathconf(int fd, int name) +{ + static const short values[] = { + [_PC_LINK_MAX] = _POSIX_LINK_MAX, + [_PC_MAX_CANON] = _POSIX_MAX_CANON, + [_PC_MAX_INPUT] = _POSIX_MAX_INPUT, + [_PC_NAME_MAX] = NAME_MAX, + [_PC_PATH_MAX] = PATH_MAX, + [_PC_PIPE_BUF] = PIPE_BUF, + [_PC_CHOWN_RESTRICTED] = 1, + [_PC_NO_TRUNC] = 1, + [_PC_VDISABLE] = 0, + [_PC_SYNC_IO] = 1, + [_PC_ASYNC_IO] = -1, + [_PC_PRIO_IO] = -1, + [_PC_SOCK_MAXBUF] = -1, + [_PC_FILESIZEBITS] = FILESIZEBITS, + [_PC_REC_INCR_XFER_SIZE] = 4096, + [_PC_REC_MAX_XFER_SIZE] = 4096, + [_PC_REC_MIN_XFER_SIZE] = 4096, + [_PC_REC_XFER_ALIGN] = 4096, + [_PC_ALLOC_SIZE_MIN] = 4096, + [_PC_SYMLINK_MAX] = -1, + [_PC_2_SYMLINKS] = 1 + }; + if (name >= sizeof(values)/sizeof(values[0])) { + errno = EINVAL; + return -1; + } + return values[name]; +} diff --git a/vendor/modernc.org/libc/musl/src/conf/legacy.c b/vendor/modernc.org/libc/musl/src/conf/legacy.c new file mode 100644 index 000000000..f1d9e3253 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/conf/legacy.c @@ -0,0 +1,22 @@ +#include +#include + +int get_nprocs_conf() +{ + return sysconf(_SC_NPROCESSORS_CONF); +} + +int get_nprocs() +{ + return sysconf(_SC_NPROCESSORS_ONLN); +} + +long get_phys_pages() +{ + return sysconf(_SC_PHYS_PAGES); +} + +long get_avphys_pages() +{ + return sysconf(_SC_AVPHYS_PAGES); +} diff --git a/vendor/modernc.org/libc/musl/src/conf/pathconf.c b/vendor/modernc.org/libc/musl/src/conf/pathconf.c new file mode 100644 index 000000000..01e19c59b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/conf/pathconf.c @@ -0,0 +1,6 @@ +#include + +long pathconf(const char *path, int name) +{ + return fpathconf(-1, name); +} diff --git a/vendor/modernc.org/libc/musl/src/conf/sysconf.c b/vendor/modernc.org/libc/musl/src/conf/sysconf.c new file mode 100644 index 000000000..3baaed322 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/conf/sysconf.c @@ -0,0 +1,219 @@ +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "libc.h" + +#define JT(x) (-256|(x)) +#define VER JT(1) +#define JT_ARG_MAX JT(2) +#define JT_MQ_PRIO_MAX JT(3) +#define JT_PAGE_SIZE JT(4) +#define JT_SEM_VALUE_MAX JT(5) +#define JT_NPROCESSORS_CONF JT(6) +#define JT_NPROCESSORS_ONLN JT(7) +#define JT_PHYS_PAGES JT(8) +#define JT_AVPHYS_PAGES JT(9) +#define JT_ZERO JT(10) +#define JT_DELAYTIMER_MAX JT(11) + +#define RLIM(x) (-32768|(RLIMIT_ ## x)) + +long sysconf(int name) +{ + static const short values[] = { + [_SC_ARG_MAX] = JT_ARG_MAX, + [_SC_CHILD_MAX] = RLIM(NPROC), + [_SC_CLK_TCK] = 100, + [_SC_NGROUPS_MAX] = 32, + [_SC_OPEN_MAX] = RLIM(NOFILE), + [_SC_STREAM_MAX] = -1, + [_SC_TZNAME_MAX] = TZNAME_MAX, + [_SC_JOB_CONTROL] = 1, + [_SC_SAVED_IDS] = 1, + [_SC_REALTIME_SIGNALS] = VER, + [_SC_PRIORITY_SCHEDULING] = -1, + [_SC_TIMERS] = VER, + [_SC_ASYNCHRONOUS_IO] = VER, + [_SC_PRIORITIZED_IO] = -1, + [_SC_SYNCHRONIZED_IO] = -1, + [_SC_FSYNC] = VER, + [_SC_MAPPED_FILES] = VER, + [_SC_MEMLOCK] = VER, + [_SC_MEMLOCK_RANGE] = VER, + [_SC_MEMORY_PROTECTION] = VER, + [_SC_MESSAGE_PASSING] = VER, + [_SC_SEMAPHORES] = VER, + [_SC_SHARED_MEMORY_OBJECTS] = VER, + [_SC_AIO_LISTIO_MAX] = -1, + [_SC_AIO_MAX] = -1, + [_SC_AIO_PRIO_DELTA_MAX] = JT_ZERO, /* ?? */ + [_SC_DELAYTIMER_MAX] = JT_DELAYTIMER_MAX, + [_SC_MQ_OPEN_MAX] = -1, + [_SC_MQ_PRIO_MAX] = JT_MQ_PRIO_MAX, + [_SC_VERSION] = VER, + [_SC_PAGE_SIZE] = JT_PAGE_SIZE, + [_SC_RTSIG_MAX] = _NSIG - 1 - 31 - 3, + [_SC_SEM_NSEMS_MAX] = SEM_NSEMS_MAX, + [_SC_SEM_VALUE_MAX] = JT_SEM_VALUE_MAX, + [_SC_SIGQUEUE_MAX] = -1, + [_SC_TIMER_MAX] = -1, + [_SC_BC_BASE_MAX] = _POSIX2_BC_BASE_MAX, + [_SC_BC_DIM_MAX] = _POSIX2_BC_DIM_MAX, + [_SC_BC_SCALE_MAX] = _POSIX2_BC_SCALE_MAX, + [_SC_BC_STRING_MAX] = _POSIX2_BC_STRING_MAX, + [_SC_COLL_WEIGHTS_MAX] = COLL_WEIGHTS_MAX, + [_SC_EXPR_NEST_MAX] = -1, + [_SC_LINE_MAX] = -1, + [_SC_RE_DUP_MAX] = RE_DUP_MAX, + [_SC_2_VERSION] = VER, + [_SC_2_C_BIND] = VER, + [_SC_2_C_DEV] = -1, + [_SC_2_FORT_DEV] = -1, + [_SC_2_FORT_RUN] = -1, + [_SC_2_SW_DEV] = -1, + [_SC_2_LOCALEDEF] = -1, + [_SC_IOV_MAX] = IOV_MAX, + [_SC_THREADS] = VER, + [_SC_THREAD_SAFE_FUNCTIONS] = VER, + [_SC_GETGR_R_SIZE_MAX] = -1, + [_SC_GETPW_R_SIZE_MAX] = -1, + [_SC_LOGIN_NAME_MAX] = 256, + [_SC_TTY_NAME_MAX] = TTY_NAME_MAX, + [_SC_THREAD_DESTRUCTOR_ITERATIONS] = PTHREAD_DESTRUCTOR_ITERATIONS, + [_SC_THREAD_KEYS_MAX] = PTHREAD_KEYS_MAX, + [_SC_THREAD_STACK_MIN] = PTHREAD_STACK_MIN, + [_SC_THREAD_THREADS_MAX] = -1, + [_SC_THREAD_ATTR_STACKADDR] = VER, + [_SC_THREAD_ATTR_STACKSIZE] = VER, + [_SC_THREAD_PRIORITY_SCHEDULING] = VER, + [_SC_THREAD_PRIO_INHERIT] = -1, + [_SC_THREAD_PRIO_PROTECT] = -1, + [_SC_THREAD_PROCESS_SHARED] = VER, + [_SC_NPROCESSORS_CONF] = JT_NPROCESSORS_CONF, + [_SC_NPROCESSORS_ONLN] = JT_NPROCESSORS_ONLN, + [_SC_PHYS_PAGES] = JT_PHYS_PAGES, + [_SC_AVPHYS_PAGES] = JT_AVPHYS_PAGES, + [_SC_ATEXIT_MAX] = -1, + [_SC_PASS_MAX] = -1, + [_SC_XOPEN_VERSION] = _XOPEN_VERSION, + [_SC_XOPEN_XCU_VERSION] = _XOPEN_VERSION, + [_SC_XOPEN_UNIX] = 1, + [_SC_XOPEN_CRYPT] = -1, + [_SC_XOPEN_ENH_I18N] = 1, + [_SC_XOPEN_SHM] = 1, + [_SC_2_CHAR_TERM] = -1, + [_SC_2_UPE] = -1, + [_SC_XOPEN_XPG2] = -1, + [_SC_XOPEN_XPG3] = -1, + [_SC_XOPEN_XPG4] = -1, + [_SC_NZERO] = NZERO, + [_SC_XBS5_ILP32_OFF32] = -1, + [_SC_XBS5_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : -1, + [_SC_XBS5_LP64_OFF64] = sizeof(long)==8 ? 1 : -1, + [_SC_XBS5_LPBIG_OFFBIG] = -1, + [_SC_XOPEN_LEGACY] = -1, + [_SC_XOPEN_REALTIME] = -1, + [_SC_XOPEN_REALTIME_THREADS] = -1, + [_SC_ADVISORY_INFO] = VER, + [_SC_BARRIERS] = VER, + [_SC_CLOCK_SELECTION] = VER, + [_SC_CPUTIME] = VER, + [_SC_THREAD_CPUTIME] = VER, + [_SC_MONOTONIC_CLOCK] = VER, + [_SC_READER_WRITER_LOCKS] = VER, + [_SC_SPIN_LOCKS] = VER, + [_SC_REGEXP] = 1, + [_SC_SHELL] = 1, + [_SC_SPAWN] = VER, + [_SC_SPORADIC_SERVER] = -1, + [_SC_THREAD_SPORADIC_SERVER] = -1, + [_SC_TIMEOUTS] = VER, + [_SC_TYPED_MEMORY_OBJECTS] = -1, + [_SC_2_PBS] = -1, + [_SC_2_PBS_ACCOUNTING] = -1, + [_SC_2_PBS_LOCATE] = -1, + [_SC_2_PBS_MESSAGE] = -1, + [_SC_2_PBS_TRACK] = -1, + [_SC_SYMLOOP_MAX] = SYMLOOP_MAX, + [_SC_STREAMS] = JT_ZERO, + [_SC_2_PBS_CHECKPOINT] = -1, + [_SC_V6_ILP32_OFF32] = -1, + [_SC_V6_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : -1, + [_SC_V6_LP64_OFF64] = sizeof(long)==8 ? 1 : -1, + [_SC_V6_LPBIG_OFFBIG] = -1, + [_SC_HOST_NAME_MAX] = HOST_NAME_MAX, + [_SC_TRACE] = -1, + [_SC_TRACE_EVENT_FILTER] = -1, + [_SC_TRACE_INHERIT] = -1, + [_SC_TRACE_LOG] = -1, + + [_SC_IPV6] = VER, + [_SC_RAW_SOCKETS] = VER, + [_SC_V7_ILP32_OFF32] = -1, + [_SC_V7_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : -1, + [_SC_V7_LP64_OFF64] = sizeof(long)==8 ? 1 : -1, + [_SC_V7_LPBIG_OFFBIG] = -1, + [_SC_SS_REPL_MAX] = -1, + [_SC_TRACE_EVENT_NAME_MAX] = -1, + [_SC_TRACE_NAME_MAX] = -1, + [_SC_TRACE_SYS_MAX] = -1, + [_SC_TRACE_USER_EVENT_MAX] = -1, + [_SC_XOPEN_STREAMS] = JT_ZERO, + [_SC_THREAD_ROBUST_PRIO_INHERIT] = -1, + [_SC_THREAD_ROBUST_PRIO_PROTECT] = -1, + }; + + if (name >= sizeof(values)/sizeof(values[0]) || !values[name]) { + errno = EINVAL; + return -1; + } else if (values[name] >= -1) { + return values[name]; + } else if (values[name] < -256) { + struct rlimit lim; + getrlimit(values[name]&16383, &lim); + if (lim.rlim_cur == RLIM_INFINITY) + return -1; + return lim.rlim_cur > LONG_MAX ? LONG_MAX : lim.rlim_cur; + } + + switch ((unsigned char)values[name]) { + case VER & 255: + return _POSIX_VERSION; + case JT_ARG_MAX & 255: + return ARG_MAX; + case JT_MQ_PRIO_MAX & 255: + return MQ_PRIO_MAX; + case JT_PAGE_SIZE & 255: + return PAGE_SIZE; + case JT_SEM_VALUE_MAX & 255: + return SEM_VALUE_MAX; + case JT_DELAYTIMER_MAX & 255: + return DELAYTIMER_MAX; + case JT_NPROCESSORS_CONF & 255: + case JT_NPROCESSORS_ONLN & 255: ; + unsigned char set[128] = {1}; + int i, cnt; + __syscall(SYS_sched_getaffinity, 0, sizeof set, set); + for (i=cnt=0; i LONG_MAX) ? LONG_MAX : mem; + case JT_ZERO & 255: + return 0; + } + return values[name]; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt.c b/vendor/modernc.org/libc/musl/src/crypt/crypt.c new file mode 100644 index 000000000..e6237e397 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt.c @@ -0,0 +1,14 @@ +#include +#include + +char *crypt(const char *key, const char *salt) +{ + /* This buffer is sufficiently large for all + * currently-supported hash types. It needs to be updated if + * longer hashes are added. The cast to struct crypt_data * is + * purely to meet the public API requirements of the crypt_r + * function; the implementation of crypt_r uses the object + * purely as a char buffer. */ + static char buf[128]; + return __crypt_r(key, salt, (struct crypt_data *)buf); +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_blowfish.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_blowfish.c new file mode 100644 index 000000000..d3f798517 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_blowfish.c @@ -0,0 +1,798 @@ +/* Modified by Rich Felker in for inclusion in musl libc, based on + * Solar Designer's second size-optimized version sent to the musl + * mailing list. */ + +/* + * The crypt_blowfish homepage is: + * + * http://www.openwall.com/crypt/ + * + * This code comes from John the Ripper password cracker, with reentrant + * and crypt(3) interfaces added, but optimizations specific to password + * cracking removed. + * + * Written by Solar Designer in 1998-2012. + * No copyright is claimed, and the software is hereby placed in the public + * domain. In case this attempt to disclaim copyright and place the software + * in the public domain is deemed null and void, then the software is + * Copyright (c) 1998-2012 Solar Designer and it is hereby released to the + * general public under the following terms: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * There's ABSOLUTELY NO WARRANTY, express or implied. + * + * It is my intent that you should be able to use this on your system, + * as part of a software package, or anywhere else to improve security, + * ensure compatibility, or for any other purpose. I would appreciate + * it if you give credit where it is due and keep your modifications in + * the public domain as well, but I don't require that in order to let + * you place this code and any modifications you make under a license + * of your choice. + * + * This implementation is mostly compatible with OpenBSD's bcrypt.c (prefix + * "$2a$") by Niels Provos , and uses some of his + * ideas. The password hashing algorithm was designed by David Mazieres + * . For more information on the level of compatibility, + * please refer to the comments in BF_set_key() below and to the included + * crypt(3) man page. + * + * There's a paper on the algorithm that explains its design decisions: + * + * http://www.usenix.org/events/usenix99/provos.html + * + * Some of the tricks in BF_ROUND might be inspired by Eric Young's + * Blowfish library (I can't be sure if I would think of something if I + * hadn't seen his code). + */ + +#include +#include + +typedef uint32_t BF_word; +typedef int32_t BF_word_signed; + +/* Number of Blowfish rounds, this is also hardcoded into a few places */ +#define BF_N 16 + +typedef BF_word BF_key[BF_N + 2]; + +typedef union { + struct { + BF_key P; + BF_word S[4][0x100]; + } s; + BF_word PS[BF_N + 2 + 4 * 0x100]; +} BF_ctx; + +/* + * Magic IV for 64 Blowfish encryptions that we do at the end. + * The string is "OrpheanBeholderScryDoubt" on big-endian. + */ +static const BF_word BF_magic_w[6] = { + 0x4F727068, 0x65616E42, 0x65686F6C, + 0x64657253, 0x63727944, 0x6F756274 +}; + +/* + * P-box and S-box tables initialized with digits of Pi. + */ +static const BF_ctx BF_init_state = {{ + { + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b + }, { + { + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + }, { + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 + }, { + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 + }, { + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + } + } +}}; + +static const unsigned char BF_itoa64[64 + 1] = + "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + +static const unsigned char BF_atoi64[0x60] = { + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, + 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 64, 64, 64, 64, 64, + 64, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 64, 64, 64, 64, 64 +}; + +#define BF_safe_atoi64(dst, src) \ +{ \ + tmp = (unsigned char)(src); \ + if ((unsigned int)(tmp -= 0x20) >= 0x60) return -1; \ + tmp = BF_atoi64[tmp]; \ + if (tmp > 63) return -1; \ + (dst) = tmp; \ +} + +static int BF_decode(BF_word *dst, const char *src, int size) +{ + unsigned char *dptr = (unsigned char *)dst; + unsigned char *end = dptr + size; + const unsigned char *sptr = (const unsigned char *)src; + unsigned int tmp, c1, c2, c3, c4; + + do { + BF_safe_atoi64(c1, *sptr++); + BF_safe_atoi64(c2, *sptr++); + *dptr++ = (c1 << 2) | ((c2 & 0x30) >> 4); + if (dptr >= end) break; + + BF_safe_atoi64(c3, *sptr++); + *dptr++ = ((c2 & 0x0F) << 4) | ((c3 & 0x3C) >> 2); + if (dptr >= end) break; + + BF_safe_atoi64(c4, *sptr++); + *dptr++ = ((c3 & 0x03) << 6) | c4; + } while (dptr < end); + + return 0; +} + +static void BF_encode(char *dst, const BF_word *src, int size) +{ + const unsigned char *sptr = (const unsigned char *)src; + const unsigned char *end = sptr + size; + unsigned char *dptr = (unsigned char *)dst; + unsigned int c1, c2; + + do { + c1 = *sptr++; + *dptr++ = BF_itoa64[c1 >> 2]; + c1 = (c1 & 0x03) << 4; + if (sptr >= end) { + *dptr++ = BF_itoa64[c1]; + break; + } + + c2 = *sptr++; + c1 |= c2 >> 4; + *dptr++ = BF_itoa64[c1]; + c1 = (c2 & 0x0f) << 2; + if (sptr >= end) { + *dptr++ = BF_itoa64[c1]; + break; + } + + c2 = *sptr++; + c1 |= c2 >> 6; + *dptr++ = BF_itoa64[c1]; + *dptr++ = BF_itoa64[c2 & 0x3f]; + } while (sptr < end); +} + +static void BF_swap(BF_word *x, int count) +{ + if ((union { int i; char c; }){1}.c) + do { + BF_word tmp = *x; + tmp = (tmp << 16) | (tmp >> 16); + *x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF); + } while (--count); +} + +#define BF_ROUND(L, R, N) \ + tmp1 = L & 0xFF; \ + tmp2 = L >> 8; \ + tmp2 &= 0xFF; \ + tmp3 = L >> 16; \ + tmp3 &= 0xFF; \ + tmp4 = L >> 24; \ + tmp1 = ctx->s.S[3][tmp1]; \ + tmp2 = ctx->s.S[2][tmp2]; \ + tmp3 = ctx->s.S[1][tmp3]; \ + tmp3 += ctx->s.S[0][tmp4]; \ + tmp3 ^= tmp2; \ + R ^= ctx->s.P[N + 1]; \ + tmp3 += tmp1; \ + R ^= tmp3; + +static BF_word BF_encrypt(BF_ctx *ctx, + BF_word L, BF_word R, + BF_word *start, BF_word *end) +{ + BF_word tmp1, tmp2, tmp3, tmp4; + BF_word *ptr = start; + + do { + L ^= ctx->s.P[0]; +#if 0 + BF_ROUND(L, R, 0); + BF_ROUND(R, L, 1); + BF_ROUND(L, R, 2); + BF_ROUND(R, L, 3); + BF_ROUND(L, R, 4); + BF_ROUND(R, L, 5); + BF_ROUND(L, R, 6); + BF_ROUND(R, L, 7); + BF_ROUND(L, R, 8); + BF_ROUND(R, L, 9); + BF_ROUND(L, R, 10); + BF_ROUND(R, L, 11); + BF_ROUND(L, R, 12); + BF_ROUND(R, L, 13); + BF_ROUND(L, R, 14); + BF_ROUND(R, L, 15); +#else + for (int i=0; i<16; i+=2) { + BF_ROUND(L, R, i); + BF_ROUND(R, L, i+1); + } +#endif + tmp4 = R; + R = L; + L = tmp4 ^ ctx->s.P[BF_N + 1]; + *ptr++ = L; + *ptr++ = R; + } while (ptr < end); + + return L; +} + +static void BF_set_key(const char *key, BF_key expanded, BF_key initial, + unsigned char flags) +{ + const char *ptr = key; + unsigned int bug, i, j; + BF_word safety, sign, diff, tmp[2]; + +/* + * There was a sign extension bug in older revisions of this function. While + * we would have liked to simply fix the bug and move on, we have to provide + * a backwards compatibility feature (essentially the bug) for some systems and + * a safety measure for some others. The latter is needed because for certain + * multiple inputs to the buggy algorithm there exist easily found inputs to + * the correct algorithm that produce the same hash. Thus, we optionally + * deviate from the correct algorithm just enough to avoid such collisions. + * While the bug itself affected the majority of passwords containing + * characters with the 8th bit set (although only a percentage of those in a + * collision-producing way), the anti-collision safety measure affects + * only a subset of passwords containing the '\xff' character (not even all of + * those passwords, just some of them). This character is not found in valid + * UTF-8 sequences and is rarely used in popular 8-bit character encodings. + * Thus, the safety measure is unlikely to cause much annoyance, and is a + * reasonable tradeoff to use when authenticating against existing hashes that + * are not reliably known to have been computed with the correct algorithm. + * + * We use an approach that tries to minimize side-channel leaks of password + * information - that is, we mostly use fixed-cost bitwise operations instead + * of branches or table lookups. (One conditional branch based on password + * length remains. It is not part of the bug aftermath, though, and is + * difficult and possibly unreasonable to avoid given the use of C strings by + * the caller, which results in similar timing leaks anyway.) + * + * For actual implementation, we set an array index in the variable "bug" + * (0 means no bug, 1 means sign extension bug emulation) and a flag in the + * variable "safety" (bit 16 is set when the safety measure is requested). + * Valid combinations of settings are: + * + * Prefix "$2a$": bug = 0, safety = 0x10000 + * Prefix "$2x$": bug = 1, safety = 0 + * Prefix "$2y$": bug = 0, safety = 0 + */ + bug = flags & 1; + safety = ((BF_word)flags & 2) << 15; + + sign = diff = 0; + + for (i = 0; i < BF_N + 2; i++) { + tmp[0] = tmp[1] = 0; + for (j = 0; j < 4; j++) { + tmp[0] <<= 8; + tmp[0] |= (unsigned char)*ptr; /* correct */ + tmp[1] <<= 8; + tmp[1] |= (signed char)*ptr; /* bug */ +/* + * Sign extension in the first char has no effect - nothing to overwrite yet, + * and those extra 24 bits will be fully shifted out of the 32-bit word. For + * chars 2, 3, 4 in each four-char block, we set bit 7 of "sign" if sign + * extension in tmp[1] occurs. Once this flag is set, it remains set. + */ + if (j) + sign |= tmp[1] & 0x80; + if (!*ptr) + ptr = key; + else + ptr++; + } + diff |= tmp[0] ^ tmp[1]; /* Non-zero on any differences */ + + expanded[i] = tmp[bug]; + initial[i] = BF_init_state.s.P[i] ^ tmp[bug]; + } + +/* + * At this point, "diff" is zero iff the correct and buggy algorithms produced + * exactly the same result. If so and if "sign" is non-zero, which indicates + * that there was a non-benign sign extension, this means that we have a + * collision between the correctly computed hash for this password and a set of + * passwords that could be supplied to the buggy algorithm. Our safety measure + * is meant to protect from such many-buggy to one-correct collisions, by + * deviating from the correct algorithm in such cases. Let's check for this. + */ + diff |= diff >> 16; /* still zero iff exact match */ + diff &= 0xffff; /* ditto */ + diff += 0xffff; /* bit 16 set iff "diff" was non-zero (on non-match) */ + sign <<= 9; /* move the non-benign sign extension flag to bit 16 */ + sign &= ~diff & safety; /* action needed? */ + +/* + * If we have determined that we need to deviate from the correct algorithm, + * flip bit 16 in initial expanded key. (The choice of 16 is arbitrary, but + * let's stick to it now. It came out of the approach we used above, and it's + * not any worse than any other choice we could make.) + * + * It is crucial that we don't do the same to the expanded key used in the main + * Eksblowfish loop. By doing it to only one of these two, we deviate from a + * state that could be directly specified by a password to the buggy algorithm + * (and to the fully correct one as well, but that's a side-effect). + */ + initial[0] ^= sign; +} + +static char *BF_crypt(const char *key, const char *setting, + char *output, BF_word min) +{ + static const unsigned char flags_by_subtype[26] = + {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0}; + struct { + BF_ctx ctx; + BF_key expanded_key; + union { + BF_word salt[4]; + BF_word output[6]; + } binary; + } data; + BF_word count; + int i; + + if (setting[0] != '$' || + setting[1] != '2' || + setting[2] - 'a' > 25U || + !flags_by_subtype[setting[2] - 'a'] || + setting[3] != '$' || + setting[4] - '0' > 1U || + setting[5] - '0' > 9U || + setting[6] != '$') { + return NULL; + } + + count = (BF_word)1 << ((setting[4] - '0') * 10 + (setting[5] - '0')); + if (count < min || BF_decode(data.binary.salt, &setting[7], 16)) { + return NULL; + } + BF_swap(data.binary.salt, 4); + + BF_set_key(key, data.expanded_key, data.ctx.s.P, + flags_by_subtype[setting[2] - 'a']); + + memcpy(data.ctx.s.S, BF_init_state.s.S, sizeof(data.ctx.s.S)); + + { + BF_word L = 0, R = 0; + BF_word *ptr = &data.ctx.PS[0]; + do { + L = BF_encrypt(&data.ctx, + L ^ data.binary.salt[0], R ^ data.binary.salt[1], + ptr, ptr); + R = *(ptr + 1); + ptr += 2; + + if (ptr >= &data.ctx.PS[BF_N + 2 + 4 * 0x100]) + break; + + L = BF_encrypt(&data.ctx, + L ^ data.binary.salt[2], R ^ data.binary.salt[3], + ptr, ptr); + R = *(ptr + 1); + ptr += 2; + } while (1); + } + + do { + int done; + + for (i = 0; i < BF_N + 2; i += 2) { + data.ctx.s.P[i] ^= data.expanded_key[i]; + data.ctx.s.P[i + 1] ^= data.expanded_key[i + 1]; + } + + done = 0; + do { + BF_encrypt(&data.ctx, 0, 0, + &data.ctx.PS[0], + &data.ctx.PS[BF_N + 2 + 4 * 0x100]); + + if (done) + break; + done = 1; + + { + BF_word tmp1, tmp2, tmp3, tmp4; + + tmp1 = data.binary.salt[0]; + tmp2 = data.binary.salt[1]; + tmp3 = data.binary.salt[2]; + tmp4 = data.binary.salt[3]; + for (i = 0; i < BF_N; i += 4) { + data.ctx.s.P[i] ^= tmp1; + data.ctx.s.P[i + 1] ^= tmp2; + data.ctx.s.P[i + 2] ^= tmp3; + data.ctx.s.P[i + 3] ^= tmp4; + } + data.ctx.s.P[16] ^= tmp1; + data.ctx.s.P[17] ^= tmp2; + } + } while (1); + } while (--count); + + for (i = 0; i < 6; i += 2) { + BF_word L, LR[2]; + + L = BF_magic_w[i]; + LR[1] = BF_magic_w[i + 1]; + + count = 64; + do { + L = BF_encrypt(&data.ctx, L, LR[1], + &LR[0], &LR[0]); + } while (--count); + + data.binary.output[i] = L; + data.binary.output[i + 1] = LR[1]; + } + + memcpy(output, setting, 7 + 22 - 1); + output[7 + 22 - 1] = BF_itoa64[ + BF_atoi64[setting[7 + 22 - 1] - 0x20] & 0x30]; + +/* This has to be bug-compatible with the original implementation, so + * only encode 23 of the 24 bytes. :-) */ + BF_swap(data.binary.output, 6); + BF_encode(&output[7 + 22], data.binary.output, 23); + output[7 + 22 + 31] = '\0'; + + return output; +} + +/* + * Please preserve the runtime self-test. It serves two purposes at once: + * + * 1. We really can't afford the risk of producing incompatible hashes e.g. + * when there's something like gcc bug 26587 again, whereas an application or + * library integrating this code might not also integrate our external tests or + * it might not run them after every build. Even if it does, the miscompile + * might only occur on the production build, but not on a testing build (such + * as because of different optimization settings). It is painful to recover + * from incorrectly-computed hashes - merely fixing whatever broke is not + * enough. Thus, a proactive measure like this self-test is needed. + * + * 2. We don't want to leave sensitive data from our actual password hash + * computation on the stack or in registers. Previous revisions of the code + * would do explicit cleanups, but simply running the self-test after hash + * computation is more reliable. + * + * The performance cost of this quick self-test is around 0.6% at the "$2a$08" + * setting. + */ +char *__crypt_blowfish(const char *key, const char *setting, char *output) +{ + const char *test_key = "8b \xd0\xc1\xd2\xcf\xcc\xd8"; + const char *test_setting = "$2a$00$abcdefghijklmnopqrstuu"; + static const char test_hash[2][34] = + {"VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55", /* $2x$ */ + "i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55"}; /* $2a$, $2y$ */ + char *retval; + const char *p; + int ok; + struct { + char s[7 + 22 + 1]; + char o[7 + 22 + 31 + 1 + 1 + 1]; + } buf; + +/* Hash the supplied password */ + retval = BF_crypt(key, setting, output, 16); + +/* + * Do a quick self-test. It is important that we make both calls to BF_crypt() + * from the same scope such that they likely use the same stack locations, + * which makes the second call overwrite the first call's sensitive data on the + * stack and makes it more likely that any alignment related issues would be + * detected by the self-test. + */ + memcpy(buf.s, test_setting, sizeof(buf.s)); + if (retval) + buf.s[2] = setting[2]; + memset(buf.o, 0x55, sizeof(buf.o)); + buf.o[sizeof(buf.o) - 1] = 0; + p = BF_crypt(test_key, buf.s, buf.o, 1); + + ok = (p == buf.o && + !memcmp(p, buf.s, 7 + 22) && + !memcmp(p + (7 + 22), + test_hash[buf.s[2] & 1], + 31 + 1 + 1 + 1)); + + { + const char *k = "\xff\xa3" "34" "\xff\xff\xff\xa3" "345"; + BF_key ae, ai, ye, yi; + BF_set_key(k, ae, ai, 2); /* $2a$ */ + BF_set_key(k, ye, yi, 4); /* $2y$ */ + ai[0] ^= 0x10000; /* undo the safety (for comparison) */ + ok = ok && ai[0] == 0xdb9c59bc && ye[17] == 0x33343500 && + !memcmp(ae, ye, sizeof(ae)) && + !memcmp(ai, yi, sizeof(ai)); + } + + if (ok && retval) + return retval; + + return "*"; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_des.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_des.c new file mode 100644 index 000000000..338a8f371 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_des.c @@ -0,0 +1,1016 @@ +/* + * This version has been further modified by Rich Felker, primary author + * and maintainer of musl libc, to remove table generation code and + * replaced all runtime-generated constant tables with static-initialized + * tables in the binary, in the interest of minimizing non-shareable + * memory usage and stack size requirements. + */ +/* + * This version is derived from the original implementation of FreeSec + * (release 1.1) by David Burren. I've made it reentrant, reduced its memory + * usage from about 70 KB to about 7 KB (with only minimal performance impact + * and keeping code size about the same), made the handling of invalid salts + * mostly UFC-crypt compatible, added a quick runtime self-test (which also + * serves to zeroize the stack from sensitive data), and added optional tests. + * - Solar Designer + */ + +/* + * FreeSec: libcrypt for NetBSD + * + * Copyright (c) 1994 David Burren + * Copyright (c) 2000,2002,2010,2012 Solar Designer + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of other contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Owl: Owl/packages/glibc/crypt_freesec.c,v 1.6 2010/02/20 14:45:06 solar Exp $ + * $Id: crypt.c,v 1.15 1994/09/13 04:58:49 davidb Exp $ + * + * This is an original implementation of the DES and the crypt(3) interfaces + * by David Burren. It has been heavily re-worked by Solar Designer. + */ + +#include +#include + +#include "crypt_des.h" + +#define _PASSWORD_EFMT1 '_' + +static const unsigned char key_shifts[16] = { + 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 +}; + +static const uint32_t psbox[8][64] = { + { + 0x00808200,0x00000000,0x00008000,0x00808202, + 0x00808002,0x00008202,0x00000002,0x00008000, + 0x00000200,0x00808200,0x00808202,0x00000200, + 0x00800202,0x00808002,0x00800000,0x00000002, + 0x00000202,0x00800200,0x00800200,0x00008200, + 0x00008200,0x00808000,0x00808000,0x00800202, + 0x00008002,0x00800002,0x00800002,0x00008002, + 0x00000000,0x00000202,0x00008202,0x00800000, + 0x00008000,0x00808202,0x00000002,0x00808000, + 0x00808200,0x00800000,0x00800000,0x00000200, + 0x00808002,0x00008000,0x00008200,0x00800002, + 0x00000200,0x00000002,0x00800202,0x00008202, + 0x00808202,0x00008002,0x00808000,0x00800202, + 0x00800002,0x00000202,0x00008202,0x00808200, + 0x00000202,0x00800200,0x00800200,0x00000000, + 0x00008002,0x00008200,0x00000000,0x00808002, + },{ + 0x40084010,0x40004000,0x00004000,0x00084010, + 0x00080000,0x00000010,0x40080010,0x40004010, + 0x40000010,0x40084010,0x40084000,0x40000000, + 0x40004000,0x00080000,0x00000010,0x40080010, + 0x00084000,0x00080010,0x40004010,0x00000000, + 0x40000000,0x00004000,0x00084010,0x40080000, + 0x00080010,0x40000010,0x00000000,0x00084000, + 0x00004010,0x40084000,0x40080000,0x00004010, + 0x00000000,0x00084010,0x40080010,0x00080000, + 0x40004010,0x40080000,0x40084000,0x00004000, + 0x40080000,0x40004000,0x00000010,0x40084010, + 0x00084010,0x00000010,0x00004000,0x40000000, + 0x00004010,0x40084000,0x00080000,0x40000010, + 0x00080010,0x40004010,0x40000010,0x00080010, + 0x00084000,0x00000000,0x40004000,0x00004010, + 0x40000000,0x40080010,0x40084010,0x00084000, + },{ + 0x00000104,0x04010100,0x00000000,0x04010004, + 0x04000100,0x00000000,0x00010104,0x04000100, + 0x00010004,0x04000004,0x04000004,0x00010000, + 0x04010104,0x00010004,0x04010000,0x00000104, + 0x04000000,0x00000004,0x04010100,0x00000100, + 0x00010100,0x04010000,0x04010004,0x00010104, + 0x04000104,0x00010100,0x00010000,0x04000104, + 0x00000004,0x04010104,0x00000100,0x04000000, + 0x04010100,0x04000000,0x00010004,0x00000104, + 0x00010000,0x04010100,0x04000100,0x00000000, + 0x00000100,0x00010004,0x04010104,0x04000100, + 0x04000004,0x00000100,0x00000000,0x04010004, + 0x04000104,0x00010000,0x04000000,0x04010104, + 0x00000004,0x00010104,0x00010100,0x04000004, + 0x04010000,0x04000104,0x00000104,0x04010000, + 0x00010104,0x00000004,0x04010004,0x00010100, + },{ + 0x80401000,0x80001040,0x80001040,0x00000040, + 0x00401040,0x80400040,0x80400000,0x80001000, + 0x00000000,0x00401000,0x00401000,0x80401040, + 0x80000040,0x00000000,0x00400040,0x80400000, + 0x80000000,0x00001000,0x00400000,0x80401000, + 0x00000040,0x00400000,0x80001000,0x00001040, + 0x80400040,0x80000000,0x00001040,0x00400040, + 0x00001000,0x00401040,0x80401040,0x80000040, + 0x00400040,0x80400000,0x00401000,0x80401040, + 0x80000040,0x00000000,0x00000000,0x00401000, + 0x00001040,0x00400040,0x80400040,0x80000000, + 0x80401000,0x80001040,0x80001040,0x00000040, + 0x80401040,0x80000040,0x80000000,0x00001000, + 0x80400000,0x80001000,0x00401040,0x80400040, + 0x80001000,0x00001040,0x00400000,0x80401000, + 0x00000040,0x00400000,0x00001000,0x00401040, + },{ + 0x00000080,0x01040080,0x01040000,0x21000080, + 0x00040000,0x00000080,0x20000000,0x01040000, + 0x20040080,0x00040000,0x01000080,0x20040080, + 0x21000080,0x21040000,0x00040080,0x20000000, + 0x01000000,0x20040000,0x20040000,0x00000000, + 0x20000080,0x21040080,0x21040080,0x01000080, + 0x21040000,0x20000080,0x00000000,0x21000000, + 0x01040080,0x01000000,0x21000000,0x00040080, + 0x00040000,0x21000080,0x00000080,0x01000000, + 0x20000000,0x01040000,0x21000080,0x20040080, + 0x01000080,0x20000000,0x21040000,0x01040080, + 0x20040080,0x00000080,0x01000000,0x21040000, + 0x21040080,0x00040080,0x21000000,0x21040080, + 0x01040000,0x00000000,0x20040000,0x21000000, + 0x00040080,0x01000080,0x20000080,0x00040000, + 0x00000000,0x20040000,0x01040080,0x20000080, + },{ + 0x10000008,0x10200000,0x00002000,0x10202008, + 0x10200000,0x00000008,0x10202008,0x00200000, + 0x10002000,0x00202008,0x00200000,0x10000008, + 0x00200008,0x10002000,0x10000000,0x00002008, + 0x00000000,0x00200008,0x10002008,0x00002000, + 0x00202000,0x10002008,0x00000008,0x10200008, + 0x10200008,0x00000000,0x00202008,0x10202000, + 0x00002008,0x00202000,0x10202000,0x10000000, + 0x10002000,0x00000008,0x10200008,0x00202000, + 0x10202008,0x00200000,0x00002008,0x10000008, + 0x00200000,0x10002000,0x10000000,0x00002008, + 0x10000008,0x10202008,0x00202000,0x10200000, + 0x00202008,0x10202000,0x00000000,0x10200008, + 0x00000008,0x00002000,0x10200000,0x00202008, + 0x00002000,0x00200008,0x10002008,0x00000000, + 0x10202000,0x10000000,0x00200008,0x10002008, + },{ + 0x00100000,0x02100001,0x02000401,0x00000000, + 0x00000400,0x02000401,0x00100401,0x02100400, + 0x02100401,0x00100000,0x00000000,0x02000001, + 0x00000001,0x02000000,0x02100001,0x00000401, + 0x02000400,0x00100401,0x00100001,0x02000400, + 0x02000001,0x02100000,0x02100400,0x00100001, + 0x02100000,0x00000400,0x00000401,0x02100401, + 0x00100400,0x00000001,0x02000000,0x00100400, + 0x02000000,0x00100400,0x00100000,0x02000401, + 0x02000401,0x02100001,0x02100001,0x00000001, + 0x00100001,0x02000000,0x02000400,0x00100000, + 0x02100400,0x00000401,0x00100401,0x02100400, + 0x00000401,0x02000001,0x02100401,0x02100000, + 0x00100400,0x00000000,0x00000001,0x02100401, + 0x00000000,0x00100401,0x02100000,0x00000400, + 0x02000001,0x02000400,0x00000400,0x00100001, + },{ + 0x08000820,0x00000800,0x00020000,0x08020820, + 0x08000000,0x08000820,0x00000020,0x08000000, + 0x00020020,0x08020000,0x08020820,0x00020800, + 0x08020800,0x00020820,0x00000800,0x00000020, + 0x08020000,0x08000020,0x08000800,0x00000820, + 0x00020800,0x00020020,0x08020020,0x08020800, + 0x00000820,0x00000000,0x00000000,0x08020020, + 0x08000020,0x08000800,0x00020820,0x00020000, + 0x00020820,0x00020000,0x08020800,0x00000800, + 0x00000020,0x08020020,0x00000800,0x00020820, + 0x08000800,0x00000020,0x08000020,0x08020000, + 0x08020020,0x08000000,0x00020000,0x08000820, + 0x00000000,0x08020820,0x00020020,0x08000020, + 0x08020000,0x08000800,0x08000820,0x00000000, + 0x08020820,0x00020800,0x00020800,0x00000820, + 0x00000820,0x00020020,0x08000000,0x08020800, + }, +}; +static const uint32_t ip_maskl[16][16] = { + { + 0x00000000,0x00010000,0x00000000,0x00010000, + 0x01000000,0x01010000,0x01000000,0x01010000, + 0x00000000,0x00010000,0x00000000,0x00010000, + 0x01000000,0x01010000,0x01000000,0x01010000, + },{ + 0x00000000,0x00000001,0x00000000,0x00000001, + 0x00000100,0x00000101,0x00000100,0x00000101, + 0x00000000,0x00000001,0x00000000,0x00000001, + 0x00000100,0x00000101,0x00000100,0x00000101, + },{ + 0x00000000,0x00020000,0x00000000,0x00020000, + 0x02000000,0x02020000,0x02000000,0x02020000, + 0x00000000,0x00020000,0x00000000,0x00020000, + 0x02000000,0x02020000,0x02000000,0x02020000, + },{ + 0x00000000,0x00000002,0x00000000,0x00000002, + 0x00000200,0x00000202,0x00000200,0x00000202, + 0x00000000,0x00000002,0x00000000,0x00000002, + 0x00000200,0x00000202,0x00000200,0x00000202, + },{ + 0x00000000,0x00040000,0x00000000,0x00040000, + 0x04000000,0x04040000,0x04000000,0x04040000, + 0x00000000,0x00040000,0x00000000,0x00040000, + 0x04000000,0x04040000,0x04000000,0x04040000, + },{ + 0x00000000,0x00000004,0x00000000,0x00000004, + 0x00000400,0x00000404,0x00000400,0x00000404, + 0x00000000,0x00000004,0x00000000,0x00000004, + 0x00000400,0x00000404,0x00000400,0x00000404, + },{ + 0x00000000,0x00080000,0x00000000,0x00080000, + 0x08000000,0x08080000,0x08000000,0x08080000, + 0x00000000,0x00080000,0x00000000,0x00080000, + 0x08000000,0x08080000,0x08000000,0x08080000, + },{ + 0x00000000,0x00000008,0x00000000,0x00000008, + 0x00000800,0x00000808,0x00000800,0x00000808, + 0x00000000,0x00000008,0x00000000,0x00000008, + 0x00000800,0x00000808,0x00000800,0x00000808, + },{ + 0x00000000,0x00100000,0x00000000,0x00100000, + 0x10000000,0x10100000,0x10000000,0x10100000, + 0x00000000,0x00100000,0x00000000,0x00100000, + 0x10000000,0x10100000,0x10000000,0x10100000, + },{ + 0x00000000,0x00000010,0x00000000,0x00000010, + 0x00001000,0x00001010,0x00001000,0x00001010, + 0x00000000,0x00000010,0x00000000,0x00000010, + 0x00001000,0x00001010,0x00001000,0x00001010, + },{ + 0x00000000,0x00200000,0x00000000,0x00200000, + 0x20000000,0x20200000,0x20000000,0x20200000, + 0x00000000,0x00200000,0x00000000,0x00200000, + 0x20000000,0x20200000,0x20000000,0x20200000, + },{ + 0x00000000,0x00000020,0x00000000,0x00000020, + 0x00002000,0x00002020,0x00002000,0x00002020, + 0x00000000,0x00000020,0x00000000,0x00000020, + 0x00002000,0x00002020,0x00002000,0x00002020, + },{ + 0x00000000,0x00400000,0x00000000,0x00400000, + 0x40000000,0x40400000,0x40000000,0x40400000, + 0x00000000,0x00400000,0x00000000,0x00400000, + 0x40000000,0x40400000,0x40000000,0x40400000, + },{ + 0x00000000,0x00000040,0x00000000,0x00000040, + 0x00004000,0x00004040,0x00004000,0x00004040, + 0x00000000,0x00000040,0x00000000,0x00000040, + 0x00004000,0x00004040,0x00004000,0x00004040, + },{ + 0x00000000,0x00800000,0x00000000,0x00800000, + 0x80000000,0x80800000,0x80000000,0x80800000, + 0x00000000,0x00800000,0x00000000,0x00800000, + 0x80000000,0x80800000,0x80000000,0x80800000, + },{ + 0x00000000,0x00000080,0x00000000,0x00000080, + 0x00008000,0x00008080,0x00008000,0x00008080, + 0x00000000,0x00000080,0x00000000,0x00000080, + 0x00008000,0x00008080,0x00008000,0x00008080, + }, +}; +static const uint32_t ip_maskr[16][16] = { + { + 0x00000000,0x00000000,0x00010000,0x00010000, + 0x00000000,0x00000000,0x00010000,0x00010000, + 0x01000000,0x01000000,0x01010000,0x01010000, + 0x01000000,0x01000000,0x01010000,0x01010000, + },{ + 0x00000000,0x00000000,0x00000001,0x00000001, + 0x00000000,0x00000000,0x00000001,0x00000001, + 0x00000100,0x00000100,0x00000101,0x00000101, + 0x00000100,0x00000100,0x00000101,0x00000101, + },{ + 0x00000000,0x00000000,0x00020000,0x00020000, + 0x00000000,0x00000000,0x00020000,0x00020000, + 0x02000000,0x02000000,0x02020000,0x02020000, + 0x02000000,0x02000000,0x02020000,0x02020000, + },{ + 0x00000000,0x00000000,0x00000002,0x00000002, + 0x00000000,0x00000000,0x00000002,0x00000002, + 0x00000200,0x00000200,0x00000202,0x00000202, + 0x00000200,0x00000200,0x00000202,0x00000202, + },{ + 0x00000000,0x00000000,0x00040000,0x00040000, + 0x00000000,0x00000000,0x00040000,0x00040000, + 0x04000000,0x04000000,0x04040000,0x04040000, + 0x04000000,0x04000000,0x04040000,0x04040000, + },{ + 0x00000000,0x00000000,0x00000004,0x00000004, + 0x00000000,0x00000000,0x00000004,0x00000004, + 0x00000400,0x00000400,0x00000404,0x00000404, + 0x00000400,0x00000400,0x00000404,0x00000404, + },{ + 0x00000000,0x00000000,0x00080000,0x00080000, + 0x00000000,0x00000000,0x00080000,0x00080000, + 0x08000000,0x08000000,0x08080000,0x08080000, + 0x08000000,0x08000000,0x08080000,0x08080000, + },{ + 0x00000000,0x00000000,0x00000008,0x00000008, + 0x00000000,0x00000000,0x00000008,0x00000008, + 0x00000800,0x00000800,0x00000808,0x00000808, + 0x00000800,0x00000800,0x00000808,0x00000808, + },{ + 0x00000000,0x00000000,0x00100000,0x00100000, + 0x00000000,0x00000000,0x00100000,0x00100000, + 0x10000000,0x10000000,0x10100000,0x10100000, + 0x10000000,0x10000000,0x10100000,0x10100000, + },{ + 0x00000000,0x00000000,0x00000010,0x00000010, + 0x00000000,0x00000000,0x00000010,0x00000010, + 0x00001000,0x00001000,0x00001010,0x00001010, + 0x00001000,0x00001000,0x00001010,0x00001010, + },{ + 0x00000000,0x00000000,0x00200000,0x00200000, + 0x00000000,0x00000000,0x00200000,0x00200000, + 0x20000000,0x20000000,0x20200000,0x20200000, + 0x20000000,0x20000000,0x20200000,0x20200000, + },{ + 0x00000000,0x00000000,0x00000020,0x00000020, + 0x00000000,0x00000000,0x00000020,0x00000020, + 0x00002000,0x00002000,0x00002020,0x00002020, + 0x00002000,0x00002000,0x00002020,0x00002020, + },{ + 0x00000000,0x00000000,0x00400000,0x00400000, + 0x00000000,0x00000000,0x00400000,0x00400000, + 0x40000000,0x40000000,0x40400000,0x40400000, + 0x40000000,0x40000000,0x40400000,0x40400000, + },{ + 0x00000000,0x00000000,0x00000040,0x00000040, + 0x00000000,0x00000000,0x00000040,0x00000040, + 0x00004000,0x00004000,0x00004040,0x00004040, + 0x00004000,0x00004000,0x00004040,0x00004040, + },{ + 0x00000000,0x00000000,0x00800000,0x00800000, + 0x00000000,0x00000000,0x00800000,0x00800000, + 0x80000000,0x80000000,0x80800000,0x80800000, + 0x80000000,0x80000000,0x80800000,0x80800000, + },{ + 0x00000000,0x00000000,0x00000080,0x00000080, + 0x00000000,0x00000000,0x00000080,0x00000080, + 0x00008000,0x00008000,0x00008080,0x00008080, + 0x00008000,0x00008000,0x00008080,0x00008080, + }, +}; +static const uint32_t fp_maskl[8][16] = { + { + 0x00000000,0x40000000,0x00400000,0x40400000, + 0x00004000,0x40004000,0x00404000,0x40404000, + 0x00000040,0x40000040,0x00400040,0x40400040, + 0x00004040,0x40004040,0x00404040,0x40404040, + },{ + 0x00000000,0x10000000,0x00100000,0x10100000, + 0x00001000,0x10001000,0x00101000,0x10101000, + 0x00000010,0x10000010,0x00100010,0x10100010, + 0x00001010,0x10001010,0x00101010,0x10101010, + },{ + 0x00000000,0x04000000,0x00040000,0x04040000, + 0x00000400,0x04000400,0x00040400,0x04040400, + 0x00000004,0x04000004,0x00040004,0x04040004, + 0x00000404,0x04000404,0x00040404,0x04040404, + },{ + 0x00000000,0x01000000,0x00010000,0x01010000, + 0x00000100,0x01000100,0x00010100,0x01010100, + 0x00000001,0x01000001,0x00010001,0x01010001, + 0x00000101,0x01000101,0x00010101,0x01010101, + },{ + 0x00000000,0x80000000,0x00800000,0x80800000, + 0x00008000,0x80008000,0x00808000,0x80808000, + 0x00000080,0x80000080,0x00800080,0x80800080, + 0x00008080,0x80008080,0x00808080,0x80808080, + },{ + 0x00000000,0x20000000,0x00200000,0x20200000, + 0x00002000,0x20002000,0x00202000,0x20202000, + 0x00000020,0x20000020,0x00200020,0x20200020, + 0x00002020,0x20002020,0x00202020,0x20202020, + },{ + 0x00000000,0x08000000,0x00080000,0x08080000, + 0x00000800,0x08000800,0x00080800,0x08080800, + 0x00000008,0x08000008,0x00080008,0x08080008, + 0x00000808,0x08000808,0x00080808,0x08080808, + },{ + 0x00000000,0x02000000,0x00020000,0x02020000, + 0x00000200,0x02000200,0x00020200,0x02020200, + 0x00000002,0x02000002,0x00020002,0x02020002, + 0x00000202,0x02000202,0x00020202,0x02020202, + }, +}; +static const uint32_t fp_maskr[8][16] = { + { + 0x00000000,0x40000000,0x00400000,0x40400000, + 0x00004000,0x40004000,0x00404000,0x40404000, + 0x00000040,0x40000040,0x00400040,0x40400040, + 0x00004040,0x40004040,0x00404040,0x40404040, + },{ + 0x00000000,0x10000000,0x00100000,0x10100000, + 0x00001000,0x10001000,0x00101000,0x10101000, + 0x00000010,0x10000010,0x00100010,0x10100010, + 0x00001010,0x10001010,0x00101010,0x10101010, + },{ + 0x00000000,0x04000000,0x00040000,0x04040000, + 0x00000400,0x04000400,0x00040400,0x04040400, + 0x00000004,0x04000004,0x00040004,0x04040004, + 0x00000404,0x04000404,0x00040404,0x04040404, + },{ + 0x00000000,0x01000000,0x00010000,0x01010000, + 0x00000100,0x01000100,0x00010100,0x01010100, + 0x00000001,0x01000001,0x00010001,0x01010001, + 0x00000101,0x01000101,0x00010101,0x01010101, + },{ + 0x00000000,0x80000000,0x00800000,0x80800000, + 0x00008000,0x80008000,0x00808000,0x80808000, + 0x00000080,0x80000080,0x00800080,0x80800080, + 0x00008080,0x80008080,0x00808080,0x80808080, + },{ + 0x00000000,0x20000000,0x00200000,0x20200000, + 0x00002000,0x20002000,0x00202000,0x20202000, + 0x00000020,0x20000020,0x00200020,0x20200020, + 0x00002020,0x20002020,0x00202020,0x20202020, + },{ + 0x00000000,0x08000000,0x00080000,0x08080000, + 0x00000800,0x08000800,0x00080800,0x08080800, + 0x00000008,0x08000008,0x00080008,0x08080008, + 0x00000808,0x08000808,0x00080808,0x08080808, + },{ + 0x00000000,0x02000000,0x00020000,0x02020000, + 0x00000200,0x02000200,0x00020200,0x02020200, + 0x00000002,0x02000002,0x00020002,0x02020002, + 0x00000202,0x02000202,0x00020202,0x02020202, + }, +}; +static const uint32_t key_perm_maskl[8][16] = { + { + 0x00000000,0x00000000,0x00000010,0x00000010, + 0x00001000,0x00001000,0x00001010,0x00001010, + 0x00100000,0x00100000,0x00100010,0x00100010, + 0x00101000,0x00101000,0x00101010,0x00101010, + },{ + 0x00000000,0x00000000,0x00000020,0x00000020, + 0x00002000,0x00002000,0x00002020,0x00002020, + 0x00200000,0x00200000,0x00200020,0x00200020, + 0x00202000,0x00202000,0x00202020,0x00202020, + },{ + 0x00000000,0x00000000,0x00000040,0x00000040, + 0x00004000,0x00004000,0x00004040,0x00004040, + 0x00400000,0x00400000,0x00400040,0x00400040, + 0x00404000,0x00404000,0x00404040,0x00404040, + },{ + 0x00000000,0x00000000,0x00000080,0x00000080, + 0x00008000,0x00008000,0x00008080,0x00008080, + 0x00800000,0x00800000,0x00800080,0x00800080, + 0x00808000,0x00808000,0x00808080,0x00808080, + },{ + 0x00000000,0x00000001,0x00000100,0x00000101, + 0x00010000,0x00010001,0x00010100,0x00010101, + 0x01000000,0x01000001,0x01000100,0x01000101, + 0x01010000,0x01010001,0x01010100,0x01010101, + },{ + 0x00000000,0x00000002,0x00000200,0x00000202, + 0x00020000,0x00020002,0x00020200,0x00020202, + 0x02000000,0x02000002,0x02000200,0x02000202, + 0x02020000,0x02020002,0x02020200,0x02020202, + },{ + 0x00000000,0x00000004,0x00000400,0x00000404, + 0x00040000,0x00040004,0x00040400,0x00040404, + 0x04000000,0x04000004,0x04000400,0x04000404, + 0x04040000,0x04040004,0x04040400,0x04040404, + },{ + 0x00000000,0x00000008,0x00000800,0x00000808, + 0x00080000,0x00080008,0x00080800,0x00080808, + 0x08000000,0x08000008,0x08000800,0x08000808, + 0x08080000,0x08080008,0x08080800,0x08080808, + }, +}; +static const uint32_t key_perm_maskr[12][16] = { + { + 0x00000000,0x00000001,0x00000000,0x00000001, + 0x00000000,0x00000001,0x00000000,0x00000001, + 0x00000000,0x00000001,0x00000000,0x00000001, + 0x00000000,0x00000001,0x00000000,0x00000001, + },{ + 0x00000000,0x00000000,0x00100000,0x00100000, + 0x00001000,0x00001000,0x00101000,0x00101000, + 0x00000010,0x00000010,0x00100010,0x00100010, + 0x00001010,0x00001010,0x00101010,0x00101010, + },{ + 0x00000000,0x00000002,0x00000000,0x00000002, + 0x00000000,0x00000002,0x00000000,0x00000002, + 0x00000000,0x00000002,0x00000000,0x00000002, + 0x00000000,0x00000002,0x00000000,0x00000002, + },{ + 0x00000000,0x00000000,0x00200000,0x00200000, + 0x00002000,0x00002000,0x00202000,0x00202000, + 0x00000020,0x00000020,0x00200020,0x00200020, + 0x00002020,0x00002020,0x00202020,0x00202020, + },{ + 0x00000000,0x00000004,0x00000000,0x00000004, + 0x00000000,0x00000004,0x00000000,0x00000004, + 0x00000000,0x00000004,0x00000000,0x00000004, + 0x00000000,0x00000004,0x00000000,0x00000004, + },{ + 0x00000000,0x00000000,0x00400000,0x00400000, + 0x00004000,0x00004000,0x00404000,0x00404000, + 0x00000040,0x00000040,0x00400040,0x00400040, + 0x00004040,0x00004040,0x00404040,0x00404040, + },{ + 0x00000000,0x00000008,0x00000000,0x00000008, + 0x00000000,0x00000008,0x00000000,0x00000008, + 0x00000000,0x00000008,0x00000000,0x00000008, + 0x00000000,0x00000008,0x00000000,0x00000008, + },{ + 0x00000000,0x00000000,0x00800000,0x00800000, + 0x00008000,0x00008000,0x00808000,0x00808000, + 0x00000080,0x00000080,0x00800080,0x00800080, + 0x00008080,0x00008080,0x00808080,0x00808080, + },{ + 0x00000000,0x00000000,0x01000000,0x01000000, + 0x00010000,0x00010000,0x01010000,0x01010000, + 0x00000100,0x00000100,0x01000100,0x01000100, + 0x00010100,0x00010100,0x01010100,0x01010100, + },{ + 0x00000000,0x00000000,0x02000000,0x02000000, + 0x00020000,0x00020000,0x02020000,0x02020000, + 0x00000200,0x00000200,0x02000200,0x02000200, + 0x00020200,0x00020200,0x02020200,0x02020200, + },{ + 0x00000000,0x00000000,0x04000000,0x04000000, + 0x00040000,0x00040000,0x04040000,0x04040000, + 0x00000400,0x00000400,0x04000400,0x04000400, + 0x00040400,0x00040400,0x04040400,0x04040400, + },{ + 0x00000000,0x00000000,0x08000000,0x08000000, + 0x00080000,0x00080000,0x08080000,0x08080000, + 0x00000800,0x00000800,0x08000800,0x08000800, + 0x00080800,0x00080800,0x08080800,0x08080800, + }, +}; +static const uint32_t comp_maskl0[4][8] = { + { + 0x00000000,0x00020000,0x00000001,0x00020001, + 0x00080000,0x000a0000,0x00080001,0x000a0001, + },{ + 0x00000000,0x00001000,0x00000000,0x00001000, + 0x00000040,0x00001040,0x00000040,0x00001040, + },{ + 0x00000000,0x00400000,0x00000020,0x00400020, + 0x00008000,0x00408000,0x00008020,0x00408020, + },{ + 0x00000000,0x00100000,0x00000800,0x00100800, + 0x00000000,0x00100000,0x00000800,0x00100800, + }, +}; +static const uint32_t comp_maskr0[4][8] = { + { + 0x00000000,0x00200000,0x00020000,0x00220000, + 0x00000002,0x00200002,0x00020002,0x00220002, + },{ + 0x00000000,0x00000000,0x00100000,0x00100000, + 0x00000004,0x00000004,0x00100004,0x00100004, + },{ + 0x00000000,0x00004000,0x00000800,0x00004800, + 0x00000000,0x00004000,0x00000800,0x00004800, + },{ + 0x00000000,0x00400000,0x00008000,0x00408000, + 0x00000008,0x00400008,0x00008008,0x00408008, + }, +}; +static const uint32_t comp_maskl1[4][16] = { + { + 0x00000000,0x00000010,0x00004000,0x00004010, + 0x00040000,0x00040010,0x00044000,0x00044010, + 0x00000100,0x00000110,0x00004100,0x00004110, + 0x00040100,0x00040110,0x00044100,0x00044110, + },{ + 0x00000000,0x00800000,0x00000002,0x00800002, + 0x00000200,0x00800200,0x00000202,0x00800202, + 0x00200000,0x00a00000,0x00200002,0x00a00002, + 0x00200200,0x00a00200,0x00200202,0x00a00202, + },{ + 0x00000000,0x00002000,0x00000004,0x00002004, + 0x00000400,0x00002400,0x00000404,0x00002404, + 0x00000000,0x00002000,0x00000004,0x00002004, + 0x00000400,0x00002400,0x00000404,0x00002404, + },{ + 0x00000000,0x00010000,0x00000008,0x00010008, + 0x00000080,0x00010080,0x00000088,0x00010088, + 0x00000000,0x00010000,0x00000008,0x00010008, + 0x00000080,0x00010080,0x00000088,0x00010088, + }, +}; +static const uint32_t comp_maskr1[4][16] = { + { + 0x00000000,0x00000000,0x00000080,0x00000080, + 0x00002000,0x00002000,0x00002080,0x00002080, + 0x00000001,0x00000001,0x00000081,0x00000081, + 0x00002001,0x00002001,0x00002081,0x00002081, + },{ + 0x00000000,0x00000010,0x00800000,0x00800010, + 0x00010000,0x00010010,0x00810000,0x00810010, + 0x00000200,0x00000210,0x00800200,0x00800210, + 0x00010200,0x00010210,0x00810200,0x00810210, + },{ + 0x00000000,0x00000400,0x00001000,0x00001400, + 0x00080000,0x00080400,0x00081000,0x00081400, + 0x00000020,0x00000420,0x00001020,0x00001420, + 0x00080020,0x00080420,0x00081020,0x00081420, + },{ + 0x00000000,0x00000100,0x00040000,0x00040100, + 0x00000000,0x00000100,0x00040000,0x00040100, + 0x00000040,0x00000140,0x00040040,0x00040140, + 0x00000040,0x00000140,0x00040040,0x00040140, + }, +}; + +static const unsigned char ascii64[] = + "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +/* 0000000000111111111122222222223333333333444444444455555555556666 */ +/* 0123456789012345678901234567890123456789012345678901234567890123 */ + +/* + * We match the behavior of UFC-crypt on systems where "char" is signed by + * default (the majority), regardless of char's signedness on our system. + */ +static uint32_t ascii_to_bin(int ch) +{ + int sch = (ch < 0x80) ? ch : -(0x100 - ch); + int retval; + + retval = sch - '.'; + if (sch >= 'A') { + retval = sch - ('A' - 12); + if (sch >= 'a') + retval = sch - ('a' - 38); + } + retval &= 0x3f; + + return retval; +} + +/* + * When we choose to "support" invalid salts, nevertheless disallow those + * containing characters that would violate the passwd file format. + */ +static inline int ascii_is_unsafe(unsigned char ch) +{ + return !ch || ch == '\n' || ch == ':'; +} + +static uint32_t setup_salt(uint32_t salt) +{ + uint32_t obit, saltbit, saltbits; + unsigned int i; + + saltbits = 0; + saltbit = 1; + obit = 0x800000; + for (i = 0; i < 24; i++) { + if (salt & saltbit) + saltbits |= obit; + saltbit <<= 1; + obit >>= 1; + } + + return saltbits; +} + +void __des_setkey(const unsigned char *key, struct expanded_key *ekey) +{ + uint32_t k0, k1, rawkey0, rawkey1; + unsigned int shifts, round, i, ibit; + + rawkey0 = + (uint32_t)key[3] | + ((uint32_t)key[2] << 8) | + ((uint32_t)key[1] << 16) | + ((uint32_t)key[0] << 24); + rawkey1 = + (uint32_t)key[7] | + ((uint32_t)key[6] << 8) | + ((uint32_t)key[5] << 16) | + ((uint32_t)key[4] << 24); + + /* + * Do key permutation and split into two 28-bit subkeys. + */ + k0 = k1 = 0; + for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) { + unsigned int j = i << 1; + k0 |= key_perm_maskl[i][(rawkey0 >> ibit) & 0xf] | + key_perm_maskl[i + 4][(rawkey1 >> ibit) & 0xf]; + k1 |= key_perm_maskr[j][(rawkey0 >> ibit) & 0xf]; + ibit -= 4; + k1 |= key_perm_maskr[j + 1][(rawkey0 >> ibit) & 0xf] | + key_perm_maskr[i + 8][(rawkey1 >> ibit) & 0xf]; + } + + /* + * Rotate subkeys and do compression permutation. + */ + shifts = 0; + for (round = 0; round < 16; round++) { + uint32_t t0, t1; + uint32_t kl, kr; + + shifts += key_shifts[round]; + + t0 = (k0 << shifts) | (k0 >> (28 - shifts)); + t1 = (k1 << shifts) | (k1 >> (28 - shifts)); + + kl = kr = 0; + ibit = 25; + for (i = 0; i < 4; i++) { + kl |= comp_maskl0[i][(t0 >> ibit) & 7]; + kr |= comp_maskr0[i][(t1 >> ibit) & 7]; + ibit -= 4; + kl |= comp_maskl1[i][(t0 >> ibit) & 0xf]; + kr |= comp_maskr1[i][(t1 >> ibit) & 0xf]; + ibit -= 3; + } + ekey->l[round] = kl; + ekey->r[round] = kr; + } +} + +/* + * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. + */ +void __do_des(uint32_t l_in, uint32_t r_in, + uint32_t *l_out, uint32_t *r_out, + uint32_t count, uint32_t saltbits, const struct expanded_key *ekey) +{ + uint32_t l, r; + + /* + * Do initial permutation (IP). + */ + l = r = 0; + if (l_in | r_in) { + unsigned int i, ibit; + for (i = 0, ibit = 28; i < 8; i++, ibit -= 4) { + l |= ip_maskl[i][(l_in >> ibit) & 0xf] | + ip_maskl[i + 8][(r_in >> ibit) & 0xf]; + r |= ip_maskr[i][(l_in >> ibit) & 0xf] | + ip_maskr[i + 8][(r_in >> ibit) & 0xf]; + } + } + + while (count--) { + /* + * Do each round. + */ + unsigned int round = 16; + const uint32_t *kl = ekey->l; + const uint32_t *kr = ekey->r; + uint32_t f; + while (round--) { + uint32_t r48l, r48r; + /* + * Expand R to 48 bits (simulate the E-box). + */ + r48l = ((r & 0x00000001) << 23) + | ((r & 0xf8000000) >> 9) + | ((r & 0x1f800000) >> 11) + | ((r & 0x01f80000) >> 13) + | ((r & 0x001f8000) >> 15); + + r48r = ((r & 0x0001f800) << 7) + | ((r & 0x00001f80) << 5) + | ((r & 0x000001f8) << 3) + | ((r & 0x0000001f) << 1) + | ((r & 0x80000000) >> 31); + /* + * Do salting for crypt() and friends, and + * XOR with the permuted key. + */ + f = (r48l ^ r48r) & saltbits; + r48l ^= f ^ *kl++; + r48r ^= f ^ *kr++; + /* + * Do S-box lookups (which shrink it back to 32 bits) + * and do the P-box permutation at the same time. + */ + f = psbox[0][r48l >> 18] + | psbox[1][(r48l >> 12) & 0x3f] + | psbox[2][(r48l >> 6) & 0x3f] + | psbox[3][r48l & 0x3f] + | psbox[4][r48r >> 18] + | psbox[5][(r48r >> 12) & 0x3f] + | psbox[6][(r48r >> 6) & 0x3f] + | psbox[7][r48r & 0x3f]; + /* + * Now that we've permuted things, complete f(). + */ + f ^= l; + l = r; + r = f; + } + r = l; + l = f; + } + + /* + * Do final permutation (inverse of IP). + */ + { + unsigned int i, ibit; + uint32_t lo, ro; + lo = ro = 0; + for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) { + ro |= fp_maskr[i][(l >> ibit) & 0xf] | + fp_maskr[i + 4][(r >> ibit) & 0xf]; + ibit -= 4; + lo |= fp_maskl[i][(l >> ibit) & 0xf] | + fp_maskl[i + 4][(r >> ibit) & 0xf]; + } + *l_out = lo; + *r_out = ro; + } +} + +static void des_cipher(const unsigned char *in, unsigned char *out, + uint32_t count, uint32_t saltbits, const struct expanded_key *ekey) +{ + uint32_t l_out, r_out, rawl, rawr; + + rawl = + (uint32_t)in[3] | + ((uint32_t)in[2] << 8) | + ((uint32_t)in[1] << 16) | + ((uint32_t)in[0] << 24); + rawr = + (uint32_t)in[7] | + ((uint32_t)in[6] << 8) | + ((uint32_t)in[5] << 16) | + ((uint32_t)in[4] << 24); + + __do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey); + + out[0] = l_out >> 24; + out[1] = l_out >> 16; + out[2] = l_out >> 8; + out[3] = l_out; + out[4] = r_out >> 24; + out[5] = r_out >> 16; + out[6] = r_out >> 8; + out[7] = r_out; +} + +static char *_crypt_extended_r_uut(const char *_key, const char *_setting, char *output) +{ + const unsigned char *key = (const unsigned char *)_key; + const unsigned char *setting = (const unsigned char *)_setting; + struct expanded_key ekey; + unsigned char keybuf[8]; + unsigned char *p, *q; + uint32_t count, salt, l, r0, r1; + unsigned int i; + + /* + * Copy the key, shifting each character left by one bit and padding + * with zeroes. + */ + q = keybuf; + while (q <= &keybuf[sizeof(keybuf) - 1]) { + *q++ = *key << 1; + if (*key) + key++; + } + __des_setkey(keybuf, &ekey); + + if (*setting == _PASSWORD_EFMT1) { + /* + * "new"-style: + * setting - underscore, 4 chars of count, 4 chars of salt + * key - unlimited characters + */ + for (i = 1, count = 0; i < 5; i++) { + uint32_t value = ascii_to_bin(setting[i]); + if (ascii64[value] != setting[i]) + return NULL; + count |= value << (i - 1) * 6; + } + if (!count) + return NULL; + + for (i = 5, salt = 0; i < 9; i++) { + uint32_t value = ascii_to_bin(setting[i]); + if (ascii64[value] != setting[i]) + return NULL; + salt |= value << (i - 5) * 6; + } + + while (*key) { + /* + * Encrypt the key with itself. + */ + des_cipher(keybuf, keybuf, 1, 0, &ekey); + /* + * And XOR with the next 8 characters of the key. + */ + q = keybuf; + while (q <= &keybuf[sizeof(keybuf) - 1] && *key) + *q++ ^= *key++ << 1; + __des_setkey(keybuf, &ekey); + } + + memcpy(output, setting, 9); + output[9] = '\0'; + p = (unsigned char *)output + 9; + } else { + /* + * "old"-style: + * setting - 2 chars of salt + * key - up to 8 characters + */ + count = 25; + + if (ascii_is_unsafe(setting[0]) || ascii_is_unsafe(setting[1])) + return NULL; + + salt = (ascii_to_bin(setting[1]) << 6) + | ascii_to_bin(setting[0]); + + output[0] = setting[0]; + output[1] = setting[1]; + p = (unsigned char *)output + 2; + } + + /* + * Do it. + */ + __do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey); + + /* + * Now encode the result... + */ + l = (r0 >> 8); + *p++ = ascii64[(l >> 18) & 0x3f]; + *p++ = ascii64[(l >> 12) & 0x3f]; + *p++ = ascii64[(l >> 6) & 0x3f]; + *p++ = ascii64[l & 0x3f]; + + l = (r0 << 16) | ((r1 >> 16) & 0xffff); + *p++ = ascii64[(l >> 18) & 0x3f]; + *p++ = ascii64[(l >> 12) & 0x3f]; + *p++ = ascii64[(l >> 6) & 0x3f]; + *p++ = ascii64[l & 0x3f]; + + l = r1 << 2; + *p++ = ascii64[(l >> 12) & 0x3f]; + *p++ = ascii64[(l >> 6) & 0x3f]; + *p++ = ascii64[l & 0x3f]; + *p = 0; + + return output; +} + +char *__crypt_des(const char *key, const char *setting, char *output) +{ + const char *test_key = "\x80\xff\x80\x01 " + "\x7f\x81\x80\x80\x0d\x0a\xff\x7f \x81 test"; + const char *test_setting = "_0.../9Zz"; + const char *test_hash = "_0.../9ZzX7iSJNd21sU"; + char test_buf[21]; + char *retval; + const char *p; + + if (*setting != _PASSWORD_EFMT1) { + test_setting = "\x80x"; + test_hash = "\x80x22/wK52ZKGA"; + } + + /* + * Hash the supplied password. + */ + retval = _crypt_extended_r_uut(key, setting, output); + + /* + * Perform a quick self-test. It is important that we make both calls + * to _crypt_extended_r_uut() from the same scope such that they likely + * use the same stack locations, which makes the second call overwrite + * the first call's sensitive data on the stack and makes it more + * likely that any alignment related issues would be detected. + */ + p = _crypt_extended_r_uut(test_key, test_setting, test_buf); + if (p && !strcmp(p, test_hash) && retval) + return retval; + + return (setting[0]=='*') ? "x" : "*"; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_des.h b/vendor/modernc.org/libc/musl/src/crypt/crypt_des.h new file mode 100644 index 000000000..96748b563 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_des.h @@ -0,0 +1,14 @@ +#ifndef CRYPT_DES_H +#define CRYPT_DES_H + +#include + +struct expanded_key { + uint32_t l[16], r[16]; +}; + +hidden void __des_setkey(const unsigned char *, struct expanded_key *); +hidden void __do_des(uint32_t, uint32_t, uint32_t *, uint32_t *, + uint32_t, uint32_t, const struct expanded_key *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_md5.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_md5.c new file mode 100644 index 000000000..6e75b36cb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_md5.c @@ -0,0 +1,285 @@ +/* + * md5 crypt implementation + * + * original md5 crypt design is from Poul-Henning Kamp + * this implementation was created based on the code in freebsd + * at least 32bit int is assumed, key is limited and $1$ prefix is mandatory, + * on error "*" is returned + */ +#include +#include + +/* public domain md5 implementation based on rfc1321 and libtomcrypt */ + +struct md5 { + uint64_t len; /* processed message length */ + uint32_t h[4]; /* hash state */ + uint8_t buf[64]; /* message block buffer */ +}; + +static uint32_t rol(uint32_t n, int k) { return (n << k) | (n >> (32-k)); } +#define F(x,y,z) (z ^ (x & (y ^ z))) +#define G(x,y,z) (y ^ (z & (y ^ x))) +#define H(x,y,z) (x ^ y ^ z) +#define I(x,y,z) (y ^ (x | ~z)) +#define FF(a,b,c,d,w,s,t) a += F(b,c,d) + w + t; a = rol(a,s) + b +#define GG(a,b,c,d,w,s,t) a += G(b,c,d) + w + t; a = rol(a,s) + b +#define HH(a,b,c,d,w,s,t) a += H(b,c,d) + w + t; a = rol(a,s) + b +#define II(a,b,c,d,w,s,t) a += I(b,c,d) + w + t; a = rol(a,s) + b + +static const uint32_t tab[64] = { +0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, +0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, +0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, +0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, +0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, +0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, +0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, +0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 +}; + +static void processblock(struct md5 *s, const uint8_t *buf) +{ + uint32_t i, W[16], a, b, c, d; + + for (i = 0; i < 16; i++) { + W[i] = buf[4*i]; + W[i] |= (uint32_t)buf[4*i+1]<<8; + W[i] |= (uint32_t)buf[4*i+2]<<16; + W[i] |= (uint32_t)buf[4*i+3]<<24; + } + + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + + i = 0; + while (i < 16) { + FF(a,b,c,d, W[i], 7, tab[i]); i++; + FF(d,a,b,c, W[i], 12, tab[i]); i++; + FF(c,d,a,b, W[i], 17, tab[i]); i++; + FF(b,c,d,a, W[i], 22, tab[i]); i++; + } + while (i < 32) { + GG(a,b,c,d, W[(5*i+1)%16], 5, tab[i]); i++; + GG(d,a,b,c, W[(5*i+1)%16], 9, tab[i]); i++; + GG(c,d,a,b, W[(5*i+1)%16], 14, tab[i]); i++; + GG(b,c,d,a, W[(5*i+1)%16], 20, tab[i]); i++; + } + while (i < 48) { + HH(a,b,c,d, W[(3*i+5)%16], 4, tab[i]); i++; + HH(d,a,b,c, W[(3*i+5)%16], 11, tab[i]); i++; + HH(c,d,a,b, W[(3*i+5)%16], 16, tab[i]); i++; + HH(b,c,d,a, W[(3*i+5)%16], 23, tab[i]); i++; + } + while (i < 64) { + II(a,b,c,d, W[7*i%16], 6, tab[i]); i++; + II(d,a,b,c, W[7*i%16], 10, tab[i]); i++; + II(c,d,a,b, W[7*i%16], 15, tab[i]); i++; + II(b,c,d,a, W[7*i%16], 21, tab[i]); i++; + } + + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; +} + +static void pad(struct md5 *s) +{ + unsigned r = s->len % 64; + + s->buf[r++] = 0x80; + if (r > 56) { + memset(s->buf + r, 0, 64 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 56 - r); + s->len *= 8; + s->buf[56] = s->len; + s->buf[57] = s->len >> 8; + s->buf[58] = s->len >> 16; + s->buf[59] = s->len >> 24; + s->buf[60] = s->len >> 32; + s->buf[61] = s->len >> 40; + s->buf[62] = s->len >> 48; + s->buf[63] = s->len >> 56; + processblock(s, s->buf); +} + +static void md5_init(struct md5 *s) +{ + s->len = 0; + s->h[0] = 0x67452301; + s->h[1] = 0xefcdab89; + s->h[2] = 0x98badcfe; + s->h[3] = 0x10325476; +} + +static void md5_sum(struct md5 *s, uint8_t *md) +{ + int i; + + pad(s); + for (i = 0; i < 4; i++) { + md[4*i] = s->h[i]; + md[4*i+1] = s->h[i] >> 8; + md[4*i+2] = s->h[i] >> 16; + md[4*i+3] = s->h[i] >> 24; + } +} + +static void md5_update(struct md5 *s, const void *m, unsigned long len) +{ + const uint8_t *p = m; + unsigned r = s->len % 64; + + s->len += len; + if (r) { + if (len < 64 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 64 - r); + len -= 64 - r; + p += 64 - r; + processblock(s, s->buf); + } + for (; len >= 64; len -= 64, p += 64) + processblock(s, p); + memcpy(s->buf, p, len); +} + +/*- + * Copyright (c) 2003 Poul-Henning Kamp + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* key limit is not part of the original design, added for DoS protection */ +#define KEY_MAX 30000 +#define SALT_MAX 8 + +static const unsigned char b64[] = +"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +static char *to64(char *s, unsigned int u, int n) +{ + while (--n >= 0) { + *s++ = b64[u % 64]; + u /= 64; + } + return s; +} + +static char *md5crypt(const char *key, const char *setting, char *output) +{ + struct md5 ctx; + unsigned char md[16]; + unsigned int i, klen, slen; + const char *salt; + char *p; + + /* reject large keys */ + klen = strnlen(key, KEY_MAX+1); + if (klen > KEY_MAX) + return 0; + + /* setting: $1$salt$ (closing $ is optional) */ + if (strncmp(setting, "$1$", 3) != 0) + return 0; + salt = setting + 3; + for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++); + slen = i; + + /* md5(key salt key) */ + md5_init(&ctx); + md5_update(&ctx, key, klen); + md5_update(&ctx, salt, slen); + md5_update(&ctx, key, klen); + md5_sum(&ctx, md); + + /* md5(key $1$ salt repeated-md weird-key[0]-0) */ + md5_init(&ctx); + md5_update(&ctx, key, klen); + md5_update(&ctx, setting, 3 + slen); + for (i = klen; i > sizeof md; i -= sizeof md) + md5_update(&ctx, md, sizeof md); + md5_update(&ctx, md, i); + md[0] = 0; + for (i = klen; i; i >>= 1) + if (i & 1) + md5_update(&ctx, md, 1); + else + md5_update(&ctx, key, 1); + md5_sum(&ctx, md); + + /* md = f(md, key, salt) iteration */ + for (i = 0; i < 1000; i++) { + md5_init(&ctx); + if (i % 2) + md5_update(&ctx, key, klen); + else + md5_update(&ctx, md, sizeof md); + if (i % 3) + md5_update(&ctx, salt, slen); + if (i % 7) + md5_update(&ctx, key, klen); + if (i % 2) + md5_update(&ctx, md, sizeof md); + else + md5_update(&ctx, key, klen); + md5_sum(&ctx, md); + } + + /* output is $1$salt$hash */ + memcpy(output, setting, 3 + slen); + p = output + 3 + slen; + *p++ = '$'; + static const unsigned char perm[][3] = { + 0,6,12,1,7,13,2,8,14,3,9,15,4,10,5 }; + for (i=0; i<5; i++) p = to64(p, + (md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4); + p = to64(p, md[11], 2); + *p = 0; + + return output; +} + +char *__crypt_md5(const char *key, const char *setting, char *output) +{ + static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !"; + static const char testsetting[] = "$1$abcd0123$"; + static const char testhash[] = "$1$abcd0123$9Qcg8DyviekV3tDGMZynJ1"; + char testbuf[64]; + char *p, *q; + + p = md5crypt(key, setting, output); + /* self test and stack cleanup */ + q = md5crypt(testkey, testsetting, testbuf); + if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash)) + return "*"; + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_r.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_r.c new file mode 100644 index 000000000..db6015e23 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_r.c @@ -0,0 +1,23 @@ +#include + +char *__crypt_r(const char *key, const char *salt, struct crypt_data *data) +{ + /* Per the crypt_r API, the caller has provided a pointer to + * struct crypt_data; however, this implementation does not + * use the structure to store any internal state, and treats + * it purely as a char buffer for storing the result. */ + char *output = (char *)data; + if (salt[0] == '$' && salt[1] && salt[2]) { + if (salt[1] == '1' && salt[2] == '$') + return __crypt_md5(key, salt, output); + if (salt[1] == '2' && salt[3] == '$') + return __crypt_blowfish(key, salt, output); + if (salt[1] == '5' && salt[2] == '$') + return __crypt_sha256(key, salt, output); + if (salt[1] == '6' && salt[2] == '$') + return __crypt_sha512(key, salt, output); + } + return __crypt_des(key, salt, output); +} + +weak_alias(__crypt_r, crypt_r); diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_sha256.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_sha256.c new file mode 100644 index 000000000..e885dc68e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_sha256.c @@ -0,0 +1,322 @@ +/* + * public domain sha256 crypt implementation + * + * original sha crypt design: http://people.redhat.com/drepper/SHA-crypt.txt + * in this implementation at least 32bit int is assumed, + * key length is limited, the $5$ prefix is mandatory, '\n' and ':' is rejected + * in the salt and rounds= setting must contain a valid iteration count, + * on error "*" is returned. + */ +#include +#include +#include +#include +#include + +/* public domain sha256 implementation based on fips180-3 */ + +struct sha256 { + uint64_t len; /* processed message length */ + uint32_t h[8]; /* hash state */ + uint8_t buf[64]; /* message block buffer */ +}; + +static uint32_t ror(uint32_t n, int k) { return (n >> k) | (n << (32-k)); } +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & y) | (z & (x | y))) +#define S0(x) (ror(x,2) ^ ror(x,13) ^ ror(x,22)) +#define S1(x) (ror(x,6) ^ ror(x,11) ^ ror(x,25)) +#define R0(x) (ror(x,7) ^ ror(x,18) ^ (x>>3)) +#define R1(x) (ror(x,17) ^ ror(x,19) ^ (x>>10)) + +static const uint32_t K[64] = { +0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, +0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, +0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, +0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, +0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, +0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, +0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, +0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +static void processblock(struct sha256 *s, const uint8_t *buf) +{ + uint32_t W[64], t1, t2, a, b, c, d, e, f, g, h; + int i; + + for (i = 0; i < 16; i++) { + W[i] = (uint32_t)buf[4*i]<<24; + W[i] |= (uint32_t)buf[4*i+1]<<16; + W[i] |= (uint32_t)buf[4*i+2]<<8; + W[i] |= buf[4*i+3]; + } + for (; i < 64; i++) + W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16]; + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + e = s->h[4]; + f = s->h[5]; + g = s->h[6]; + h = s->h[7]; + for (i = 0; i < 64; i++) { + t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i]; + t2 = S0(a) + Maj(a,b,c); + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + } + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; + s->h[4] += e; + s->h[5] += f; + s->h[6] += g; + s->h[7] += h; +} + +static void pad(struct sha256 *s) +{ + unsigned r = s->len % 64; + + s->buf[r++] = 0x80; + if (r > 56) { + memset(s->buf + r, 0, 64 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 56 - r); + s->len *= 8; + s->buf[56] = s->len >> 56; + s->buf[57] = s->len >> 48; + s->buf[58] = s->len >> 40; + s->buf[59] = s->len >> 32; + s->buf[60] = s->len >> 24; + s->buf[61] = s->len >> 16; + s->buf[62] = s->len >> 8; + s->buf[63] = s->len; + processblock(s, s->buf); +} + +static void sha256_init(struct sha256 *s) +{ + s->len = 0; + s->h[0] = 0x6a09e667; + s->h[1] = 0xbb67ae85; + s->h[2] = 0x3c6ef372; + s->h[3] = 0xa54ff53a; + s->h[4] = 0x510e527f; + s->h[5] = 0x9b05688c; + s->h[6] = 0x1f83d9ab; + s->h[7] = 0x5be0cd19; +} + +static void sha256_sum(struct sha256 *s, uint8_t *md) +{ + int i; + + pad(s); + for (i = 0; i < 8; i++) { + md[4*i] = s->h[i] >> 24; + md[4*i+1] = s->h[i] >> 16; + md[4*i+2] = s->h[i] >> 8; + md[4*i+3] = s->h[i]; + } +} + +static void sha256_update(struct sha256 *s, const void *m, unsigned long len) +{ + const uint8_t *p = m; + unsigned r = s->len % 64; + + s->len += len; + if (r) { + if (len < 64 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 64 - r); + len -= 64 - r; + p += 64 - r; + processblock(s, s->buf); + } + for (; len >= 64; len -= 64, p += 64) + processblock(s, p); + memcpy(s->buf, p, len); +} + +static const unsigned char b64[] = +"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +static char *to64(char *s, unsigned int u, int n) +{ + while (--n >= 0) { + *s++ = b64[u % 64]; + u /= 64; + } + return s; +} + +/* key limit is not part of the original design, added for DoS protection. + * rounds limit has been lowered (versus the reference/spec), also for DoS + * protection. runtime is O(klen^2 + klen*rounds) */ +#define KEY_MAX 256 +#define SALT_MAX 16 +#define ROUNDS_DEFAULT 5000 +#define ROUNDS_MIN 1000 +#define ROUNDS_MAX 9999999 + +/* hash n bytes of the repeated md message digest */ +static void hashmd(struct sha256 *s, unsigned int n, const void *md) +{ + unsigned int i; + + for (i = n; i > 32; i -= 32) + sha256_update(s, md, 32); + sha256_update(s, md, i); +} + +static char *sha256crypt(const char *key, const char *setting, char *output) +{ + struct sha256 ctx; + unsigned char md[32], kmd[32], smd[32]; + unsigned int i, r, klen, slen; + char rounds[20] = ""; + const char *salt; + char *p; + + /* reject large keys */ + klen = strnlen(key, KEY_MAX+1); + if (klen > KEY_MAX) + return 0; + + /* setting: $5$rounds=n$salt$ (rounds=n$ and closing $ are optional) */ + if (strncmp(setting, "$5$", 3) != 0) + return 0; + salt = setting + 3; + + r = ROUNDS_DEFAULT; + if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) { + unsigned long u; + char *end; + + /* + * this is a deviation from the reference: + * bad rounds setting is rejected if it is + * - empty + * - unterminated (missing '$') + * - begins with anything but a decimal digit + * the reference implementation treats these bad + * rounds as part of the salt or parse them with + * strtoul semantics which may cause problems + * including non-portable hashes that depend on + * the host's value of ULONG_MAX. + */ + salt += sizeof "rounds=" - 1; + if (!isdigit(*salt)) + return 0; + u = strtoul(salt, &end, 10); + if (*end != '$') + return 0; + salt = end+1; + if (u < ROUNDS_MIN) + r = ROUNDS_MIN; + else if (u > ROUNDS_MAX) + return 0; + else + r = u; + /* needed when rounds is zero prefixed or out of bounds */ + sprintf(rounds, "rounds=%u$", r); + } + + for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++) + /* reject characters that interfere with /etc/shadow parsing */ + if (salt[i] == '\n' || salt[i] == ':') + return 0; + slen = i; + + /* B = sha(key salt key) */ + sha256_init(&ctx); + sha256_update(&ctx, key, klen); + sha256_update(&ctx, salt, slen); + sha256_update(&ctx, key, klen); + sha256_sum(&ctx, md); + + /* A = sha(key salt repeat-B alternate-B-key) */ + sha256_init(&ctx); + sha256_update(&ctx, key, klen); + sha256_update(&ctx, salt, slen); + hashmd(&ctx, klen, md); + for (i = klen; i > 0; i >>= 1) + if (i & 1) + sha256_update(&ctx, md, sizeof md); + else + sha256_update(&ctx, key, klen); + sha256_sum(&ctx, md); + + /* DP = sha(repeat-key), this step takes O(klen^2) time */ + sha256_init(&ctx); + for (i = 0; i < klen; i++) + sha256_update(&ctx, key, klen); + sha256_sum(&ctx, kmd); + + /* DS = sha(repeat-salt) */ + sha256_init(&ctx); + for (i = 0; i < 16 + md[0]; i++) + sha256_update(&ctx, salt, slen); + sha256_sum(&ctx, smd); + + /* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */ + for (i = 0; i < r; i++) { + sha256_init(&ctx); + if (i % 2) + hashmd(&ctx, klen, kmd); + else + sha256_update(&ctx, md, sizeof md); + if (i % 3) + sha256_update(&ctx, smd, slen); + if (i % 7) + hashmd(&ctx, klen, kmd); + if (i % 2) + sha256_update(&ctx, md, sizeof md); + else + hashmd(&ctx, klen, kmd); + sha256_sum(&ctx, md); + } + + /* output is $5$rounds=n$salt$hash */ + p = output; + p += sprintf(p, "$5$%s%.*s$", rounds, slen, salt); + static const unsigned char perm[][3] = { + 0,10,20,21,1,11,12,22,2,3,13,23,24,4,14, + 15,25,5,6,16,26,27,7,17,18,28,8,9,19,29 }; + for (i=0; i<10; i++) p = to64(p, + (md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4); + p = to64(p, (md[31]<<8)|md[30], 3); + *p = 0; + return output; +} + +char *__crypt_sha256(const char *key, const char *setting, char *output) +{ + static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !"; + static const char testsetting[] = "$5$rounds=1234$abc0123456789$"; + static const char testhash[] = "$5$rounds=1234$abc0123456789$3VfDjPt05VHFn47C/ojFZ6KRPYrOjj1lLbH.dkF3bZ6"; + char testbuf[128]; + char *p, *q; + + p = sha256crypt(key, setting, output); + /* self test and stack cleanup */ + q = sha256crypt(testkey, testsetting, testbuf); + if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash)) + return "*"; + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/crypt_sha512.c b/vendor/modernc.org/libc/musl/src/crypt/crypt_sha512.c new file mode 100644 index 000000000..39970cafe --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/crypt_sha512.c @@ -0,0 +1,371 @@ +/* + * public domain sha512 crypt implementation + * + * original sha crypt design: http://people.redhat.com/drepper/SHA-crypt.txt + * in this implementation at least 32bit int is assumed, + * key length is limited, the $6$ prefix is mandatory, '\n' and ':' is rejected + * in the salt and rounds= setting must contain a valid iteration count, + * on error "*" is returned. + */ +#include +#include +#include +#include +#include + +/* public domain sha512 implementation based on fips180-3 */ +/* >=2^64 bits messages are not supported (about 2000 peta bytes) */ + +struct sha512 { + uint64_t len; /* processed message length */ + uint64_t h[8]; /* hash state */ + uint8_t buf[128]; /* message block buffer */ +}; + +static uint64_t ror(uint64_t n, int k) { return (n >> k) | (n << (64-k)); } +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & y) | (z & (x | y))) +#define S0(x) (ror(x,28) ^ ror(x,34) ^ ror(x,39)) +#define S1(x) (ror(x,14) ^ ror(x,18) ^ ror(x,41)) +#define R0(x) (ror(x,1) ^ ror(x,8) ^ (x>>7)) +#define R1(x) (ror(x,19) ^ ror(x,61) ^ (x>>6)) + +static const uint64_t K[80] = { +0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, +0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, +0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, +0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, +0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, +0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, +0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, +0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, +0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, +0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, +0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, +0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, +0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, +0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, +0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, +0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, +0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, +0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, +0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, +0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +static void processblock(struct sha512 *s, const uint8_t *buf) +{ + uint64_t W[80], t1, t2, a, b, c, d, e, f, g, h; + int i; + + for (i = 0; i < 16; i++) { + W[i] = (uint64_t)buf[8*i]<<56; + W[i] |= (uint64_t)buf[8*i+1]<<48; + W[i] |= (uint64_t)buf[8*i+2]<<40; + W[i] |= (uint64_t)buf[8*i+3]<<32; + W[i] |= (uint64_t)buf[8*i+4]<<24; + W[i] |= (uint64_t)buf[8*i+5]<<16; + W[i] |= (uint64_t)buf[8*i+6]<<8; + W[i] |= buf[8*i+7]; + } + for (; i < 80; i++) + W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16]; + a = s->h[0]; + b = s->h[1]; + c = s->h[2]; + d = s->h[3]; + e = s->h[4]; + f = s->h[5]; + g = s->h[6]; + h = s->h[7]; + for (i = 0; i < 80; i++) { + t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i]; + t2 = S0(a) + Maj(a,b,c); + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + } + s->h[0] += a; + s->h[1] += b; + s->h[2] += c; + s->h[3] += d; + s->h[4] += e; + s->h[5] += f; + s->h[6] += g; + s->h[7] += h; +} + +static void pad(struct sha512 *s) +{ + unsigned r = s->len % 128; + + s->buf[r++] = 0x80; + if (r > 112) { + memset(s->buf + r, 0, 128 - r); + r = 0; + processblock(s, s->buf); + } + memset(s->buf + r, 0, 120 - r); + s->len *= 8; + s->buf[120] = s->len >> 56; + s->buf[121] = s->len >> 48; + s->buf[122] = s->len >> 40; + s->buf[123] = s->len >> 32; + s->buf[124] = s->len >> 24; + s->buf[125] = s->len >> 16; + s->buf[126] = s->len >> 8; + s->buf[127] = s->len; + processblock(s, s->buf); +} + +static void sha512_init(struct sha512 *s) +{ + s->len = 0; + s->h[0] = 0x6a09e667f3bcc908ULL; + s->h[1] = 0xbb67ae8584caa73bULL; + s->h[2] = 0x3c6ef372fe94f82bULL; + s->h[3] = 0xa54ff53a5f1d36f1ULL; + s->h[4] = 0x510e527fade682d1ULL; + s->h[5] = 0x9b05688c2b3e6c1fULL; + s->h[6] = 0x1f83d9abfb41bd6bULL; + s->h[7] = 0x5be0cd19137e2179ULL; +} + +static void sha512_sum(struct sha512 *s, uint8_t *md) +{ + int i; + + pad(s); + for (i = 0; i < 8; i++) { + md[8*i] = s->h[i] >> 56; + md[8*i+1] = s->h[i] >> 48; + md[8*i+2] = s->h[i] >> 40; + md[8*i+3] = s->h[i] >> 32; + md[8*i+4] = s->h[i] >> 24; + md[8*i+5] = s->h[i] >> 16; + md[8*i+6] = s->h[i] >> 8; + md[8*i+7] = s->h[i]; + } +} + +static void sha512_update(struct sha512 *s, const void *m, unsigned long len) +{ + const uint8_t *p = m; + unsigned r = s->len % 128; + + s->len += len; + if (r) { + if (len < 128 - r) { + memcpy(s->buf + r, p, len); + return; + } + memcpy(s->buf + r, p, 128 - r); + len -= 128 - r; + p += 128 - r; + processblock(s, s->buf); + } + for (; len >= 128; len -= 128, p += 128) + processblock(s, p); + memcpy(s->buf, p, len); +} + +static const unsigned char b64[] = +"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +static char *to64(char *s, unsigned int u, int n) +{ + while (--n >= 0) { + *s++ = b64[u % 64]; + u /= 64; + } + return s; +} + +/* key limit is not part of the original design, added for DoS protection. + * rounds limit has been lowered (versus the reference/spec), also for DoS + * protection. runtime is O(klen^2 + klen*rounds) */ +#define KEY_MAX 256 +#define SALT_MAX 16 +#define ROUNDS_DEFAULT 5000 +#define ROUNDS_MIN 1000 +#define ROUNDS_MAX 9999999 + +/* hash n bytes of the repeated md message digest */ +static void hashmd(struct sha512 *s, unsigned int n, const void *md) +{ + unsigned int i; + + for (i = n; i > 64; i -= 64) + sha512_update(s, md, 64); + sha512_update(s, md, i); +} + +static char *sha512crypt(const char *key, const char *setting, char *output) +{ + struct sha512 ctx; + unsigned char md[64], kmd[64], smd[64]; + unsigned int i, r, klen, slen; + char rounds[20] = ""; + const char *salt; + char *p; + + /* reject large keys */ + for (i = 0; i <= KEY_MAX && key[i]; i++); + if (i > KEY_MAX) + return 0; + klen = i; + + /* setting: $6$rounds=n$salt$ (rounds=n$ and closing $ are optional) */ + if (strncmp(setting, "$6$", 3) != 0) + return 0; + salt = setting + 3; + + r = ROUNDS_DEFAULT; + if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) { + unsigned long u; + char *end; + + /* + * this is a deviation from the reference: + * bad rounds setting is rejected if it is + * - empty + * - unterminated (missing '$') + * - begins with anything but a decimal digit + * the reference implementation treats these bad + * rounds as part of the salt or parse them with + * strtoul semantics which may cause problems + * including non-portable hashes that depend on + * the host's value of ULONG_MAX. + */ + salt += sizeof "rounds=" - 1; + if (!isdigit(*salt)) + return 0; + u = strtoul(salt, &end, 10); + if (*end != '$') + return 0; + salt = end+1; + if (u < ROUNDS_MIN) + r = ROUNDS_MIN; + else if (u > ROUNDS_MAX) + return 0; + else + r = u; + /* needed when rounds is zero prefixed or out of bounds */ + sprintf(rounds, "rounds=%u$", r); + } + + for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++) + /* reject characters that interfere with /etc/shadow parsing */ + if (salt[i] == '\n' || salt[i] == ':') + return 0; + slen = i; + + /* B = sha(key salt key) */ + sha512_init(&ctx); + sha512_update(&ctx, key, klen); + sha512_update(&ctx, salt, slen); + sha512_update(&ctx, key, klen); + sha512_sum(&ctx, md); + + /* A = sha(key salt repeat-B alternate-B-key) */ + sha512_init(&ctx); + sha512_update(&ctx, key, klen); + sha512_update(&ctx, salt, slen); + hashmd(&ctx, klen, md); + for (i = klen; i > 0; i >>= 1) + if (i & 1) + sha512_update(&ctx, md, sizeof md); + else + sha512_update(&ctx, key, klen); + sha512_sum(&ctx, md); + + /* DP = sha(repeat-key), this step takes O(klen^2) time */ + sha512_init(&ctx); + for (i = 0; i < klen; i++) + sha512_update(&ctx, key, klen); + sha512_sum(&ctx, kmd); + + /* DS = sha(repeat-salt) */ + sha512_init(&ctx); + for (i = 0; i < 16 + md[0]; i++) + sha512_update(&ctx, salt, slen); + sha512_sum(&ctx, smd); + + /* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */ + for (i = 0; i < r; i++) { + sha512_init(&ctx); + if (i % 2) + hashmd(&ctx, klen, kmd); + else + sha512_update(&ctx, md, sizeof md); + if (i % 3) + sha512_update(&ctx, smd, slen); + if (i % 7) + hashmd(&ctx, klen, kmd); + if (i % 2) + sha512_update(&ctx, md, sizeof md); + else + hashmd(&ctx, klen, kmd); + sha512_sum(&ctx, md); + } + + /* output is $6$rounds=n$salt$hash */ + p = output; + p += sprintf(p, "$6$%s%.*s$", rounds, slen, salt); +#if 1 + static const unsigned char perm[][3] = { + 0,21,42,22,43,1,44,2,23,3,24,45,25,46,4, + 47,5,26,6,27,48,28,49,7,50,8,29,9,30,51, + 31,52,10,53,11,32,12,33,54,34,55,13,56,14,35, + 15,36,57,37,58,16,59,17,38,18,39,60,40,61,19, + 62,20,41 }; + for (i=0; i<21; i++) p = to64(p, + (md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4); +#else + p = to64(p, (md[0]<<16)|(md[21]<<8)|md[42], 4); + p = to64(p, (md[22]<<16)|(md[43]<<8)|md[1], 4); + p = to64(p, (md[44]<<16)|(md[2]<<8)|md[23], 4); + p = to64(p, (md[3]<<16)|(md[24]<<8)|md[45], 4); + p = to64(p, (md[25]<<16)|(md[46]<<8)|md[4], 4); + p = to64(p, (md[47]<<16)|(md[5]<<8)|md[26], 4); + p = to64(p, (md[6]<<16)|(md[27]<<8)|md[48], 4); + p = to64(p, (md[28]<<16)|(md[49]<<8)|md[7], 4); + p = to64(p, (md[50]<<16)|(md[8]<<8)|md[29], 4); + p = to64(p, (md[9]<<16)|(md[30]<<8)|md[51], 4); + p = to64(p, (md[31]<<16)|(md[52]<<8)|md[10], 4); + p = to64(p, (md[53]<<16)|(md[11]<<8)|md[32], 4); + p = to64(p, (md[12]<<16)|(md[33]<<8)|md[54], 4); + p = to64(p, (md[34]<<16)|(md[55]<<8)|md[13], 4); + p = to64(p, (md[56]<<16)|(md[14]<<8)|md[35], 4); + p = to64(p, (md[15]<<16)|(md[36]<<8)|md[57], 4); + p = to64(p, (md[37]<<16)|(md[58]<<8)|md[16], 4); + p = to64(p, (md[59]<<16)|(md[17]<<8)|md[38], 4); + p = to64(p, (md[18]<<16)|(md[39]<<8)|md[60], 4); + p = to64(p, (md[40]<<16)|(md[61]<<8)|md[19], 4); + p = to64(p, (md[62]<<16)|(md[20]<<8)|md[41], 4); +#endif + p = to64(p, md[63], 2); + *p = 0; + return output; +} + +char *__crypt_sha512(const char *key, const char *setting, char *output) +{ + static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !"; + static const char testsetting[] = "$6$rounds=1234$abc0123456789$"; + static const char testhash[] = "$6$rounds=1234$abc0123456789$BCpt8zLrc/RcyuXmCDOE1ALqMXB2MH6n1g891HhFj8.w7LxGv.FTkqq6Vxc/km3Y0jE0j24jY5PIv/oOu6reg1"; + char testbuf[128]; + char *p, *q; + + p = sha512crypt(key, setting, output); + /* self test and stack cleanup */ + q = sha512crypt(testkey, testsetting, testbuf); + if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash)) + return "*"; + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/crypt/encrypt.c b/vendor/modernc.org/libc/musl/src/crypt/encrypt.c new file mode 100644 index 000000000..216abc919 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/crypt/encrypt.c @@ -0,0 +1,52 @@ +#include +#include +#include + +#include "crypt_des.h" + +static struct expanded_key __encrypt_key; + +void setkey(const char *key) +{ + unsigned char bkey[8]; + int i, j; + + for (i = 0; i < 8; i++) { + bkey[i] = 0; + for (j = 7; j >= 0; j--, key++) + bkey[i] |= (uint32_t)(*key & 1) << j; + } + + __des_setkey(bkey, &__encrypt_key); +} + +void encrypt(char *block, int edflag) +{ + struct expanded_key decrypt_key, *key; + uint32_t b[2]; + int i, j; + char *p; + + p = block; + for (i = 0; i < 2; i++) { + b[i] = 0; + for (j = 31; j >= 0; j--, p++) + b[i] |= (uint32_t)(*p & 1) << j; + } + + key = &__encrypt_key; + if (edflag) { + key = &decrypt_key; + for (i = 0; i < 16; i++) { + decrypt_key.l[i] = __encrypt_key.l[15-i]; + decrypt_key.r[i] = __encrypt_key.r[15-i]; + } + } + + __do_des(b[0], b[1], b, b + 1, 1, 0, key); + + p = block; + for (i = 0; i < 2; i++) + for (j = 31; j >= 0; j--) + *p++ = b[i]>>j & 1; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/__ctype_b_loc.c b/vendor/modernc.org/libc/musl/src/ctype/__ctype_b_loc.c new file mode 100644 index 000000000..f43795e94 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/__ctype_b_loc.c @@ -0,0 +1,41 @@ +#include + +#if __BYTE_ORDER == __BIG_ENDIAN +#define X(x) x +#else +#define X(x) (((x)/256 | (x)*256) % 65536) +#endif + +static const unsigned short table[] = { +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200), +X(0x200),X(0x320),X(0x220),X(0x220),X(0x220),X(0x220),X(0x200),X(0x200), +X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200), +X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200), +X(0x160),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0), +X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0), +X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8), +X(0x8d8),X(0x8d8),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0), +X(0x4c0),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8c5), +X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5), +X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5), +X(0x8c5),X(0x8c5),X(0x8c5),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0), +X(0x4c0),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8c6), +X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6), +X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6), +X(0x8c6),X(0x8c6),X(0x8c6),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x200), +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static const unsigned short *const ptable = table+128; + +const unsigned short **__ctype_b_loc(void) +{ + return (void *)&ptable; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/__ctype_get_mb_cur_max.c b/vendor/modernc.org/libc/musl/src/ctype/__ctype_get_mb_cur_max.c new file mode 100644 index 000000000..8e946fc12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/__ctype_get_mb_cur_max.c @@ -0,0 +1,7 @@ +#include +#include "locale_impl.h" + +size_t __ctype_get_mb_cur_max() +{ + return MB_CUR_MAX; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/__ctype_tolower_loc.c b/vendor/modernc.org/libc/musl/src/ctype/__ctype_tolower_loc.c new file mode 100644 index 000000000..efb991054 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/__ctype_tolower_loc.c @@ -0,0 +1,30 @@ +#include + +static const int32_t table[] = { +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64, +'a','b','c','d','e','f','g','h','i','j','k','l','m', +'n','o','p','q','r','s','t','u','v','w','x','y','z', +91,92,93,94,95,96, +'a','b','c','d','e','f','g','h','i','j','k','l','m', +'n','o','p','q','r','s','t','u','v','w','x','y','z', +123,124,125,126,127, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static const int32_t *const ptable = table+128; + +const int32_t **__ctype_tolower_loc(void) +{ + return (void *)&ptable; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/__ctype_toupper_loc.c b/vendor/modernc.org/libc/musl/src/ctype/__ctype_toupper_loc.c new file mode 100644 index 000000000..ffaef0e91 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/__ctype_toupper_loc.c @@ -0,0 +1,30 @@ +#include + +static const int32_t table[] = { +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64, +'A','B','C','D','E','F','G','H','I','J','K','L','M', +'N','O','P','Q','R','S','T','U','V','W','X','Y','Z', +91,92,93,94,95,96, +'A','B','C','D','E','F','G','H','I','J','K','L','M', +'N','O','P','Q','R','S','T','U','V','W','X','Y','Z', +123,124,125,126,127, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static const int32_t *const ptable = table+128; + +const int32_t **__ctype_toupper_loc(void) +{ + return (void *)&ptable; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/alpha.h b/vendor/modernc.org/libc/musl/src/ctype/alpha.h new file mode 100644 index 000000000..4167f3876 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/alpha.h @@ -0,0 +1,172 @@ +18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40, +41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67, +68,69,70,71,72,73,74,17,75,76,77,78,79,80,81,16,82,83,84,85,86,87,88,89,90,91, +92,93,16,94,95,96,16,17,17,17,97,98,99,16,16,16,16,16,16,16,16,16,16,17,17,17, +17,100,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,101,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,17,17,102,103,16,16,104,105,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,106,17,17,107,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17, +108,109,16,16,16,16,16,16,16,16,16,110,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,111,112,113,114,16,16,16,16,16,16,16,16,115,116, +117,16,16,16,16,16,118,119,16,16,16,16,120,16,16,121,16,16,16,16,16,16,16,16, +16,16,16,16,16, +16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254, +255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,188,64,215,255,255, +251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,127,2,255,255,255, +255,255,1,0,0,0,0,255,191,182,0,255,255,255,135,7,0,0,0,255,7,255,255,255,255, +255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239, +31,254,225,255, +159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255, +255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255, +1,255,7,0,0,0,0,0,0,255,255,223,63,0,0,240,255,248,3,255,255,255,255,255,255, +255,255,255,239,255,223,225,255,207,255,254,255,239,159,249,255,255,253,197, +227,159,89,128,176,207,255,3,16,238,135,249,255,255,253,109,195,135,25,2,94, +192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,30,238,159, +249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,255, +195,199,29,129,0,192,255,0,0,239,223,253,255,255,253,255,227,223,29,96,7,207, +255,0,0,239,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,239,223,253, +255,255,255,255,231,223,93,240,128,207,255,0,252,236,255,127,252,255,255,251, +47,127,128,95,255,192,255,12,0,254,255,255,255,255,127,255,7,63,32,255,3,0,0, +0,0,214,247,255,255,175,255,255,59,95,32,255,243,0,0,0, +0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255, +31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,255,255,255, +255,255,255,255,63,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255, +255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61, +127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255, +7,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,63,63,254,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255, +255,199,255,1,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255, +255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255, +255,255,255,255,255,1,255,255,255,255,255,7,255,255,255,255,255,255,255,255, +63, +0,255,255,255,127,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255, +255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255, +127,254,255,31,0,255,3,255,3,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, +255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255, +255,191,255,3,0,255,255,255,255,255,255,127,0,255,227,255,255,255,255,255,63, +255,1,255,255,255,255,255,231,0,0,0,0,0,222,111,4,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0, +128,255,31,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255, +255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243, +224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0, +0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255, +255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127, +255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254, +255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,255,254,255, +255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,63,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, +0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0, +0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255, +255,127,240,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, +0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,249,255,255,255, +255,255,255,124,0,0,0,0,0,128,255,191,255,255,255,255,0,0,0,255,255,255,255, +255,255,15,0,255,255,255,255,255,255,255,255,47,0,255,3,0,0,252,232,255,255, +255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247, +255,0,128,255,3,255,255,255,127,255,255,255,255,255,255,127,0,255,63,255,3, +255,255,127,252,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126, +126,0,127,127,255,255,255,255,255,247,255,0,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255, +255, +15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255, +255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219, +255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255, +255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255, +252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3, +254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127, +252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0, +255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0, +0,255,255,255,255,0,224,255,255,255,7,255,255,255,255,255,7,255,255,255,63, +255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,63,255,3,255,255,255,255,15,255,255,255, +255,15,255,255,255,255,255,0,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,255,255,63,0,255,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,255,255, +127,0,255,255,255,127,0,0,0,0,0,0,0,0,255,255,55,0,255,255,63,0,255,255,255,3, +0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239, +254,255,255,63,0,0,0,0,0,255,255,255,31,255,255,255,31,0,0,0,0,255,254,255, +255,31,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,255,255,3, +0,0,0,0,0,0,0,0,0,0,0,0, +0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,255,255,255,255,255,255,7, +0,255,255,255,255,255,255,7,0,255,255,255,255,255,0,255,3,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,31,128,0,255,255,63,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,255,255,127,0,255,255,255,255,255,255,255,255,63,0,0,0, +192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,255, +255,255,255,199,255,112,0,255,255,255,255,71,0,255,255,255,255,255,255,255, +255,30,0,255,23,0,0,0,0,255,255,251,255,255,255,159,64,0,0,0,0,0,0,0,0,127, +189,255,191,255,1,255,255,255,255,255,255,255,1,255,3,239,159,249,255,255,253, +237,227,159,25,129,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, +255,255,255,255,255,187,7,255,131,0,0,0,0,255,255,255,255,255,255,255,255,179, +0,255,3,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,127,0,0,0,63,0,0, +0,0,255,255,255,255,255,255,255,127,17,0,255,3,0,0,0,0,255,255,255,255,255, +255,63,1,255,3,0,0,0,0,0,0,255,255,255,231,255,7,255,3,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0, +0,255,255,255,255,255,255,255,255,255,3,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,255,252,255,255,255,255,255,252,26,0,0,0,255,255,255,255,255,255,231, +127,0,0,255,255,255,255,255,255,255,255,255,32,0,0,0,0,255,255,255,255,255, +255,255,1,255,253,255,255,255,255,127,127,1,0,255,3,0,0,252,255,255,255,252, +255,255,254,127,0,0,0,0,0,0,0,0,0,127,251,255,255,255,255,127,180,203,0,255,3, +191,253,255,255,255,127,123,1,255,3,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,127,0,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0, +0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,127,0, +0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, +255,255,255,255,255,255,1,255,255,255,127,255,3,0,0,0,0,0,0,0,0,0,0,0,0,255, +255,255,63,0,0,255,255,255,255,255,255,0,0,15,0,255,3,248,255,255,224,255,255, +0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,255,255,255,255,255,255,255,255,255,135,255,255,255,255,255,255,255,128, +255,255,0,0,0,0,0,0,0,0,11,0,0,0,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,7,0,255,255,255,127,0,0,0,0,0, +0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255, +255,255,255,255,255,255,255,255,255,7,255,31,255,1,255,67,0,0,0,0,0,0,0,0,0,0, +0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255, +255,223,100,222,255,235,239,255,255,255,255,255,255, +255,191,231,223,223,255,255,255,123,95,252,253,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255, +253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255, +255,255,127,255,255,255,253,255,255,255,253,255,255,247,207,255,255,255,255, +255,255,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,255,255,255,255,255,31,128,63,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, +15,255,3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,31,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, +143,8,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,239,255,255,255,150,254,247,10,132,234,150,170,150,247,247,94,255,251,255, +15,238,251,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,3,255,255,255,3,255, +255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/vendor/modernc.org/libc/musl/src/ctype/casemap.h b/vendor/modernc.org/libc/musl/src/ctype/casemap.h new file mode 100644 index 000000000..6ee1209b9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/casemap.h @@ -0,0 +1,297 @@ +static const unsigned char tab[] = { + 7, 8, 9, 10, 11, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 6, 15, 16, 17, 18, + 6, 19, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 21, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 22, 23, 6, 6, 6, 24, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, + 6, 6, 6, 6, 26, 6, 6, 6, 6, 6, 6, 6, 27, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 28, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 29, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 30, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, + 43, 43, 43, 43, 43, 43, 43, 43, 1, 0, 84, 86, 86, 86, 86, 86, + 86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 43, 43, 43, 43, 43, 43, + 43, 7, 43, 43, 91, 86, 86, 86, 86, 86, 86, 86, 74, 86, 86, 5, + 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, + 36, 80, 121, 49, 80, 49, 80, 49, 56, 80, 49, 80, 49, 80, 49, 80, + 49, 80, 49, 80, 49, 80, 49, 80, 78, 49, 2, 78, 13, 13, 78, 3, + 78, 0, 36, 110, 0, 78, 49, 38, 110, 81, 78, 36, 80, 78, 57, 20, + 129, 27, 29, 29, 83, 49, 80, 49, 80, 13, 49, 80, 49, 80, 49, 80, + 27, 83, 36, 80, 49, 2, 92, 123, 92, 123, 92, 123, 92, 123, 92, 123, + 20, 121, 92, 123, 92, 123, 92, 45, 43, 73, 3, 72, 3, 120, 92, 123, + 20, 0, 150, 10, 1, 43, 40, 6, 6, 0, 42, 6, 42, 42, 43, 7, + 187, 181, 43, 30, 0, 43, 7, 43, 43, 43, 1, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 205, 70, 205, 43, 0, 37, 43, 7, 1, 6, 1, 85, 86, 86, 86, + 86, 86, 85, 86, 86, 2, 36, 129, 129, 129, 129, 129, 21, 129, 129, 129, + 0, 0, 43, 0, 178, 209, 178, 209, 178, 209, 178, 209, 0, 0, 205, 204, + 1, 0, 215, 215, 215, 215, 215, 131, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 28, 0, 0, 0, + 0, 0, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 2, 0, 0, + 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, + 49, 80, 78, 49, 80, 49, 80, 78, 49, 80, 49, 80, 49, 80, 49, 80, + 49, 80, 49, 80, 49, 80, 49, 2, 135, 166, 135, 166, 135, 166, 135, 166, + 135, 166, 135, 166, 135, 166, 135, 166, 42, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 0, 0, 0, 84, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 12, 0, 12, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 7, 42, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 86, 86, 108, 129, 21, 0, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 7, 108, 3, 65, 43, 43, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 44, 86, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 108, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, + 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, + 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, + 6, 37, 6, 37, 6, 37, 6, 37, 86, 122, 158, 38, 6, 37, 6, 37, + 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, + 6, 37, 6, 37, 6, 37, 6, 37, 6, 37, 6, 1, 43, 43, 79, 86, + 86, 44, 43, 127, 86, 86, 57, 43, 43, 85, 86, 86, 43, 43, 79, 86, + 86, 44, 43, 127, 86, 86, 129, 55, 117, 91, 123, 92, 43, 43, 79, 86, + 86, 2, 172, 4, 0, 0, 57, 43, 43, 85, 86, 86, 43, 43, 79, 86, + 86, 44, 43, 43, 86, 86, 50, 19, 129, 87, 0, 111, 129, 126, 201, 215, + 126, 45, 129, 129, 14, 126, 57, 127, 111, 87, 0, 129, 129, 126, 21, 0, + 126, 3, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 7, 43, + 36, 43, 151, 43, 43, 43, 43, 43, 43, 43, 43, 43, 42, 43, 43, 43, + 43, 43, 86, 86, 86, 86, 86, 128, 129, 129, 129, 129, 57, 187, 42, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 1, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 201, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 208, 13, 0, 78, 49, 2, 180, 193, 193, + 215, 215, 36, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, + 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, 49, 80, + 49, 80, 49, 80, 215, 215, 83, 193, 71, 212, 215, 215, 215, 5, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 7, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 49, 80, 49, 80, 49, 80, + 49, 80, 49, 80, 49, 80, 49, 80, 13, 0, 0, 0, 0, 0, 36, 80, + 49, 80, 49, 80, 49, 80, 49, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 121, 92, 123, 92, 123, 79, 123, 92, 123, 92, 123, + 92, 123, 92, 123, 92, 123, 92, 123, 92, 123, 92, 123, 92, 123, 92, 45, + 43, 43, 121, 20, 92, 123, 92, 45, 121, 42, 92, 39, 92, 123, 92, 123, + 92, 123, 164, 0, 10, 180, 92, 123, 92, 123, 79, 3, 42, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 43, 43, 43, 43, 43, 43, 43, 7, 0, 72, 86, 86, 86, 86, + 86, 86, 86, 86, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 85, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 7, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 7, 0, 0, + 0, 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 85, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +static const int rules[] = { + 0x0, 0x2001, -0x2000, 0x1dbf00, 0x2e700, 0x7900, + 0x2402, 0x101, -0x100, 0x0, 0x201, -0x200, + -0xc6ff, -0xe800, -0x78ff, -0x12c00, 0xc300, 0xd201, + 0xce01, 0xcd01, 0x4f01, 0xca01, 0xcb01, 0xcf01, + 0x6100, 0xd301, 0xd101, 0xa300, 0xd501, 0x8200, + 0xd601, 0xda01, 0xd901, 0xdb01, 0x3800, 0x3, + -0x4f00, -0x60ff, -0x37ff, 0x242802, 0x0, 0x101, + -0x100, -0xcd00, -0xda00, -0x81ff, 0x2a2b01, -0xa2ff, + 0x2a2801, 0x2a3f00, -0xc2ff, 0x4501, 0x4701, 0x2a1f00, + 0x2a1c00, 0x2a1e00, -0xd200, -0xce00, -0xca00, -0xcb00, + 0xa54f00, 0xa54b00, -0xcf00, 0xa52800, 0xa54400, -0xd100, + -0xd300, 0x29f700, 0xa54100, 0x29fd00, -0xd500, -0xd600, + 0x29e700, 0xa54300, 0xa52a00, -0x4500, -0xd900, -0x4700, + -0xdb00, 0xa51500, 0xa51200, 0x4c2402, 0x0, 0x2001, + -0x2000, 0x101, -0x100, 0x5400, 0x7401, 0x2601, + 0x2501, 0x4001, 0x3f01, -0x2600, -0x2500, -0x1f00, + -0x4000, -0x3f00, 0x801, -0x3e00, -0x3900, -0x2f00, + -0x3600, -0x800, -0x5600, -0x5000, 0x700, -0x7400, + -0x3bff, -0x6000, -0x6ff, 0x701a02, 0x101, -0x100, + 0x2001, -0x2000, 0x5001, 0xf01, -0xf00, 0x0, + 0x3001, -0x3000, 0x101, -0x100, 0x0, 0xbc000, + 0x1c6001, 0x0, 0x97d001, 0x801, -0x800, 0x8a0502, + 0x0, -0xbbfff, -0x186200, 0x89c200, -0x182500, -0x186e00, + -0x186d00, -0x186400, -0x186300, -0x185c00, 0x0, 0x8a3800, + 0x8a0400, 0xee600, 0x101, -0x100, 0x0, -0x3b00, + -0x1dbeff, 0x8f1d02, 0x800, -0x7ff, 0x0, 0x5600, + -0x55ff, 0x4a00, 0x6400, 0x8000, 0x7000, 0x7e00, + 0x900, -0x49ff, -0x8ff, -0x1c2500, -0x63ff, -0x6fff, + -0x7fff, -0x7dff, 0xac0502, 0x0, 0x1001, -0x1000, + 0x1c01, 0x101, -0x1d5cff, -0x20beff, -0x2045ff, -0x1c00, + 0xb10b02, 0x101, -0x100, 0x3001, -0x3000, 0x0, + -0x29f6ff, -0xee5ff, -0x29e6ff, -0x2a2b00, -0x2a2800, -0x2a1bff, + -0x29fcff, -0x2a1eff, -0x2a1dff, -0x2a3eff, 0x0, -0x1c6000, + 0x0, 0x101, -0x100, 0xbc0c02, 0x0, 0x101, + -0x100, -0xa543ff, 0x3a001, -0x8a03ff, -0xa527ff, 0x3000, + -0xa54eff, -0xa54aff, -0xa540ff, -0xa511ff, -0xa529ff, -0xa514ff, + -0x2fff, -0xa542ff, -0x8a37ff, 0x0, -0x97d000, -0x3a000, + 0x0, 0x2001, -0x2000, 0x0, 0x2801, -0x2800, + 0x0, 0x4001, -0x4000, 0x0, 0x2001, -0x2000, + 0x0, 0x2001, -0x2000, 0x0, 0x2201, -0x2200, +}; +static const unsigned char rulebases[] = { + 0, 6, 39, 81, 111, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 124, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 131, 142, 146, 151, + 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 196, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 201, 0, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, + 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +static const unsigned char exceptions[][2] = { + { 48, 12 }, { 49, 13 }, { 120, 14 }, { 127, 15 }, + { 128, 16 }, { 129, 17 }, { 134, 18 }, { 137, 19 }, + { 138, 19 }, { 142, 20 }, { 143, 21 }, { 144, 22 }, + { 147, 19 }, { 148, 23 }, { 149, 24 }, { 150, 25 }, + { 151, 26 }, { 154, 27 }, { 156, 25 }, { 157, 28 }, + { 158, 29 }, { 159, 30 }, { 166, 31 }, { 169, 31 }, + { 174, 31 }, { 177, 32 }, { 178, 32 }, { 183, 33 }, + { 191, 34 }, { 197, 35 }, { 200, 35 }, { 203, 35 }, + { 221, 36 }, { 242, 35 }, { 246, 37 }, { 247, 38 }, + { 32, 45 }, { 58, 46 }, { 61, 47 }, { 62, 48 }, + { 63, 49 }, { 64, 49 }, { 67, 50 }, { 68, 51 }, + { 69, 52 }, { 80, 53 }, { 81, 54 }, { 82, 55 }, + { 83, 56 }, { 84, 57 }, { 89, 58 }, { 91, 59 }, + { 92, 60 }, { 97, 61 }, { 99, 62 }, { 101, 63 }, + { 102, 64 }, { 104, 65 }, { 105, 66 }, { 106, 64 }, + { 107, 67 }, { 108, 68 }, { 111, 66 }, { 113, 69 }, + { 114, 70 }, { 117, 71 }, { 125, 72 }, { 130, 73 }, + { 135, 74 }, { 137, 75 }, { 138, 76 }, { 139, 76 }, + { 140, 77 }, { 146, 78 }, { 157, 79 }, { 158, 80 }, + { 69, 87 }, { 123, 29 }, { 124, 29 }, { 125, 29 }, + { 127, 88 }, { 134, 89 }, { 136, 90 }, { 137, 90 }, + { 138, 90 }, { 140, 91 }, { 142, 92 }, { 143, 92 }, + { 172, 93 }, { 173, 94 }, { 174, 94 }, { 175, 94 }, + { 194, 95 }, { 204, 96 }, { 205, 97 }, { 206, 97 }, + { 207, 98 }, { 208, 99 }, { 209, 100 }, { 213, 101 }, + { 214, 102 }, { 215, 103 }, { 240, 104 }, { 241, 105 }, + { 242, 106 }, { 243, 107 }, { 244, 108 }, { 245, 109 }, + { 249, 110 }, { 253, 45 }, { 254, 45 }, { 255, 45 }, + { 80, 105 }, { 81, 105 }, { 82, 105 }, { 83, 105 }, + { 84, 105 }, { 85, 105 }, { 86, 105 }, { 87, 105 }, + { 88, 105 }, { 89, 105 }, { 90, 105 }, { 91, 105 }, + { 92, 105 }, { 93, 105 }, { 94, 105 }, { 95, 105 }, + { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, + { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, + { 192, 117 }, { 207, 118 }, { 128, 137 }, { 129, 138 }, + { 130, 139 }, { 133, 140 }, { 134, 141 }, { 112, 157 }, + { 113, 157 }, { 118, 158 }, { 119, 158 }, { 120, 159 }, + { 121, 159 }, { 122, 160 }, { 123, 160 }, { 124, 161 }, + { 125, 161 }, { 179, 162 }, { 186, 163 }, { 187, 163 }, + { 188, 164 }, { 190, 165 }, { 195, 162 }, { 204, 164 }, + { 218, 166 }, { 219, 166 }, { 229, 106 }, { 234, 167 }, + { 235, 167 }, { 236, 110 }, { 243, 162 }, { 248, 168 }, + { 249, 168 }, { 250, 169 }, { 251, 169 }, { 252, 164 }, + { 38, 176 }, { 42, 177 }, { 43, 178 }, { 78, 179 }, + { 132, 8 }, { 98, 186 }, { 99, 187 }, { 100, 188 }, + { 101, 189 }, { 102, 190 }, { 109, 191 }, { 110, 192 }, + { 111, 193 }, { 112, 194 }, { 126, 195 }, { 127, 195 }, + { 125, 207 }, { 141, 208 }, { 148, 209 }, { 171, 210 }, + { 172, 211 }, { 173, 212 }, { 176, 213 }, { 177, 214 }, + { 178, 215 }, { 196, 216 }, { 197, 217 }, { 198, 218 }, +}; diff --git a/vendor/modernc.org/libc/musl/src/ctype/isalnum.c b/vendor/modernc.org/libc/musl/src/ctype/isalnum.c new file mode 100644 index 000000000..8018a2bc7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isalnum.c @@ -0,0 +1,13 @@ +#include + +int isalnum(int c) +{ + return isalpha(c) || isdigit(c); +} + +int __isalnum_l(int c, locale_t l) +{ + return isalnum(c); +} + +weak_alias(__isalnum_l, isalnum_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isalpha.c b/vendor/modernc.org/libc/musl/src/ctype/isalpha.c new file mode 100644 index 000000000..a87a93759 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isalpha.c @@ -0,0 +1,14 @@ +#include +#undef isalpha + +int isalpha(int c) +{ + return ((unsigned)c|32)-'a' < 26; +} + +int __isalpha_l(int c, locale_t l) +{ + return isalpha(c); +} + +weak_alias(__isalpha_l, isalpha_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isascii.c b/vendor/modernc.org/libc/musl/src/ctype/isascii.c new file mode 100644 index 000000000..54ad3bf02 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isascii.c @@ -0,0 +1,7 @@ +#include +#undef isascii + +int isascii(int c) +{ + return !(c&~0x7f); +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/isblank.c b/vendor/modernc.org/libc/musl/src/ctype/isblank.c new file mode 100644 index 000000000..716da23a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isblank.c @@ -0,0 +1,13 @@ +#include + +int isblank(int c) +{ + return (c == ' ' || c == '\t'); +} + +int __isblank_l(int c, locale_t l) +{ + return isblank(c); +} + +weak_alias(__isblank_l, isblank_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iscntrl.c b/vendor/modernc.org/libc/musl/src/ctype/iscntrl.c new file mode 100644 index 000000000..f27837ea5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iscntrl.c @@ -0,0 +1,13 @@ +#include + +int iscntrl(int c) +{ + return (unsigned)c < 0x20 || c == 0x7f; +} + +int __iscntrl_l(int c, locale_t l) +{ + return iscntrl(c); +} + +weak_alias(__iscntrl_l, iscntrl_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isdigit.c b/vendor/modernc.org/libc/musl/src/ctype/isdigit.c new file mode 100644 index 000000000..16beddb4c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isdigit.c @@ -0,0 +1,14 @@ +#include +#undef isdigit + +int isdigit(int c) +{ + return (unsigned)c-'0' < 10; +} + +int __isdigit_l(int c, locale_t l) +{ + return isdigit(c); +} + +weak_alias(__isdigit_l, isdigit_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isgraph.c b/vendor/modernc.org/libc/musl/src/ctype/isgraph.c new file mode 100644 index 000000000..292d1983e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isgraph.c @@ -0,0 +1,14 @@ +#include +#undef isgraph + +int isgraph(int c) +{ + return (unsigned)c-0x21 < 0x5e; +} + +int __isgraph_l(int c, locale_t l) +{ + return isgraph(c); +} + +weak_alias(__isgraph_l, isgraph_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/islower.c b/vendor/modernc.org/libc/musl/src/ctype/islower.c new file mode 100644 index 000000000..c3fa74c4c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/islower.c @@ -0,0 +1,14 @@ +#include +#undef islower + +int islower(int c) +{ + return (unsigned)c-'a' < 26; +} + +int __islower_l(int c, locale_t l) +{ + return islower(c); +} + +weak_alias(__islower_l, islower_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isprint.c b/vendor/modernc.org/libc/musl/src/ctype/isprint.c new file mode 100644 index 000000000..b950816bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isprint.c @@ -0,0 +1,14 @@ +#include +#undef isprint + +int isprint(int c) +{ + return (unsigned)c-0x20 < 0x5f; +} + +int __isprint_l(int c, locale_t l) +{ + return isprint(c); +} + +weak_alias(__isprint_l, isprint_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/ispunct.c b/vendor/modernc.org/libc/musl/src/ctype/ispunct.c new file mode 100644 index 000000000..a491d5dc4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/ispunct.c @@ -0,0 +1,13 @@ +#include + +int ispunct(int c) +{ + return isgraph(c) && !isalnum(c); +} + +int __ispunct_l(int c, locale_t l) +{ + return ispunct(c); +} + +weak_alias(__ispunct_l, ispunct_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isspace.c b/vendor/modernc.org/libc/musl/src/ctype/isspace.c new file mode 100644 index 000000000..428813e79 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isspace.c @@ -0,0 +1,14 @@ +#include +#undef isspace + +int isspace(int c) +{ + return c == ' ' || (unsigned)c-'\t' < 5; +} + +int __isspace_l(int c, locale_t l) +{ + return isspace(c); +} + +weak_alias(__isspace_l, isspace_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isupper.c b/vendor/modernc.org/libc/musl/src/ctype/isupper.c new file mode 100644 index 000000000..bfd15acdb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isupper.c @@ -0,0 +1,14 @@ +#include +#undef isupper + +int isupper(int c) +{ + return (unsigned)c-'A' < 26; +} + +int __isupper_l(int c, locale_t l) +{ + return isupper(c); +} + +weak_alias(__isupper_l, isupper_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswalnum.c b/vendor/modernc.org/libc/musl/src/ctype/iswalnum.c new file mode 100644 index 000000000..046c399c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswalnum.c @@ -0,0 +1,13 @@ +#include + +int iswalnum(wint_t wc) +{ + return iswdigit(wc) || iswalpha(wc); +} + +int __iswalnum_l(wint_t c, locale_t l) +{ + return iswalnum(c); +} + +weak_alias(__iswalnum_l, iswalnum_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswalpha.c b/vendor/modernc.org/libc/musl/src/ctype/iswalpha.c new file mode 100644 index 000000000..1c5485d2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswalpha.c @@ -0,0 +1,21 @@ +#include + +static const unsigned char table[] = { +#include "alpha.h" +}; + +int iswalpha(wint_t wc) +{ + if (wc<0x20000U) + return (table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1; + if (wc<0x2fffeU) + return 1; + return 0; +} + +int __iswalpha_l(wint_t c, locale_t l) +{ + return iswalpha(c); +} + +weak_alias(__iswalpha_l, iswalpha_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswblank.c b/vendor/modernc.org/libc/musl/src/ctype/iswblank.c new file mode 100644 index 000000000..68c880020 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswblank.c @@ -0,0 +1,14 @@ +#include +#include + +int iswblank(wint_t wc) +{ + return isblank(wc); +} + +int __iswblank_l(wint_t c, locale_t l) +{ + return iswblank(c); +} + +weak_alias(__iswblank_l, iswblank_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswcntrl.c b/vendor/modernc.org/libc/musl/src/ctype/iswcntrl.c new file mode 100644 index 000000000..feccfcd5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswcntrl.c @@ -0,0 +1,16 @@ +#include + +int iswcntrl(wint_t wc) +{ + return (unsigned)wc < 32 + || (unsigned)(wc-0x7f) < 33 + || (unsigned)(wc-0x2028) < 2 + || (unsigned)(wc-0xfff9) < 3; +} + +int __iswcntrl_l(wint_t c, locale_t l) +{ + return iswcntrl(c); +} + +weak_alias(__iswcntrl_l, iswcntrl_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswctype.c b/vendor/modernc.org/libc/musl/src/ctype/iswctype.c new file mode 100644 index 000000000..71b09b8d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswctype.c @@ -0,0 +1,75 @@ +#include +#include + +#define WCTYPE_ALNUM 1 +#define WCTYPE_ALPHA 2 +#define WCTYPE_BLANK 3 +#define WCTYPE_CNTRL 4 +#define WCTYPE_DIGIT 5 +#define WCTYPE_GRAPH 6 +#define WCTYPE_LOWER 7 +#define WCTYPE_PRINT 8 +#define WCTYPE_PUNCT 9 +#define WCTYPE_SPACE 10 +#define WCTYPE_UPPER 11 +#define WCTYPE_XDIGIT 12 + +int iswctype(wint_t wc, wctype_t type) +{ + switch (type) { + case WCTYPE_ALNUM: + return iswalnum(wc); + case WCTYPE_ALPHA: + return iswalpha(wc); + case WCTYPE_BLANK: + return iswblank(wc); + case WCTYPE_CNTRL: + return iswcntrl(wc); + case WCTYPE_DIGIT: + return iswdigit(wc); + case WCTYPE_GRAPH: + return iswgraph(wc); + case WCTYPE_LOWER: + return iswlower(wc); + case WCTYPE_PRINT: + return iswprint(wc); + case WCTYPE_PUNCT: + return iswpunct(wc); + case WCTYPE_SPACE: + return iswspace(wc); + case WCTYPE_UPPER: + return iswupper(wc); + case WCTYPE_XDIGIT: + return iswxdigit(wc); + } + return 0; +} + +wctype_t wctype(const char *s) +{ + int i; + const char *p; + /* order must match! */ + static const char names[] = + "alnum\0" "alpha\0" "blank\0" + "cntrl\0" "digit\0" "graph\0" + "lower\0" "print\0" "punct\0" + "space\0" "upper\0" "xdigit"; + for (i=1, p=names; *p; i++, p+=6) + if (*s == *p && !strcmp(s, p)) + return i; + return 0; +} + +int __iswctype_l(wint_t c, wctype_t t, locale_t l) +{ + return iswctype(c, t); +} + +wctype_t __wctype_l(const char *s, locale_t l) +{ + return wctype(s); +} + +weak_alias(__iswctype_l, iswctype_l); +weak_alias(__wctype_l, wctype_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswdigit.c b/vendor/modernc.org/libc/musl/src/ctype/iswdigit.c new file mode 100644 index 000000000..db817edf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswdigit.c @@ -0,0 +1,15 @@ +#include + +#undef iswdigit + +int iswdigit(wint_t wc) +{ + return (unsigned)wc-'0' < 10; +} + +int __iswdigit_l(wint_t c, locale_t l) +{ + return iswdigit(c); +} + +weak_alias(__iswdigit_l, iswdigit_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswgraph.c b/vendor/modernc.org/libc/musl/src/ctype/iswgraph.c new file mode 100644 index 000000000..ecdf466c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswgraph.c @@ -0,0 +1,14 @@ +#include + +int iswgraph(wint_t wc) +{ + /* ISO C defines this function as: */ + return !iswspace(wc) && iswprint(wc); +} + +int __iswgraph_l(wint_t c, locale_t l) +{ + return iswgraph(c); +} + +weak_alias(__iswgraph_l, iswgraph_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswlower.c b/vendor/modernc.org/libc/musl/src/ctype/iswlower.c new file mode 100644 index 000000000..f02a4362a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswlower.c @@ -0,0 +1,13 @@ +#include + +int iswlower(wint_t wc) +{ + return towupper(wc) != wc; +} + +int __iswlower_l(wint_t c, locale_t l) +{ + return iswlower(c); +} + +weak_alias(__iswlower_l, iswlower_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswprint.c b/vendor/modernc.org/libc/musl/src/ctype/iswprint.c new file mode 100644 index 000000000..86f9d646a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswprint.c @@ -0,0 +1,26 @@ +#include + +/* Consider all legal codepoints as printable except for: + * - C0 and C1 control characters + * - U+2028 and U+2029 (line/para break) + * - U+FFF9 through U+FFFB (interlinear annotation controls) + * The following code is optimized heavily to make hot paths for the + * expected printable characters. */ + +int iswprint(wint_t wc) +{ + if (wc < 0xffU) + return (wc+1 & 0x7f) >= 0x21; + if (wc < 0x2028U || wc-0x202aU < 0xd800-0x202a || wc-0xe000U < 0xfff9-0xe000) + return 1; + if (wc-0xfffcU > 0x10ffff-0xfffc || (wc&0xfffe)==0xfffe) + return 0; + return 1; +} + +int __iswprint_l(wint_t c, locale_t l) +{ + return iswprint(c); +} + +weak_alias(__iswprint_l, iswprint_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswpunct.c b/vendor/modernc.org/libc/musl/src/ctype/iswpunct.c new file mode 100644 index 000000000..f0b9ea0a4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswpunct.c @@ -0,0 +1,19 @@ +#include + +static const unsigned char table[] = { +#include "punct.h" +}; + +int iswpunct(wint_t wc) +{ + if (wc<0x20000U) + return (table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1; + return 0; +} + +int __iswpunct_l(wint_t c, locale_t l) +{ + return iswpunct(c); +} + +weak_alias(__iswpunct_l, iswpunct_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswspace.c b/vendor/modernc.org/libc/musl/src/ctype/iswspace.c new file mode 100644 index 000000000..263afa15c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswspace.c @@ -0,0 +1,24 @@ +#include +#include + +/* Our definition of whitespace is the Unicode White_Space property, + * minus non-breaking spaces (U+00A0, U+2007, and U+202F) and script- + * specific characters with non-blank glyphs (U+1680 and U+180E). */ + +int iswspace(wint_t wc) +{ + static const wchar_t spaces[] = { + ' ', '\t', '\n', '\r', 11, 12, 0x0085, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, + 0x2006, 0x2008, 0x2009, 0x200a, + 0x2028, 0x2029, 0x205f, 0x3000, 0 + }; + return wc && wcschr(spaces, wc); +} + +int __iswspace_l(wint_t c, locale_t l) +{ + return iswspace(c); +} + +weak_alias(__iswspace_l, iswspace_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswupper.c b/vendor/modernc.org/libc/musl/src/ctype/iswupper.c new file mode 100644 index 000000000..7e486665e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswupper.c @@ -0,0 +1,13 @@ +#include + +int iswupper(wint_t wc) +{ + return towlower(wc) != wc; +} + +int __iswupper_l(wint_t c, locale_t l) +{ + return iswupper(c); +} + +weak_alias(__iswupper_l, iswupper_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/iswxdigit.c b/vendor/modernc.org/libc/musl/src/ctype/iswxdigit.c new file mode 100644 index 000000000..62bc9e743 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/iswxdigit.c @@ -0,0 +1,13 @@ +#include + +int iswxdigit(wint_t wc) +{ + return (unsigned)(wc-'0') < 10 || (unsigned)((wc|32)-'a') < 6; +} + +int __iswxdigit_l(wint_t c, locale_t l) +{ + return iswxdigit(c); +} + +weak_alias(__iswxdigit_l, iswxdigit_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/isxdigit.c b/vendor/modernc.org/libc/musl/src/ctype/isxdigit.c new file mode 100644 index 000000000..aab1a745b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/isxdigit.c @@ -0,0 +1,13 @@ +#include + +int isxdigit(int c) +{ + return isdigit(c) || ((unsigned)c|32)-'a' < 6; +} + +int __isxdigit_l(int c, locale_t l) +{ + return isxdigit(c); +} + +weak_alias(__isxdigit_l, isxdigit_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/nonspacing.h b/vendor/modernc.org/libc/musl/src/ctype/nonspacing.h new file mode 100644 index 000000000..5d05a3d1a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/nonspacing.h @@ -0,0 +1,89 @@ +16,16,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16,16,32,16,16,16,33,34,35, +36,37,38,39,16,16,40,16,16,16,16,16,16,16,16,16,16,16,41,42,16,16,43,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,44,16,45,46,47,48,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,49,16,16,50, +51,16,52,53,54,16,16,16,16,16,16,55,16,16,56,16,57,58,59,60,61,62,63,64,65,66, +67,68,16,69,70,71,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,72,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,73,74,16,16,16,75,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,76,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,77,78,16,16,16,16,16,16,16,79,16,16,16,16,16,80,81,82,16,16,16,16,16,83, +84,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,254,255,255,255,255,191,182,0,0,0,0,0,0,0,63,0,255,23,0,0,0,0,0,248,255, +255,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,191,159,61,0,0,0,128,2,0,0,0,255,255,255, +7,0,0,0,0,0,0,0,0,0,0,192,255,1,0,0,0,0,0,0,248,15,32,0,0,192,251,239,62,0,0, +0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,255,255, +255,7,0,0,0,0,0,0,20,254,33,254,0,12,0,0,0,2,0,0,0,0,0,0,16,30,32,0,0,12,0,0, +64,6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,190,33,0,0,12,0,0, +252,2,0,0,0,0,0,0,144,30,32,64,0,12,0,0,0,4,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,17, +0,0,0,0,0,0,192,193,61,96,0,12,0,0,0,2,0,0,0,0,0,0,144,64,48,0,0,12,0,0,0,3,0, +0,0,0,0,0,24,30,32,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,4,92,0,0,0,0,0,0,0,0,0,0,0, +242,7,128,127,0,0,0,0,0,0,0,0,0,0,0,0,242,31,0,63,0,0,0,0,0,0,0,0,0,3,0,0,160, +2,0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,0,0,0,0,0,0,0,0, +0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0, +0,0,28,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,15,32,0,0,0,0,0,120,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,14,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,0,0,64,127, +229,31,248,159,0,0,0,0,0,0,255,127,0,0,0,0,0,0,0,0,15,0,0,0,0,0,208,23,4,0,0, +0,0,248,15,0,3,0,0,0,60,59,0,0,0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255, +251,0,248,0,0,0,124,0,0,0,0,0,0,223,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, +255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0, +0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,128,247,63,0,0,0,192,0,0,0,0,0,0,0,0,0,0,3,0,68,8,0,0,96,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,255,255,3,128,0,0,0,0,192,63,0,0,128,255,3,0, +0,0,0,0,7,0,0,0,0,0,200,51,0,0,0,0,32,0,0,0,0,0,0,0,0,126,102,0,8,16,0,0,0,0, +0,16,0,0,0,0,0,0,157,193,2,0,0,0,0,48,64, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,255,255,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,110,240,0,0,0,0,0,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0, +0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,192,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,255, +127,0,0,0,0,0,0,128,3,0,0,0,0,0,120,38,0,32,0,0,0,0,0,0,7,0,0,0,128,239,31,0, +0,0,0,0,0,0,8,0,3,0,0,0,0,0,192,127,0,30,0,0,0,0,0,0,0,0,0,0,0,128,211,64,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,7,0,0,3,0,0,0,0,0,0,24,1,0,0,0,192, +31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,92,0,0,64,0,0,0,0,0, +0,0,0,0,0,248,133,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,60,176,1,0,0,48,0,0,0, +0,0,0,0,0,0,0,248,167,1,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,0,0,0,0,0,0,0,0,0,0, +0,224,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +128,255,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,12,1,0,0,0,254,7,0,0,0,0,248,121,128,0, +126,14,0,0,0,0,0,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,0,0,0, +0,0,0,0,0,0,0,252,255,255,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,180,191,0, +0,0,0,0,0,0,0,0,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +0,0,0,0,0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,127,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0, +0,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,15, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,248,255,231,15,0,0,0,60,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,255,255,255,255,255,255,127,248,255,255,255,255,255,31,32,0,16,0,0,248, +254,255,0,0,0,0,0,0,0,0,0, +0,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,240,7,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/vendor/modernc.org/libc/musl/src/ctype/punct.h b/vendor/modernc.org/libc/musl/src/ctype/punct.h new file mode 100644 index 000000000..67929470c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/punct.h @@ -0,0 +1,141 @@ +18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,16,16,34,35,16,36,37,38,39, +40,41,42,43,16,44,45,46,17,17,47,17,17,17,17,17,17,48,49,50,51,52,53,54,55,17, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,56, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,57,16,58,59,60,61,62,63,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,64,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,65,16,16,66,16,67,68, +69,16,70,71,72,16,73,16,16,74,75,76,77,78,16,79,80,81,82,83,84,85,86,87,88,89, +90,91,16,92,93,94,95,16,16,16,16,96,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,97,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,98,99,16,16,100,101,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,102,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,103,104,105,106,16,16,107,108,17,17,109,16,16,16,16,16,16,110,111,16, +16,16,16,16,112,113,16,16,114,115,116,16,117,118,119,17,17,17,120,121,122,123, +124,16,16,16,16, +16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,254,255,0,252,1,0,0,248,1, +0,0,120,0,0,0,0,255,251,223,251,0,0,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,60,0,252,255,224,175,255,255,255,255,255,255,255,255, +255,255,223,255,255,255,255,255,32,64,176,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,252,0,0,0,0,0,230,254,255,255,255,0,64,73,0,0,0,0,0,24,0,255,255,0,216, +0,0,0,0,0,0,0,1,0,60,0,0,0,0,0,0,0,0,0,0,0,0,16,224,1,30,0, +96,255,191,0,0,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,207, +227,0,0,0,3,0,32,255,127,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,7,252,0,0,0, +0,0,0,0,0,0,16,0,32,30,0,48,0,1,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,252,111,0,0,0, +0,0,0,0,16,0,32,0,0,0,0,64,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,3,224,0,0,0,0,0,0, +0,16,0,32,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,255,7,16,0,0,0,0,0,0,0,0, +32,0,0,0,0,128,255,16,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,160, +0,127,0,0,255,3,0,0,0,0,0,0,0,0,0,4,0,0,0,0,16,0,0,0,0,0,0,128,0,128,192,223, +0,12,0,0,0,0,0,0,0,0,0,0,0,4,0,31,0,0,0,0,0, +0,254,255,255,255,0,252,255,255,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,192,255,223, +255,7,0,0,0,0,0,0,0,0,0,0,128,6,0,252,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0, +0,0,8,0,0,0,0,0,0,0,0,0,0,0,224,255,255,255,31,0,0,255,3,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,96,0,0,1,0,0,24,0,0,0,0,0,0,0,0,0,56,0,0,0,0,16,0,0,0,112,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,254,127,47,0,0,255,3,255,127,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,196,255,255,255, +255,0,0,0,192,0,0,0,0,0,0,0,0,1,0,224,159,0,0,0,0,127,63,255,127,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,16,0,16,0,0,252,255,255,255,31,0,0,0,0,0,12,0,0,0,0,0,0,64,0, +12,240,0,0,0,0,0,0,128,248,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,255,0,255,255, +255,33,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, +127,0,224,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,3,224,0,224,0, +224,0,96,128,248,255,255,255,252,255,255,255,255,255,127,223,255,241,127,255, +127,0,0,255,255,255,255,0,0,255,255,255,255,1,0,123,3,208,193,175,66,0,12,31, +188,255,255,0,0,0,0,0,14,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,127,0,0,0,255,7,0,0,255,255,255,255,255,255,255,255,255, +255,63,0,0,0,0,0,0,252,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,207,255,255,255, +63,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,127,255,255,255,255,0, +0,0,0,0,0,255,255,255,251,255,255,255,255,255,255,255,255,255,255,15,0,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,63,0,0,0,255,15,30,255,255,255,1,252,193,224,0,0,0,0, +0,0,0,0,0,0,0,30,1,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +255,255,0,0,0,0,255,255,255,255,15,0,0,0,255,255,255,127,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255, +255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255, +255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,0,0, +0,0,0,192,0,224,0,0,0,0,0,0,0,0,0,0,0,128,15,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +255,0,255,255,127,0,3,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +64,0,0,0,0,15,255,3,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,16,192,0,0,255,255,3,23, +0,0,0,0,0,248,0,0,0,0,8,128,0,0,0,0,0,0,0,0,0,0,8,0,255,63,0,192,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,240,0,0,128,3,0,0,0,0,0,0,0,128,2,0,0,192,0,0,67,0,0,0,0,0, +0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0, +0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,2,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,255,255,3,255,255,255,255,255,255,247, +255,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,255,0,252,1,0,0,248,1,0, +0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,48,135,255,255,255,255,255, +143,255,0,0,0,0,0,0,224,255,255,127,255,15,1,0,0,0,0,0,255,255,255,255,255,63, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, +15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +128,255,0,0,128,255,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,248,0,0,192,143,0,0,0, +128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,255,252,255,255,255,255,255,0,0,0,0, +0,0,0,135,255,1,255,1,0,0,0,224,0,0,0,224,0,0,0,0,0,1,0,0,96,248,127,0,0,0,0, +0,0,0,0,254,0,0,0,255,0,0,0,255,0,0,0,30,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,0,0, +0,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,224,127,0,0,0,192,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,192,63,252,255,63,0,0,128,3,0,0,0,0,0,0,254,3,32,0,0,0,0,0,0,0, +0,0,0,0,0,24,0,15,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,225,63,0,232,254,255,31,0,0, +0,0,0,0,0,96,63,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0, +24,0,32,0,0,192,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68, +248,0,104,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,128,14,0,0,0,255, +31,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,8,0,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,7,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,24,128,255,0,0,0,0,0, +0,0,0,0,0,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,62,0,0,252,255,31,3,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,128,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, +255,3, +128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,255,255,48,0,0,248, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, +255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,15,0,0,0,0,0,0, +0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,63, +0,255,255,255,255,127,254,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,1,0,0,255,255,255,255,255,255,255,255, +63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,15,0,255,255,255,255,255,255, +255,255,255,255,127,0,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,8,0,0,0,8,0,0,32,0,0,0,32,0,0,128, +0,0,0,128,0,0,0,2,0,0,0,2,0,0,8,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,15,0,248,254,255,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,127,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0, +128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,127,0,0,0,0,0,0,0, +0,0,0,0,0,0,112,7,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,254,255,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,254,255, +255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,255,255,255,255,255, +15,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,127,254,255,254, +255,254,255,255,255,63,0,255,31,255,255,255,255,0,0,0,252,0,0,0,28,0,0,0,252, +255,255,255,31,0,0,0,0,0,0,192,255,255,255,7,0,255,255,255,255,255,15,255,1,3, +0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,63,0,255,31,255,7,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,1, +255,15,0,0,255,15,255,255,255,255,255,255,255,0,255,3,255,255,255,255,255,0, +255,255,255,63,0,0,0,0,0,0,0,0,0,0,255,239,255,255,255,255,255,255,255,255, +255,255,255,255,123,252,255,255,255,255,231,199,255,255,255,231,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,63,15,7,7,0,63,0, +0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/vendor/modernc.org/libc/musl/src/ctype/toascii.c b/vendor/modernc.org/libc/musl/src/ctype/toascii.c new file mode 100644 index 000000000..f0e48e8e9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/toascii.c @@ -0,0 +1,7 @@ +#include + +/* nonsense function that should NEVER be used! */ +int toascii(int c) +{ + return c & 0x7f; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/tolower.c b/vendor/modernc.org/libc/musl/src/ctype/tolower.c new file mode 100644 index 000000000..f10132ec2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/tolower.c @@ -0,0 +1,14 @@ +#include + +int tolower(int c) +{ + if (isupper(c)) return c | 32; + return c; +} + +int __tolower_l(int c, locale_t l) +{ + return tolower(c); +} + +weak_alias(__tolower_l, tolower_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/toupper.c b/vendor/modernc.org/libc/musl/src/ctype/toupper.c new file mode 100644 index 000000000..4e74a55c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/toupper.c @@ -0,0 +1,14 @@ +#include + +int toupper(int c) +{ + if (islower(c)) return c & 0x5f; + return c; +} + +int __toupper_l(int c, locale_t l) +{ + return toupper(c); +} + +weak_alias(__toupper_l, toupper_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/towctrans.c b/vendor/modernc.org/libc/musl/src/ctype/towctrans.c new file mode 100644 index 000000000..76d137696 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/towctrans.c @@ -0,0 +1,84 @@ +#include + +static const unsigned char tab[]; + +static const unsigned char rulebases[512]; +static const int rules[]; + +static const unsigned char exceptions[][2]; + +#include "casemap.h" + +static int casemap(unsigned c, int dir) +{ + unsigned b, x, y, v, rt, xb, xn; + int r, rd, c0 = c; + + if (c >= 0x20000) return c; + + b = c>>8; + c &= 255; + x = c/3; + y = c%3; + + /* lookup entry in two-level base-6 table */ + v = tab[tab[b]*86+x]; + static const int mt[] = { 2048, 342, 57 }; + v = (v*mt[y]>>11)%6; + + /* use the bit vector out of the tables as an index into + * a block-specific set of rules and decode the rule into + * a type and a case-mapping delta. */ + r = rules[rulebases[b]+v]; + rt = r & 255; + rd = r >> 8; + + /* rules 0/1 are simple lower/upper case with a delta. + * apply according to desired mapping direction. */ + if (rt < 2) return c0 + (rd & -(rt^dir)); + + /* binary search. endpoints of the binary search for + * this block are stored in the rule delta field. */ + xn = rd & 0xff; + xb = (unsigned)rd >> 8; + while (xn) { + unsigned try = exceptions[xb+xn/2][0]; + if (try == c) { + r = rules[exceptions[xb+xn/2][1]]; + rt = r & 255; + rd = r >> 8; + if (rt < 2) return c0 + (rd & -(rt^dir)); + /* Hard-coded for the four exceptional titlecase */ + return c0 + (dir ? -1 : 1); + } else if (try > c) { + xn /= 2; + } else { + xb += xn/2; + xn -= xn/2; + } + } + return c0; +} + +wint_t towlower(wint_t wc) +{ + return casemap(wc, 0); +} + +wint_t towupper(wint_t wc) +{ + return casemap(wc, 1); +} + +wint_t __towupper_l(wint_t c, locale_t l) +{ + return towupper(c); +} + +wint_t __towlower_l(wint_t c, locale_t l) +{ + return towlower(c); +} + +weak_alias(__towupper_l, towupper_l); +weak_alias(__towlower_l, towlower_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/wcswidth.c b/vendor/modernc.org/libc/musl/src/ctype/wcswidth.c new file mode 100644 index 000000000..5c8a5a4da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/wcswidth.c @@ -0,0 +1,8 @@ +#include + +int wcswidth(const wchar_t *wcs, size_t n) +{ + int l=0, k=0; + for (; n-- && *wcs && (k = wcwidth(*wcs)) >= 0; l+=k, wcs++); + return (k < 0) ? k : l; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/wctrans.c b/vendor/modernc.org/libc/musl/src/ctype/wctrans.c new file mode 100644 index 000000000..d3eda5216 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/wctrans.c @@ -0,0 +1,29 @@ +#include +#include + +wctrans_t wctrans(const char *class) +{ + if (!strcmp(class, "toupper")) return (wctrans_t)1; + if (!strcmp(class, "tolower")) return (wctrans_t)2; + return 0; +} + +wint_t towctrans(wint_t wc, wctrans_t trans) +{ + if (trans == (wctrans_t)1) return towupper(wc); + if (trans == (wctrans_t)2) return towlower(wc); + return wc; +} + +wctrans_t __wctrans_l(const char *s, locale_t l) +{ + return wctrans(s); +} + +wint_t __towctrans_l(wint_t c, wctrans_t t, locale_t l) +{ + return towctrans(c, t); +} + +weak_alias(__wctrans_l, wctrans_l); +weak_alias(__towctrans_l, towctrans_l); diff --git a/vendor/modernc.org/libc/musl/src/ctype/wcwidth.c b/vendor/modernc.org/libc/musl/src/ctype/wcwidth.c new file mode 100644 index 000000000..36256a538 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/wcwidth.c @@ -0,0 +1,29 @@ +#include + +static const unsigned char table[] = { +#include "nonspacing.h" +}; + +static const unsigned char wtable[] = { +#include "wide.h" +}; + +int wcwidth(wchar_t wc) +{ + if (wc < 0xffU) + return (wc+1 & 0x7f) >= 0x21 ? 1 : wc ? -1 : 0; + if ((wc & 0xfffeffffU) < 0xfffe) { + if ((table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1) + return 0; + if ((wtable[wtable[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1) + return 2; + return 1; + } + if ((wc & 0xfffe) == 0xfffe) + return -1; + if (wc-0x20000U < 0x20000) + return 2; + if (wc == 0xe0001 || wc-0xe0020U < 0x5f || wc-0xe0100U < 0xef) + return 0; + return 1; +} diff --git a/vendor/modernc.org/libc/musl/src/ctype/wide.h b/vendor/modernc.org/libc/musl/src/ctype/wide.h new file mode 100644 index 000000000..e403c9a5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ctype/wide.h @@ -0,0 +1,65 @@ +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,19,16,20,21,22,16,16,16,23,16,16,24,25,26,27,28,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,29, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,30,16,16,16,16,31,16,16,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,16,16,16,33, +34,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,35,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,36,17,17,37,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,38,39,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,40,41,42,43,44,45,46,47,16,48,49,16,16,16,16, +16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,48,0,0,0,0,0,0,255,15,0,0,0,0,128,0,0,8, +0,2,12,0,96,48,64,16,0,0,4,44,36,32,12,0,0,0,1,0,0,0,80,184,0,0,0,0,0,0,0,224, +0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,251,255,255,255,255,255,255,255, +255,255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,255,15,255,255,255,255, +255,255,255,127,254,255,255,255,255,255,255,255,255,255,127,254,255,255,255, +255,255,255,255,255,255,255,255,255,224,255,255,255,255,255,254,255,255,255, +255,255,255,255,255,255,255,127,255,255,255,255,255,7,255,255,255,255,15,0, +255,255,255,255,255,127,255,255,255,255,255,0,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, +0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,31,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, +255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,0,0,255,255,255,255,247,255,127,15,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,255,255,255,255,255,255,255, +255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,7,0,255,255,255,127,0,0,0,0,0, +0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255, +15,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,255,255,255, +255,255,15,255,1,3,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, +1,224,191,255,255,255,255,255,255,255,255,223,255,255,15,0,255,255,255,255, +255,135,15,0,255,255,17,255,255,255,255,255,255,255,255,127,253,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +159,255,255,255,255,255,255,255,63,0,120,255,255,255,0,0,4,0,0,96,0,16,0,0,0, +0,0,0,0,0,0,0,248,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,255,255, +255,255,255,255,255,255,63,16,39,0,0,24,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,255,15,0, +0,0,224,255,255,255,255,255,255,255,255,255,255,255,255,123,252,255,255,255, +255,231,199,255,255,255,231,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,15,7,7,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/vendor/modernc.org/libc/musl/src/dirent/__dirent.h b/vendor/modernc.org/libc/musl/src/dirent/__dirent.h new file mode 100644 index 000000000..828a5f178 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/__dirent.h @@ -0,0 +1,11 @@ +struct __dirstream +{ + off_t tell; + int fd; + int buf_pos; + int buf_end; + volatile int lock[1]; + /* Any changes to this struct must preserve the property: + * offsetof(struct __dirent, buf) % sizeof(off_t) == 0 */ + char buf[2048]; +}; diff --git a/vendor/modernc.org/libc/musl/src/dirent/alphasort.c b/vendor/modernc.org/libc/musl/src/dirent/alphasort.c new file mode 100644 index 000000000..bee672ebd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/alphasort.c @@ -0,0 +1,9 @@ +#include +#include + +int alphasort(const struct dirent **a, const struct dirent **b) +{ + return strcoll((*a)->d_name, (*b)->d_name); +} + +weak_alias(alphasort, alphasort64); diff --git a/vendor/modernc.org/libc/musl/src/dirent/closedir.c b/vendor/modernc.org/libc/musl/src/dirent/closedir.c new file mode 100644 index 000000000..e794ae9ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/closedir.c @@ -0,0 +1,11 @@ +#include +#include +#include +#include "__dirent.h" + +int closedir(DIR *dir) +{ + int ret = close(dir->fd); + free(dir); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/dirfd.c b/vendor/modernc.org/libc/musl/src/dirent/dirfd.c new file mode 100644 index 000000000..6c8600739 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/dirfd.c @@ -0,0 +1,7 @@ +#include +#include "__dirent.h" + +int dirfd(DIR *d) +{ + return d->fd; +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/fdopendir.c b/vendor/modernc.org/libc/musl/src/dirent/fdopendir.c new file mode 100644 index 000000000..d78fb87f9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/fdopendir.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include "__dirent.h" + +DIR *fdopendir(int fd) +{ + DIR *dir; + struct stat st; + + if (fstat(fd, &st) < 0) { + return 0; + } + if (fcntl(fd, F_GETFL) & O_PATH) { + errno = EBADF; + return 0; + } + if (!S_ISDIR(st.st_mode)) { + errno = ENOTDIR; + return 0; + } + if (!(dir = calloc(1, sizeof *dir))) { + return 0; + } + + fcntl(fd, F_SETFD, FD_CLOEXEC); + dir->fd = fd; + return dir; +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/opendir.c b/vendor/modernc.org/libc/musl/src/dirent/opendir.c new file mode 100644 index 000000000..5cb84e303 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/opendir.c @@ -0,0 +1,21 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "__dirent.h" +#include "syscall.h" + +DIR *opendir(const char *name) +{ + int fd; + DIR *dir; + + if ((fd = open(name, O_RDONLY|O_DIRECTORY|O_CLOEXEC)) < 0) + return 0; + if (!(dir = calloc(1, sizeof *dir))) { + __syscall(SYS_close, fd); + return 0; + } + dir->fd = fd; + return dir; +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/readdir.c b/vendor/modernc.org/libc/musl/src/dirent/readdir.c new file mode 100644 index 000000000..569fc7057 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/readdir.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include "__dirent.h" +#include "syscall.h" + +typedef char dirstream_buf_alignment_check[1-2*(int)( + offsetof(struct __dirstream, buf) % sizeof(off_t))]; + +struct dirent *readdir(DIR *dir) +{ + struct dirent *de; + + if (dir->buf_pos >= dir->buf_end) { + int len = __syscall(SYS_getdents, dir->fd, dir->buf, sizeof dir->buf); + if (len <= 0) { + if (len < 0 && len != -ENOENT) errno = -len; + return 0; + } + dir->buf_end = len; + dir->buf_pos = 0; + } + de = (void *)(dir->buf + dir->buf_pos); + dir->buf_pos += de->d_reclen; + dir->tell = de->d_off; + return de; +} + +weak_alias(readdir, readdir64); diff --git a/vendor/modernc.org/libc/musl/src/dirent/readdir_r.c b/vendor/modernc.org/libc/musl/src/dirent/readdir_r.c new file mode 100644 index 000000000..e2a818f36 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/readdir_r.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include "__dirent.h" +#include "lock.h" + +int readdir_r(DIR *restrict dir, struct dirent *restrict buf, struct dirent **restrict result) +{ + struct dirent *de; + int errno_save = errno; + int ret; + + LOCK(dir->lock); + errno = 0; + de = readdir(dir); + if ((ret = errno)) { + UNLOCK(dir->lock); + return ret; + } + errno = errno_save; + if (de) memcpy(buf, de, de->d_reclen); + else buf = NULL; + + UNLOCK(dir->lock); + *result = buf; + return 0; +} + +weak_alias(readdir_r, readdir64_r); diff --git a/vendor/modernc.org/libc/musl/src/dirent/rewinddir.c b/vendor/modernc.org/libc/musl/src/dirent/rewinddir.c new file mode 100644 index 000000000..7ddda4372 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/rewinddir.c @@ -0,0 +1,13 @@ +#include +#include +#include "__dirent.h" +#include "lock.h" + +void rewinddir(DIR *dir) +{ + LOCK(dir->lock); + lseek(dir->fd, 0, SEEK_SET); + dir->buf_pos = dir->buf_end = 0; + dir->tell = 0; + UNLOCK(dir->lock); +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/scandir.c b/vendor/modernc.org/libc/musl/src/dirent/scandir.c new file mode 100644 index 000000000..7ee195dd8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/scandir.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include +#include + +int scandir(const char *path, struct dirent ***res, + int (*sel)(const struct dirent *), + int (*cmp)(const struct dirent **, const struct dirent **)) +{ + DIR *d = opendir(path); + struct dirent *de, **names=0, **tmp; + size_t cnt=0, len=0; + int old_errno = errno; + + if (!d) return -1; + + while ((errno=0), (de = readdir(d))) { + if (sel && !sel(de)) continue; + if (cnt >= len) { + len = 2*len+1; + if (len > SIZE_MAX/sizeof *names) break; + tmp = realloc(names, len * sizeof *names); + if (!tmp) break; + names = tmp; + } + names[cnt] = malloc(de->d_reclen); + if (!names[cnt]) break; + memcpy(names[cnt++], de, de->d_reclen); + } + + closedir(d); + + if (errno) { + if (names) while (cnt-->0) free(names[cnt]); + free(names); + return -1; + } + errno = old_errno; + + if (cmp) qsort(names, cnt, sizeof *names, (int (*)(const void *, const void *))cmp); + *res = names; + return cnt; +} + +weak_alias(scandir, scandir64); diff --git a/vendor/modernc.org/libc/musl/src/dirent/seekdir.c b/vendor/modernc.org/libc/musl/src/dirent/seekdir.c new file mode 100644 index 000000000..bf6cc6ec4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/seekdir.c @@ -0,0 +1,12 @@ +#include +#include +#include "__dirent.h" +#include "lock.h" + +void seekdir(DIR *dir, long off) +{ + LOCK(dir->lock); + dir->tell = lseek(dir->fd, off, SEEK_SET); + dir->buf_pos = dir->buf_end = 0; + UNLOCK(dir->lock); +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/telldir.c b/vendor/modernc.org/libc/musl/src/dirent/telldir.c new file mode 100644 index 000000000..cf25acff6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/telldir.c @@ -0,0 +1,7 @@ +#include +#include "__dirent.h" + +long telldir(DIR *dir) +{ + return dir->tell; +} diff --git a/vendor/modernc.org/libc/musl/src/dirent/versionsort.c b/vendor/modernc.org/libc/musl/src/dirent/versionsort.c new file mode 100644 index 000000000..d4c489230 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/dirent/versionsort.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include + +int versionsort(const struct dirent **a, const struct dirent **b) +{ + return strverscmp((*a)->d_name, (*b)->d_name); +} + +#undef versionsort64 +weak_alias(versionsort, versionsort64); diff --git a/vendor/modernc.org/libc/musl/src/env/__environ.c b/vendor/modernc.org/libc/musl/src/env/__environ.c new file mode 100644 index 000000000..fe8abcf99 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/__environ.c @@ -0,0 +1,6 @@ +#include + +char **__environ = 0; +weak_alias(__environ, ___environ); +weak_alias(__environ, _environ); +weak_alias(__environ, environ); diff --git a/vendor/modernc.org/libc/musl/src/env/__init_tls.c b/vendor/modernc.org/libc/musl/src/env/__init_tls.c new file mode 100644 index 000000000..772baba32 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/__init_tls.c @@ -0,0 +1,153 @@ +#define SYSCALL_NO_TLS 1 +#include +#include +#include +#include +#include +#include "pthread_impl.h" +#include "libc.h" +#include "atomic.h" +#include "syscall.h" + +volatile int __thread_list_lock; + +int __init_tp(void *p) +{ + pthread_t td = p; + td->self = td; + int r = __set_thread_area(TP_ADJ(p)); + if (r < 0) return -1; + if (!r) libc.can_do_threads = 1; + td->detach_state = DT_JOINABLE; + td->tid = __syscall(SYS_set_tid_address, &__thread_list_lock); + td->locale = &libc.global_locale; + td->robust_list.head = &td->robust_list.head; + td->sysinfo = __sysinfo; + td->next = td->prev = td; + return 0; +} + +static struct builtin_tls { + char c; + struct pthread pt; + void *space[16]; +} builtin_tls[1]; +#define MIN_TLS_ALIGN offsetof(struct builtin_tls, pt) + +static struct tls_module main_tls; + +void *__copy_tls(unsigned char *mem) +{ + pthread_t td; + struct tls_module *p; + size_t i; + uintptr_t *dtv; + +#ifdef TLS_ABOVE_TP + dtv = (uintptr_t*)(mem + libc.tls_size) - (libc.tls_cnt + 1); + + mem += -((uintptr_t)mem + sizeof(struct pthread)) & (libc.tls_align-1); + td = (pthread_t)mem; + mem += sizeof(struct pthread); + + for (i=1, p=libc.tls_head; p; i++, p=p->next) { + dtv[i] = (uintptr_t)(mem + p->offset) + DTP_OFFSET; + memcpy(mem + p->offset, p->image, p->len); + } +#else + dtv = (uintptr_t *)mem; + + mem += libc.tls_size - sizeof(struct pthread); + mem -= (uintptr_t)mem & (libc.tls_align-1); + td = (pthread_t)mem; + + for (i=1, p=libc.tls_head; p; i++, p=p->next) { + dtv[i] = (uintptr_t)(mem - p->offset) + DTP_OFFSET; + memcpy(mem - p->offset, p->image, p->len); + } +#endif + dtv[0] = libc.tls_cnt; + td->dtv = td->dtv_copy = dtv; + return td; +} + +#if ULONG_MAX == 0xffffffff +typedef Elf32_Phdr Phdr; +#else +typedef Elf64_Phdr Phdr; +#endif + +extern weak hidden const size_t _DYNAMIC[]; + +static void static_init_tls(size_t *aux) +{ + unsigned char *p; + size_t n; + Phdr *phdr, *tls_phdr=0; + size_t base = 0; + void *mem; + + for (p=(void *)aux[AT_PHDR],n=aux[AT_PHNUM]; n; n--,p+=aux[AT_PHENT]) { + phdr = (void *)p; + if (phdr->p_type == PT_PHDR) + base = aux[AT_PHDR] - phdr->p_vaddr; + if (phdr->p_type == PT_DYNAMIC && _DYNAMIC) + base = (size_t)_DYNAMIC - phdr->p_vaddr; + if (phdr->p_type == PT_TLS) + tls_phdr = phdr; + if (phdr->p_type == PT_GNU_STACK && + phdr->p_memsz > __default_stacksize) + __default_stacksize = + phdr->p_memsz < DEFAULT_STACK_MAX ? + phdr->p_memsz : DEFAULT_STACK_MAX; + } + + if (tls_phdr) { + main_tls.image = (void *)(base + tls_phdr->p_vaddr); + main_tls.len = tls_phdr->p_filesz; + main_tls.size = tls_phdr->p_memsz; + main_tls.align = tls_phdr->p_align; + libc.tls_cnt = 1; + libc.tls_head = &main_tls; + } + + main_tls.size += (-main_tls.size - (uintptr_t)main_tls.image) + & (main_tls.align-1); +#ifdef TLS_ABOVE_TP + main_tls.offset = GAP_ABOVE_TP; + main_tls.offset += (-GAP_ABOVE_TP + (uintptr_t)main_tls.image) + & (main_tls.align-1); +#else + main_tls.offset = main_tls.size; +#endif + if (main_tls.align < MIN_TLS_ALIGN) main_tls.align = MIN_TLS_ALIGN; + + libc.tls_align = main_tls.align; + libc.tls_size = 2*sizeof(void *) + sizeof(struct pthread) +#ifdef TLS_ABOVE_TP + + main_tls.offset +#endif + + main_tls.size + main_tls.align + + MIN_TLS_ALIGN-1 & -MIN_TLS_ALIGN; + + if (libc.tls_size > sizeof builtin_tls) { +#ifndef SYS_mmap2 +#define SYS_mmap2 SYS_mmap +#endif + mem = (void *)__syscall( + SYS_mmap2, + 0, libc.tls_size, PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); + /* -4095...-1 cast to void * will crash on dereference anyway, + * so don't bloat the init code checking for error codes and + * explicitly calling a_crash(). */ + } else { + mem = builtin_tls; + } + + /* Failure to initialize thread pointer is always fatal. */ + if (__init_tp(__copy_tls(mem)) < 0) + a_crash(); +} + +weak_alias(static_init_tls, __init_tls); diff --git a/vendor/modernc.org/libc/musl/src/env/__libc_start_main.c b/vendor/modernc.org/libc/musl/src/env/__libc_start_main.c new file mode 100644 index 000000000..8fbe52627 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/__libc_start_main.c @@ -0,0 +1,96 @@ +#include +#include +#include +#include +#include +#include "syscall.h" +#include "atomic.h" +#include "libc.h" + +static void dummy(void) {} +weak_alias(dummy, _init); + +extern weak hidden void (*const __init_array_start)(void), (*const __init_array_end)(void); + +static void dummy1(void *p) {} +weak_alias(dummy1, __init_ssp); + +#define AUX_CNT 38 + +#ifdef __GNUC__ +__attribute__((__noinline__)) +#endif +void __init_libc(char **envp, char *pn) +{ + size_t i, *auxv, aux[AUX_CNT] = { 0 }; + __environ = envp; + for (i=0; envp[i]; i++); + libc.auxv = auxv = (void *)(envp+i+1); + for (i=0; auxv[i]; i+=2) if (auxv[i] +#include "pthread_impl.h" +#include "libc.h" + +void __reset_tls() +{ + pthread_t self = __pthread_self(); + struct tls_module *p; + size_t i, n = self->dtv[0]; + if (n) for (p=libc.tls_head, i=1; i<=n; i++, p=p->next) { + char *mem = (char *)(self->dtv[i] - DTP_OFFSET); + memcpy(mem, p->image, p->len); + memset(mem+p->len, 0, p->size - p->len); + } +} diff --git a/vendor/modernc.org/libc/musl/src/env/__stack_chk_fail.c b/vendor/modernc.org/libc/musl/src/env/__stack_chk_fail.c new file mode 100644 index 000000000..e32596d10 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/__stack_chk_fail.c @@ -0,0 +1,22 @@ +#include +#include +#include "pthread_impl.h" + +uintptr_t __stack_chk_guard; + +void __init_ssp(void *entropy) +{ + if (entropy) memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t)); + else __stack_chk_guard = (uintptr_t)&__stack_chk_guard * 1103515245; + + __pthread_self()->CANARY = __stack_chk_guard; +} + +void __stack_chk_fail(void) +{ + a_crash(); +} + +hidden void __stack_chk_fail_local(void); + +weak_alias(__stack_chk_fail, __stack_chk_fail_local); diff --git a/vendor/modernc.org/libc/musl/src/env/clearenv.c b/vendor/modernc.org/libc/musl/src/env/clearenv.c new file mode 100644 index 000000000..db8e8e94b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/clearenv.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include + +static void dummy(char *old, char *new) {} +weak_alias(dummy, __env_rm_add); + +int clearenv() +{ + char **e = __environ; + __environ = 0; + if (e) while (*e) __env_rm_add(*e++, 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/env/getenv.c b/vendor/modernc.org/libc/musl/src/env/getenv.c new file mode 100644 index 000000000..a90d39cf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/getenv.c @@ -0,0 +1,13 @@ +#include +#include +#include + +char *getenv(const char *name) +{ + size_t l = __strchrnul(name, '=') - name; + if (l && !name[l] && __environ) + for (char **e = __environ; *e; e++) + if (!strncmp(name, *e, l) && l[*e] == '=') + return *e + l+1; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/env/putenv.c b/vendor/modernc.org/libc/musl/src/env/putenv.c new file mode 100644 index 000000000..8bdde3668 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/putenv.c @@ -0,0 +1,48 @@ +#include +#include +#include + +static void dummy(char *old, char *new) {} +weak_alias(dummy, __env_rm_add); + +int __putenv(char *s, size_t l, char *r) +{ + size_t i=0; + if (__environ) { + //TODO for (char **e = __environ; *e; e++, i++) + char **e = __environ; + for (; *e; e++, i++) + if (!strncmp(s, *e, l+1)) { + char *tmp = *e; + *e = s; + __env_rm_add(tmp, r); + return 0; + } + } + static char **oldenv; + char **newenv; + if (__environ == oldenv) { + newenv = realloc(oldenv, sizeof *newenv * (i+2)); + if (!newenv) goto oom; + } else { + newenv = malloc(sizeof *newenv * (i+2)); + if (!newenv) goto oom; + if (i) memcpy(newenv, __environ, sizeof *newenv * i); + free(oldenv); + } + newenv[i] = s; + newenv[i+1] = 0; + __environ = oldenv = newenv; + if (r) __env_rm_add(0, r); + return 0; +oom: + free(r); + return -1; +} + +int putenv(char *s) +{ + size_t l = __strchrnul(s, '=') - s; + if (!l || !s[l]) return unsetenv(s); + return __putenv(s, l, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/env/secure_getenv.c b/vendor/modernc.org/libc/musl/src/env/secure_getenv.c new file mode 100644 index 000000000..72322f811 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/secure_getenv.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "libc.h" + +char *secure_getenv(const char *name) +{ + return libc.secure ? NULL : getenv(name); +} diff --git a/vendor/modernc.org/libc/musl/src/env/setenv.c b/vendor/modernc.org/libc/musl/src/env/setenv.c new file mode 100644 index 000000000..fc25160be --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/setenv.c @@ -0,0 +1,44 @@ +#include +#include +#include + +void __env_rm_add(char *old, char *new) +{ + static char **env_alloced; + static size_t env_alloced_n; + //TODO for (size_t i=0; i < env_alloced_n; i++) + size_t i=0; + for (; i < env_alloced_n; i++) + if (env_alloced[i] == old) { + env_alloced[i] = new; + free(old); + return; + } else if (!env_alloced[i] && new) { + env_alloced[i] = new; + new = 0; + } + if (!new) return; + char **t = realloc(env_alloced, sizeof *t * (env_alloced_n+1)); + if (!t) return; + (env_alloced = t)[env_alloced_n++] = new; +} + +int setenv(const char *var, const char *value, int overwrite) +{ + char *s; + size_t l1, l2; + + if (!var || !(l1 = __strchrnul(var, '=') - var) || var[l1]) { + errno = EINVAL; + return -1; + } + if (!overwrite && getenv(var)) return 0; + + l2 = strlen(value); + s = malloc(l1+l2+2); + if (!s) return -1; + memcpy(s, var, l1); + s[l1] = '='; + memcpy(s+l1+1, value, l2+1); + return __putenv(s, l1, s); +} diff --git a/vendor/modernc.org/libc/musl/src/env/unsetenv.c b/vendor/modernc.org/libc/musl/src/env/unsetenv.c new file mode 100644 index 000000000..6730a383a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/env/unsetenv.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +static void dummy(char *old, char *new) {} +weak_alias(dummy, __env_rm_add); + +int unsetenv(const char *name) +{ + size_t l = __strchrnul(name, '=') - name; + if (!l || name[l]) { + errno = EINVAL; + return -1; + } + if (__environ) { + char **e = __environ, **eo = e; + for (; *e; e++) + //TODO if (!strncmp(name, *e, l) && l[*e] == '=') + if (!strncmp(name, *e, l) && (*e)[l] == '=') + __env_rm_add(*e, 0); + else if (eo != e) + *eo++ = *e; + else + eo++; + if (eo != e) *eo = 0; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/errno/__errno_location.c b/vendor/modernc.org/libc/musl/src/errno/__errno_location.c new file mode 100644 index 000000000..7f9d6027a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/errno/__errno_location.c @@ -0,0 +1,9 @@ +#include +#include "pthread_impl.h" + +int *__errno_location(void) +{ + return &__pthread_self()->errno_val; +} + +weak_alias(__errno_location, ___errno_location); diff --git a/vendor/modernc.org/libc/musl/src/errno/__strerror.h b/vendor/modernc.org/libc/musl/src/errno/__strerror.h new file mode 100644 index 000000000..2d992da55 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/errno/__strerror.h @@ -0,0 +1,104 @@ +/* The first entry is a catch-all for codes not enumerated here. + * This file is included multiple times to declare and define a structure + * with these messages, and then to define a lookup table translating + * error codes to offsets of corresponding fields in the structure. */ + +E(0, "No error information") + +E(EILSEQ, "Illegal byte sequence") +E(EDOM, "Domain error") +E(ERANGE, "Result not representable") + +E(ENOTTY, "Not a tty") +E(EACCES, "Permission denied") +E(EPERM, "Operation not permitted") +E(ENOENT, "No such file or directory") +E(ESRCH, "No such process") +E(EEXIST, "File exists") + +E(EOVERFLOW, "Value too large for data type") +E(ENOSPC, "No space left on device") +E(ENOMEM, "Out of memory") + +E(EBUSY, "Resource busy") +E(EINTR, "Interrupted system call") +E(EAGAIN, "Resource temporarily unavailable") +E(ESPIPE, "Invalid seek") + +E(EXDEV, "Cross-device link") +E(EROFS, "Read-only file system") +E(ENOTEMPTY, "Directory not empty") + +E(ECONNRESET, "Connection reset by peer") +E(ETIMEDOUT, "Operation timed out") +E(ECONNREFUSED, "Connection refused") +E(EHOSTDOWN, "Host is down") +E(EHOSTUNREACH, "Host is unreachable") +E(EADDRINUSE, "Address in use") + +E(EPIPE, "Broken pipe") +E(EIO, "I/O error") +E(ENXIO, "No such device or address") +E(ENOTBLK, "Block device required") +E(ENODEV, "No such device") +E(ENOTDIR, "Not a directory") +E(EISDIR, "Is a directory") +E(ETXTBSY, "Text file busy") +E(ENOEXEC, "Exec format error") + +E(EINVAL, "Invalid argument") + +E(E2BIG, "Argument list too long") +E(ELOOP, "Symbolic link loop") +E(ENAMETOOLONG, "Filename too long") +E(ENFILE, "Too many open files in system") +E(EMFILE, "No file descriptors available") +E(EBADF, "Bad file descriptor") +E(ECHILD, "No child process") +E(EFAULT, "Bad address") +E(EFBIG, "File too large") +E(EMLINK, "Too many links") +E(ENOLCK, "No locks available") + +E(EDEADLK, "Resource deadlock would occur") +E(ENOTRECOVERABLE, "State not recoverable") +E(EOWNERDEAD, "Previous owner died") +E(ECANCELED, "Operation canceled") +E(ENOSYS, "Function not implemented") +E(ENOMSG, "No message of desired type") +E(EIDRM, "Identifier removed") +E(ENOSTR, "Device not a stream") +E(ENODATA, "No data available") +E(ETIME, "Device timeout") +E(ENOSR, "Out of streams resources") +E(ENOLINK, "Link has been severed") +E(EPROTO, "Protocol error") +E(EBADMSG, "Bad message") +E(EBADFD, "File descriptor in bad state") +E(ENOTSOCK, "Not a socket") +E(EDESTADDRREQ, "Destination address required") +E(EMSGSIZE, "Message too large") +E(EPROTOTYPE, "Protocol wrong type for socket") +E(ENOPROTOOPT, "Protocol not available") +E(EPROTONOSUPPORT,"Protocol not supported") +E(ESOCKTNOSUPPORT,"Socket type not supported") +E(ENOTSUP, "Not supported") +E(EPFNOSUPPORT, "Protocol family not supported") +E(EAFNOSUPPORT, "Address family not supported by protocol") +E(EADDRNOTAVAIL,"Address not available") +E(ENETDOWN, "Network is down") +E(ENETUNREACH, "Network unreachable") +E(ENETRESET, "Connection reset by network") +E(ECONNABORTED, "Connection aborted") +E(ENOBUFS, "No buffer space available") +E(EISCONN, "Socket is connected") +E(ENOTCONN, "Socket not connected") +E(ESHUTDOWN, "Cannot send after socket shutdown") +E(EALREADY, "Operation already in progress") +E(EINPROGRESS, "Operation in progress") +E(ESTALE, "Stale file handle") +E(EREMOTEIO, "Remote I/O error") +E(EDQUOT, "Quota exceeded") +E(ENOMEDIUM, "No medium found") +E(EMEDIUMTYPE, "Wrong medium type") +E(EMULTIHOP, "Multihop attempted") diff --git a/vendor/modernc.org/libc/musl/src/errno/strerror.c b/vendor/modernc.org/libc/musl/src/errno/strerror.c new file mode 100644 index 000000000..7f926432b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/errno/strerror.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include "locale_impl.h" + +/* mips has one error code outside of the 8-bit range due to a + * historical typo, so we just remap it. */ +#if EDQUOT==1133 +#define EDQUOT_ORIG 1133 +#undef EDQUOT +#define EDQUOT 109 +#endif + +static const struct errmsgstr_t { +#define E(n, s) char str##n[sizeof(s)]; +#include "__strerror.h" +#undef E +} errmsgstr = { +#define E(n, s) s, +#include "__strerror.h" +#undef E +}; + +static const unsigned short errmsgidx[] = { +#define E(n, s) [n] = offsetof(struct errmsgstr_t, str##n), +#include "__strerror.h" +#undef E +}; + +char *__strerror_l(int e, locale_t loc) +{ + const char *s; +#ifdef EDQUOT_ORIG + if (e==EDQUOT) e=0; + else if (e==EDQUOT_ORIG) e=EDQUOT; +#endif + if (e >= sizeof errmsgidx / sizeof *errmsgidx) e = 0; + s = (char *)&errmsgstr + errmsgidx[e]; + return (char *)LCTRANS(s, LC_MESSAGES, loc); +} + +char *strerror(int e) +{ + return __strerror_l(e, CURRENT_LOCALE); +} + +weak_alias(__strerror_l, strerror_l); diff --git a/vendor/modernc.org/libc/musl/src/exit/_Exit.c b/vendor/modernc.org/libc/musl/src/exit/_Exit.c new file mode 100644 index 000000000..7a6115c7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/_Exit.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" + +_Noreturn void _Exit(int ec) +{ + __syscall(SYS_exit_group, ec); + for (;;) __syscall(SYS_exit, ec); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/abort.c b/vendor/modernc.org/libc/musl/src/exit/abort.c new file mode 100644 index 000000000..e1980f10a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/abort.c @@ -0,0 +1,32 @@ +#include +#include +#include "syscall.h" +#include "pthread_impl.h" +#include "atomic.h" +#include "lock.h" +#include "ksigaction.h" + +hidden volatile int __abort_lock[1]; + +_Noreturn void abort(void) +{ + raise(SIGABRT); + + /* If there was a SIGABRT handler installed and it returned, or if + * SIGABRT was blocked or ignored, take an AS-safe lock to prevent + * sigaction from installing a new SIGABRT handler, uninstall any + * handler that may be present, and re-raise the signal to generate + * the default action of abnormal termination. */ + __block_all_sigs(0); + LOCK(__abort_lock); + __syscall(SYS_rt_sigaction, SIGABRT, + &(struct k_sigaction){.handler = SIG_DFL}, 0, _NSIG/8); + __syscall(SYS_tkill, __pthread_self()->tid, SIGABRT); + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, + &(long[_NSIG/(8*sizeof(long))]){1UL<<(SIGABRT-1)}, 0, _NSIG/8); + + /* Beyond this point should be unreachable. */ + a_crash(); + raise(SIGKILL); + _Exit(127); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/arm/__aeabi_atexit.c b/vendor/modernc.org/libc/musl/src/exit/arm/__aeabi_atexit.c new file mode 100644 index 000000000..ce16101dd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/arm/__aeabi_atexit.c @@ -0,0 +1,6 @@ +int __cxa_atexit(void (*func)(void *), void *arg, void *dso); + +int __aeabi_atexit (void *obj, void (*func) (void *), void *d) +{ + return __cxa_atexit (func, obj, d); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/assert.c b/vendor/modernc.org/libc/musl/src/exit/assert.c new file mode 100644 index 000000000..49b0dc3ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/assert.c @@ -0,0 +1,9 @@ +#include +#include + +_Noreturn void __assert_fail(const char *expr, const char *file, int line, const char *func) +{ + fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line); + fflush(NULL); + abort(); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/at_quick_exit.c b/vendor/modernc.org/libc/musl/src/exit/at_quick_exit.c new file mode 100644 index 000000000..d3ce6522d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/at_quick_exit.c @@ -0,0 +1,31 @@ +#include +#include "libc.h" +#include "lock.h" + +#define COUNT 32 + +static void (*funcs[COUNT])(void); +static int count; +static volatile int lock[1]; + +void __funcs_on_quick_exit() +{ + void (*func)(void); + LOCK(lock); + while (count > 0) { + func = funcs[--count]; + UNLOCK(lock); + func(); + LOCK(lock); + } +} + +int at_quick_exit(void (*func)(void)) +{ + int r = 0; + LOCK(lock); + if (count == 32) r = -1; + else funcs[count++] = func; + UNLOCK(lock); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/exit/atexit.c b/vendor/modernc.org/libc/musl/src/exit/atexit.c new file mode 100644 index 000000000..160d277ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/atexit.c @@ -0,0 +1,72 @@ +#include +#include +#include "libc.h" +#include "lock.h" + +/* Ensure that at least 32 atexit handlers can be registered without malloc */ +#define COUNT 32 + +static struct fl +{ + struct fl *next; + void (*f[COUNT])(void *); + void *a[COUNT]; +} builtin, *head; + +static int slot; +static volatile int lock[1]; + +void __funcs_on_exit() +{ + void (*func)(void *), *arg; + LOCK(lock); + for (; head; head=head->next, slot=COUNT) while(slot-->0) { + func = head->f[slot]; + arg = head->a[slot]; + UNLOCK(lock); + func(arg); + LOCK(lock); + } +} + +void __cxa_finalize(void *dso) +{ +} + +int __cxa_atexit(void (*func)(void *), void *arg, void *dso) +{ + LOCK(lock); + + /* Defer initialization of head so it can be in BSS */ + if (!head) head = &builtin; + + /* If the current function list is full, add a new one */ + if (slot==COUNT) { + struct fl *new_fl = calloc(sizeof(struct fl), 1); + if (!new_fl) { + UNLOCK(lock); + return -1; + } + new_fl->next = head; + head = new_fl; + slot = 0; + } + + /* Append function to the list. */ + head->f[slot] = func; + head->a[slot] = arg; + slot++; + + UNLOCK(lock); + return 0; +} + +static void call(void *p) +{ + ((void (*)(void))(uintptr_t)p)(); +} + +int atexit(void (*func)(void)) +{ + return __cxa_atexit(call, (void *)(uintptr_t)func, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/exit.c b/vendor/modernc.org/libc/musl/src/exit/exit.c new file mode 100644 index 000000000..a6869b375 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/exit.c @@ -0,0 +1,33 @@ +#include +#include +#include "libc.h" + +static void dummy() +{ +} + +/* atexit.c and __stdio_exit.c override these. the latter is linked + * as a consequence of linking either __toread.c or __towrite.c. */ +weak_alias(dummy, __funcs_on_exit); +weak_alias(dummy, __stdio_exit); +weak_alias(dummy, _fini); + +extern weak hidden void (*const __fini_array_start)(void), (*const __fini_array_end)(void); + +static void libc_exit_fini(void) +{ + uintptr_t a = (uintptr_t)&__fini_array_end; + for (; a>(uintptr_t)&__fini_array_start; a-=sizeof(void(*)())) + (*(void (**)())(a-sizeof(void(*)())))(); + _fini(); +} + +weak_alias(libc_exit_fini, __libc_exit_fini); + +_Noreturn void exit(int code) +{ + __funcs_on_exit(); + __libc_exit_fini(); + __stdio_exit(); + _Exit(code); +} diff --git a/vendor/modernc.org/libc/musl/src/exit/quick_exit.c b/vendor/modernc.org/libc/musl/src/exit/quick_exit.c new file mode 100644 index 000000000..ada91348b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/exit/quick_exit.c @@ -0,0 +1,11 @@ +#include +#include "libc.h" + +static void dummy() { } +weak_alias(dummy, __funcs_on_quick_exit); + +_Noreturn void quick_exit(int code) +{ + __funcs_on_quick_exit(); + _Exit(code); +} diff --git a/vendor/modernc.org/libc/musl/src/fcntl/creat.c b/vendor/modernc.org/libc/musl/src/fcntl/creat.c new file mode 100644 index 000000000..8f8aab646 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/creat.c @@ -0,0 +1,8 @@ +#include + +int creat(const char *filename, mode_t mode) +{ + return open(filename, O_CREAT|O_WRONLY|O_TRUNC, mode); +} + +weak_alias(creat, creat64); diff --git a/vendor/modernc.org/libc/musl/src/fcntl/fcntl.c b/vendor/modernc.org/libc/musl/src/fcntl/fcntl.c new file mode 100644 index 000000000..d3bff5c48 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/fcntl.c @@ -0,0 +1,48 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int fcntl(int fd, int cmd, ...) +{ + unsigned long arg; + va_list ap; + va_start(ap, cmd); + arg = va_arg(ap, unsigned long); + va_end(ap); + if (cmd == F_SETFL) arg |= O_LARGEFILE; + if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, (void *)arg); + if (cmd == F_GETOWN) { + struct f_owner_ex ex; + int ret = __syscall(SYS_fcntl, fd, F_GETOWN_EX, &ex); + if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, (void *)arg); + if (ret) return __syscall_ret(ret); + return ex.type == F_OWNER_PGRP ? -ex.pid : ex.pid; + } + if (cmd == F_DUPFD_CLOEXEC) { + int ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, arg); + if (ret != -EINVAL) { + if (ret >= 0) + __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + return __syscall_ret(ret); + } + ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, 0); + if (ret != -EINVAL) { + if (ret >= 0) __syscall(SYS_close, ret); + return __syscall_ret(-EINVAL); + } + ret = __syscall(SYS_fcntl, fd, F_DUPFD, arg); + if (ret >= 0) __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + return __syscall_ret(ret); + } + switch (cmd) { + case F_SETLK: + case F_GETLK: + case F_GETOWN_EX: + case F_SETOWN_EX: + return syscall(SYS_fcntl, fd, cmd, (void *)arg); + default: + return syscall(SYS_fcntl, fd, cmd, arg); + } +} diff --git a/vendor/modernc.org/libc/musl/src/fcntl/open.c b/vendor/modernc.org/libc/musl/src/fcntl/open.c new file mode 100644 index 000000000..1d817a2d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/open.c @@ -0,0 +1,23 @@ +#include +#include +#include "syscall.h" + +int open(const char *filename, int flags, ...) +{ + mode_t mode = 0; + + if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + va_end(ap); + } + + int fd = __sys_open_cp(filename, flags, mode); + if (fd>=0 && (flags & O_CLOEXEC)) + __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC); + + return __syscall_ret(fd); +} + +weak_alias(open, open64); diff --git a/vendor/modernc.org/libc/musl/src/fcntl/openat.c b/vendor/modernc.org/libc/musl/src/fcntl/openat.c new file mode 100644 index 000000000..ad165ec32 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/openat.c @@ -0,0 +1,19 @@ +#include +#include +#include "syscall.h" + +int openat(int fd, const char *filename, int flags, ...) +{ + mode_t mode = 0; + + if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + va_end(ap); + } + + return syscall_cp(SYS_openat, fd, filename, flags|O_LARGEFILE, mode); +} + +weak_alias(openat, openat64); diff --git a/vendor/modernc.org/libc/musl/src/fcntl/posix_fadvise.c b/vendor/modernc.org/libc/musl/src/fcntl/posix_fadvise.c new file mode 100644 index 000000000..75b8e1aed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/posix_fadvise.c @@ -0,0 +1,18 @@ +#include +#include "syscall.h" + +int posix_fadvise(int fd, off_t base, off_t len, int advice) +{ +#if defined(SYSCALL_FADVISE_6_ARG) + /* Some archs, at least arm and powerpc, have the syscall + * arguments reordered to avoid needing 7 argument registers + * due to 64-bit argument alignment. */ + return -__syscall(SYS_fadvise, fd, advice, + __SYSCALL_LL_E(base), __SYSCALL_LL_E(len)); +#else + return -__syscall(SYS_fadvise, fd, __SYSCALL_LL_O(base), + __SYSCALL_LL_E(len), advice); +#endif +} + +weak_alias(posix_fadvise, posix_fadvise64); diff --git a/vendor/modernc.org/libc/musl/src/fcntl/posix_fallocate.c b/vendor/modernc.org/libc/musl/src/fcntl/posix_fallocate.c new file mode 100644 index 000000000..c57a24aef --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fcntl/posix_fallocate.c @@ -0,0 +1,10 @@ +#include +#include "syscall.h" + +int posix_fallocate(int fd, off_t base, off_t len) +{ + return -__syscall(SYS_fallocate, fd, 0, __SYSCALL_LL_E(base), + __SYSCALL_LL_E(len)); +} + +weak_alias(posix_fallocate, posix_fallocate64); diff --git a/vendor/modernc.org/libc/musl/src/fenv/__flt_rounds.c b/vendor/modernc.org/libc/musl/src/fenv/__flt_rounds.c new file mode 100644 index 000000000..ec0b3689e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/__flt_rounds.c @@ -0,0 +1,19 @@ +#include +#include + +int __flt_rounds() +{ + switch (fegetround()) { +#ifdef FE_TOWARDZERO + case FE_TOWARDZERO: return 0; +#endif + case FE_TONEAREST: return 1; +#ifdef FE_UPWARD + case FE_UPWARD: return 2; +#endif +#ifdef FE_DOWNWARD + case FE_DOWNWARD: return 3; +#endif + } + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/arm/fenv.c b/vendor/modernc.org/libc/musl/src/fenv/arm/fenv.c new file mode 100644 index 000000000..ad295f58c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/arm/fenv.c @@ -0,0 +1,3 @@ +#if !__ARM_PCS_VFP +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/fegetexceptflag.c b/vendor/modernc.org/libc/musl/src/fenv/fegetexceptflag.c new file mode 100644 index 000000000..bab0b44fb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/fegetexceptflag.c @@ -0,0 +1,7 @@ +#include + +int fegetexceptflag(fexcept_t *fp, int mask) +{ + *fp = fetestexcept(mask); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/feholdexcept.c b/vendor/modernc.org/libc/musl/src/fenv/feholdexcept.c new file mode 100644 index 000000000..73ff1fad3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/feholdexcept.c @@ -0,0 +1,8 @@ +#include + +int feholdexcept(fenv_t *envp) +{ + fegetenv(envp); + feclearexcept(FE_ALL_EXCEPT); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/fenv.c b/vendor/modernc.org/libc/musl/src/fenv/fenv.c new file mode 100644 index 000000000..5588dad95 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/fenv.c @@ -0,0 +1,38 @@ +#include + +/* Dummy functions for archs lacking fenv implementation */ + +int feclearexcept(int mask) +{ + return 0; +} + +int feraiseexcept(int mask) +{ + return 0; +} + +int fetestexcept(int mask) +{ + return 0; +} + +int fegetround(void) +{ + return FE_TONEAREST; +} + +int __fesetround(int r) +{ + return 0; +} + +int fegetenv(fenv_t *envp) +{ + return 0; +} + +int fesetenv(const fenv_t *envp) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/fesetexceptflag.c b/vendor/modernc.org/libc/musl/src/fenv/fesetexceptflag.c new file mode 100644 index 000000000..af5f102d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/fesetexceptflag.c @@ -0,0 +1,8 @@ +#include + +int fesetexceptflag(const fexcept_t *fp, int mask) +{ + feclearexcept(~*fp & mask); + feraiseexcept(*fp & mask); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/fesetround.c b/vendor/modernc.org/libc/musl/src/fenv/fesetround.c new file mode 100644 index 000000000..4e2f164dd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/fesetround.c @@ -0,0 +1,23 @@ +#include +#include + +/* __fesetround wrapper for arch independent argument check */ + +hidden int __fesetround(int); + +int fesetround(int r) +{ + if (r != FE_TONEAREST +#ifdef FE_DOWNWARD + && r != FE_DOWNWARD +#endif +#ifdef FE_UPWARD + && r != FE_UPWARD +#endif +#ifdef FE_TOWARDZERO + && r != FE_TOWARDZERO +#endif + ) + return -1; + return __fesetround(r); +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/feupdateenv.c b/vendor/modernc.org/libc/musl/src/fenv/feupdateenv.c new file mode 100644 index 000000000..50cef8e5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/feupdateenv.c @@ -0,0 +1,9 @@ +#include + +int feupdateenv(const fenv_t *envp) +{ + int ex = fetestexcept(FE_ALL_EXCEPT); + fesetenv(envp); + feraiseexcept(ex); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/m68k/fenv.c b/vendor/modernc.org/libc/musl/src/fenv/m68k/fenv.c new file mode 100644 index 000000000..d0658e678 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/m68k/fenv.c @@ -0,0 +1,85 @@ +#include +#include + +#if __HAVE_68881__ || __mcffpu__ + +static unsigned getsr() +{ + unsigned v; + __asm__ __volatile__ ("fmove.l %%fpsr,%0" : "=dm"(v)); + return v; +} + +static void setsr(unsigned v) +{ + __asm__ __volatile__ ("fmove.l %0,%%fpsr" : : "dm"(v)); +} + +static unsigned getcr() +{ + unsigned v; + __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=dm"(v)); + return v; +} + +static void setcr(unsigned v) +{ + __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "dm"(v)); +} + +int feclearexcept(int mask) +{ + if (mask & ~FE_ALL_EXCEPT) return -1; + setsr(getsr() & ~mask); + return 0; +} + +int feraiseexcept(int mask) +{ + if (mask & ~FE_ALL_EXCEPT) return -1; + setsr(getsr() | mask); + return 0; +} + +int fetestexcept(int mask) +{ + return getsr() & mask; +} + +int fegetround(void) +{ + return getcr() & FE_UPWARD; +} + +hidden int __fesetround(int r) +{ + setcr((getcr() & ~FE_UPWARD) | r); + return 0; +} + +int fegetenv(fenv_t *envp) +{ + envp->__control_register = getcr(); + envp->__status_register = getsr(); + __asm__ __volatile__ ("fmove.l %%fpiar,%0" + : "=dm"(envp->__instruction_address)); + return 0; +} + +int fesetenv(const fenv_t *envp) +{ + static const fenv_t default_env = { 0 }; + if (envp == FE_DFL_ENV) + envp = &default_env; + setcr(envp->__control_register); + setsr(envp->__status_register); + __asm__ __volatile__ ("fmove.l %0,%%fpiar" + : : "dm"(envp->__instruction_address)); + return 0; +} + +#else + +#include "../fenv.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/mips/fenv-sf.c b/vendor/modernc.org/libc/musl/src/fenv/mips/fenv-sf.c new file mode 100644 index 000000000..4aa3dbf12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/mips/fenv-sf.c @@ -0,0 +1,3 @@ +#ifdef __mips_soft_float +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/mips64/fenv-sf.c b/vendor/modernc.org/libc/musl/src/fenv/mips64/fenv-sf.c new file mode 100644 index 000000000..4aa3dbf12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/mips64/fenv-sf.c @@ -0,0 +1,3 @@ +#ifdef __mips_soft_float +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/mipsn32/fenv-sf.c b/vendor/modernc.org/libc/musl/src/fenv/mipsn32/fenv-sf.c new file mode 100644 index 000000000..4aa3dbf12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/mipsn32/fenv-sf.c @@ -0,0 +1,3 @@ +#ifdef __mips_soft_float +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/powerpc/fenv-sf.c b/vendor/modernc.org/libc/musl/src/fenv/powerpc/fenv-sf.c new file mode 100644 index 000000000..85bef40f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/powerpc/fenv-sf.c @@ -0,0 +1,3 @@ +#ifdef _SOFT_FLOAT +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/powerpc64/fenv.c b/vendor/modernc.org/libc/musl/src/fenv/powerpc64/fenv.c new file mode 100644 index 000000000..90dabdc8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/powerpc64/fenv.c @@ -0,0 +1,69 @@ +#define _GNU_SOURCE +#include +#include + +static inline double get_fpscr_f(void) +{ + double d; + __asm__ __volatile__("mffs %0" : "=d"(d)); + return d; +} + +static inline long get_fpscr(void) +{ + return (union {double f; long i;}) {get_fpscr_f()}.i; +} + +static inline void set_fpscr_f(double fpscr) +{ + __asm__ __volatile__("mtfsf 255, %0" : : "d"(fpscr)); +} + +static void set_fpscr(long fpscr) +{ + set_fpscr_f((union {long i; double f;}) {fpscr}.f); +} + +int feclearexcept(int mask) +{ + mask &= FE_ALL_EXCEPT; + if (mask & FE_INVALID) mask |= FE_ALL_INVALID; + set_fpscr(get_fpscr() & ~mask); + return 0; +} + +int feraiseexcept(int mask) +{ + mask &= FE_ALL_EXCEPT; + if (mask & FE_INVALID) mask |= FE_INVALID_SOFTWARE; + set_fpscr(get_fpscr() | mask); + return 0; +} + +int fetestexcept(int mask) +{ + return get_fpscr() & mask & FE_ALL_EXCEPT; +} + +int fegetround(void) +{ + return get_fpscr() & 3; +} + +hidden int __fesetround(int r) +{ + set_fpscr(get_fpscr() & ~3L | r); + return 0; +} + +int fegetenv(fenv_t *envp) +{ + *envp = get_fpscr_f(); + return 0; +} + +int fesetenv(const fenv_t *envp) +{ + set_fpscr_f(envp != FE_DFL_ENV ? *envp : 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/riscv64/fenv-sf.c b/vendor/modernc.org/libc/musl/src/fenv/riscv64/fenv-sf.c new file mode 100644 index 000000000..ecd3cb5ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/riscv64/fenv-sf.c @@ -0,0 +1,3 @@ +#ifndef __riscv_flen +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/fenv/s390x/fenv.c b/vendor/modernc.org/libc/musl/src/fenv/s390x/fenv.c new file mode 100644 index 000000000..fd4e60c5e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/s390x/fenv.c @@ -0,0 +1,56 @@ +#include +#include + +static inline unsigned get_fpc(void) +{ + unsigned fpc; + __asm__ __volatile__("efpc %0" : "=r"(fpc)); + return fpc; +} + +static inline void set_fpc(unsigned fpc) +{ + __asm__ __volatile__("sfpc %0" :: "r"(fpc)); +} + +int feclearexcept(int mask) +{ + mask &= FE_ALL_EXCEPT; + set_fpc(get_fpc() & ~mask); + return 0; +} + +int feraiseexcept(int mask) +{ + mask &= FE_ALL_EXCEPT; + set_fpc(get_fpc() | mask); + return 0; +} + +int fetestexcept(int mask) +{ + return get_fpc() & mask & FE_ALL_EXCEPT; +} + +int fegetround(void) +{ + return get_fpc() & 3; +} + +hidden int __fesetround(int r) +{ + set_fpc(get_fpc() & ~3L | r); + return 0; +} + +int fegetenv(fenv_t *envp) +{ + *envp = get_fpc(); + return 0; +} + +int fesetenv(const fenv_t *envp) +{ + set_fpc(envp != FE_DFL_ENV ? *envp : 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/fenv/sh/fenv-nofpu.c b/vendor/modernc.org/libc/musl/src/fenv/sh/fenv-nofpu.c new file mode 100644 index 000000000..b2495a658 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/fenv/sh/fenv-nofpu.c @@ -0,0 +1,3 @@ +#if !__SH_FPU_ANY__ && !__SH4__ +#include "../fenv.c" +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/arpa/inet.h b/vendor/modernc.org/libc/musl/src/include/arpa/inet.h new file mode 100644 index 000000000..1e6debf49 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/arpa/inet.h @@ -0,0 +1,8 @@ +#ifndef ARPA_INET_H +#define ARPA_INET_H + +#include "../../../include/arpa/inet.h" + +hidden int __inet_aton(const char *, struct in_addr *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/crypt.h b/vendor/modernc.org/libc/musl/src/include/crypt.h new file mode 100644 index 000000000..f6c630953 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/crypt.h @@ -0,0 +1,16 @@ +#ifndef CRYPT_H +#define CRYPT_H + +#include "../../include/crypt.h" + +#include + +hidden char *__crypt_r(const char *, const char *, struct crypt_data *); + +hidden char *__crypt_des(const char *, const char *, char *); +hidden char *__crypt_md5(const char *, const char *, char *); +hidden char *__crypt_blowfish(const char *, const char *, char *); +hidden char *__crypt_sha256(const char *, const char *, char *); +hidden char *__crypt_sha512(const char *, const char *, char *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/errno.h b/vendor/modernc.org/libc/musl/src/include/errno.h new file mode 100644 index 000000000..8ec493777 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/errno.h @@ -0,0 +1,14 @@ +#ifndef ERRNO_H +#define ERRNO_H + +#include "../../include/errno.h" + +#ifdef __GNUC__ +__attribute__((const)) +#endif +hidden int *___errno_location(void); + +#undef errno +#define errno (*___errno_location()) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/features.h b/vendor/modernc.org/libc/musl/src/include/features.h new file mode 100644 index 000000000..f17bd1516 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/features.h @@ -0,0 +1,11 @@ +#ifndef FEATURES_H +#define FEATURES_H + +#include "../../include/features.h" + +#define weak __attribute__((__weak__)) +#define hidden __attribute__((__visibility__("hidden"))) +#define weak_alias(old, new) \ + extern __typeof(old) new __attribute__((__weak__, __alias__(#old))) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/langinfo.h b/vendor/modernc.org/libc/musl/src/include/langinfo.h new file mode 100644 index 000000000..ab32b880f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/langinfo.h @@ -0,0 +1,8 @@ +#ifndef LANGINFO_H +#define LANGINFO_H + +#include "../../include/langinfo.h" + +char *__nl_langinfo_l(nl_item, locale_t); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/pthread.h b/vendor/modernc.org/libc/musl/src/include/pthread.h new file mode 100644 index 000000000..7167d3e11 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/pthread.h @@ -0,0 +1,29 @@ +#ifndef PTHREAD_H +#define PTHREAD_H + +#include "../../include/pthread.h" + +hidden int __pthread_once(pthread_once_t *, void (*)(void)); +hidden void __pthread_testcancel(void); +hidden int __pthread_setcancelstate(int, int *); +hidden int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict); +hidden _Noreturn void __pthread_exit(void *); +hidden int __pthread_join(pthread_t, void **); +hidden int __pthread_mutex_lock(pthread_mutex_t *); +hidden int __pthread_mutex_trylock(pthread_mutex_t *); +hidden int __pthread_mutex_trylock_owner(pthread_mutex_t *); +hidden int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict); +hidden int __pthread_mutex_unlock(pthread_mutex_t *); +hidden int __private_cond_signal(pthread_cond_t *, int); +hidden int __pthread_cond_timedwait(pthread_cond_t *restrict, pthread_mutex_t *restrict, const struct timespec *restrict); +hidden int __pthread_key_create(pthread_key_t *, void (*)(void *)); +hidden int __pthread_key_delete(pthread_key_t); +hidden int __pthread_rwlock_rdlock(pthread_rwlock_t *); +hidden int __pthread_rwlock_tryrdlock(pthread_rwlock_t *); +hidden int __pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); +hidden int __pthread_rwlock_wrlock(pthread_rwlock_t *); +hidden int __pthread_rwlock_trywrlock(pthread_rwlock_t *); +hidden int __pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); +hidden int __pthread_rwlock_unlock(pthread_rwlock_t *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/resolv.h b/vendor/modernc.org/libc/musl/src/include/resolv.h new file mode 100644 index 000000000..945e89e63 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/resolv.h @@ -0,0 +1,12 @@ +#ifndef RESOLV_H +#define RESOLV_H + +#include "../../include/resolv.h" + +hidden int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int); + +hidden int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int); +hidden int __res_send(const unsigned char *, int, unsigned char *, int); +hidden int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/signal.h b/vendor/modernc.org/libc/musl/src/include/signal.h new file mode 100644 index 000000000..bb5667841 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/signal.h @@ -0,0 +1,14 @@ +#ifndef SIGNAL_H +#define SIGNAL_H + +#include "../../include/signal.h" + +hidden int __sigaction(int, const struct sigaction *, struct sigaction *); + +hidden void __block_all_sigs(void *); +hidden void __block_app_sigs(void *); +hidden void __restore_sigs(void *); + +hidden void __get_handler_set(sigset_t *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/stdio.h b/vendor/modernc.org/libc/musl/src/include/stdio.h new file mode 100644 index 000000000..fae3755b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/stdio.h @@ -0,0 +1,20 @@ +#ifndef STDIO_H +#define STDIO_H + +#define __DEFINED_struct__IO_FILE + +#include "../../include/stdio.h" + +#undef stdin +#undef stdout +#undef stderr + +extern hidden FILE __stdin_FILE; +extern hidden FILE __stdout_FILE; +extern hidden FILE __stderr_FILE; + +#define stdin (&__stdin_FILE) +#define stdout (&__stdout_FILE) +#define stderr (&__stderr_FILE) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/stdlib.h b/vendor/modernc.org/libc/musl/src/include/stdlib.h new file mode 100644 index 000000000..d38a5417f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/stdlib.h @@ -0,0 +1,12 @@ +#ifndef STDLIB_H +#define STDLIB_H + +#include "../../include/stdlib.h" + +hidden int __putenv(char *, size_t, char *); +hidden void __env_rm_add(char *, char *); +hidden int __mkostemps(char *, int, int); +hidden int __ptsname_r(int, char *, size_t); +hidden char *__randname(char *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/string.h b/vendor/modernc.org/libc/musl/src/include/string.h new file mode 100644 index 000000000..2133b5c1e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/string.h @@ -0,0 +1,11 @@ +#ifndef STRING_H +#define STRING_H + +#include "../../include/string.h" + +hidden void *__memrchr(const void *, int, size_t); +hidden char *__stpcpy(char *, const char *); +hidden char *__stpncpy(char *, const char *, size_t); +hidden char *__strchrnul(const char *, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/sys/auxv.h b/vendor/modernc.org/libc/musl/src/include/sys/auxv.h new file mode 100644 index 000000000..9358a4a5d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/sys/auxv.h @@ -0,0 +1,10 @@ +#ifndef SYS_AUXV_H +#define SYS_AUXV_H + +#include "../../../include/sys/auxv.h" + +#include + +hidden unsigned long __getauxval(unsigned long); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/sys/membarrier.h b/vendor/modernc.org/libc/musl/src/include/sys/membarrier.h new file mode 100644 index 000000000..3654491c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/sys/membarrier.h @@ -0,0 +1,9 @@ +#ifndef SYS_MEMBARRIER_H +#define SYS_MEMBARRIER_H + +#include "../../../include/sys/membarrier.h" +#include + +hidden int __membarrier(int, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/sys/mman.h b/vendor/modernc.org/libc/musl/src/include/sys/mman.h new file mode 100644 index 000000000..57c5bd3d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/sys/mman.h @@ -0,0 +1,20 @@ +#ifndef SYS_MMAN_H +#define SYS_MMAN_H + +#include "../../../include/sys/mman.h" + +hidden void __vm_wait(void); +hidden void __vm_lock(void); +hidden void __vm_unlock(void); + +hidden void *__mmap(void *, size_t, int, int, int, off_t); +hidden int __munmap(void *, size_t); +hidden void *__mremap(void *, size_t, size_t, int, ...); +hidden int __madvise(void *, size_t, int); +hidden int __mprotect(void *, size_t, int); + +hidden const unsigned char *__map_file(const char *, size_t *); + +hidden char *__shm_mapname(const char *, char *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/sys/sysinfo.h b/vendor/modernc.org/libc/musl/src/include/sys/sysinfo.h new file mode 100644 index 000000000..10be8a48f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/sys/sysinfo.h @@ -0,0 +1,9 @@ +#ifndef SYS_SYSINFO_H +#define SYS_SYSINFO_H + +#include "../../../include/sys/sysinfo.h" +#include + +hidden int __lsysinfo(struct sysinfo *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/sys/time.h b/vendor/modernc.org/libc/musl/src/include/sys/time.h new file mode 100644 index 000000000..fb9622e51 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/sys/time.h @@ -0,0 +1,8 @@ +#ifndef SYS_TIME_H +#define SYS_TIME_H + +#include "../../../include/sys/time.h" + +hidden int __futimesat(int, const char *, const struct timeval [2]); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/time.h b/vendor/modernc.org/libc/musl/src/include/time.h new file mode 100644 index 000000000..cbabde476 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/time.h @@ -0,0 +1,15 @@ +#ifndef TIME_H +#define TIME_H + +#include "../../include/time.h" + +hidden int __clock_gettime(clockid_t, struct timespec *); +hidden int __clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *); + +hidden char *__asctime_r(const struct tm *, char *); +hidden struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict); +hidden struct tm *__localtime_r(const time_t *restrict, struct tm *restrict); + +hidden size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/unistd.h b/vendor/modernc.org/libc/musl/src/include/unistd.h new file mode 100644 index 000000000..1b4605c7c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/unistd.h @@ -0,0 +1,14 @@ +#ifndef UNISTD_H +#define UNISTD_H + +#include "../../include/unistd.h" + +extern char **__environ; + +hidden int __dup3(int, int, int); +hidden int __mkostemps(char *, int, int); +hidden int __execvpe(const char *, char *const *, char *const *); +hidden int __aio_close(int); +hidden off_t __lseek(int, off_t, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/include/wchar.h b/vendor/modernc.org/libc/musl/src/include/wchar.h new file mode 100644 index 000000000..79f5d0e71 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/include/wchar.h @@ -0,0 +1,9 @@ +#ifndef WCHAR_H +#define WCHAR_H + +#define __DEFINED_struct__IO_FILE + +#include "../../include/wchar.h" + +#endif + diff --git a/vendor/modernc.org/libc/musl/src/internal/atomic.h b/vendor/modernc.org/libc/musl/src/internal/atomic.h new file mode 100644 index 000000000..96c1552d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/atomic.h @@ -0,0 +1,333 @@ +#ifndef _ATOMIC_H +#define _ATOMIC_H + +#include + +#include "atomic_arch.h" + +#ifdef a_ll + +#ifndef a_pre_llsc +#define a_pre_llsc() +#endif + +#ifndef a_post_llsc +#define a_post_llsc() +#endif + +#ifndef a_cas +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ + int old; + a_pre_llsc(); + do old = a_ll(p); + while (old==t && !a_sc(p, s)); + a_post_llsc(); + return old; +} +#endif + +#ifndef a_swap +#define a_swap a_swap +static inline int a_swap(volatile int *p, int v) +{ + int old; + a_pre_llsc(); + do old = a_ll(p); + while (!a_sc(p, v)); + a_post_llsc(); + return old; +} +#endif + +#ifndef a_fetch_add +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *p, int v) +{ + int old; + a_pre_llsc(); + do old = a_ll(p); + while (!a_sc(p, (unsigned)old + v)); + a_post_llsc(); + return old; +} +#endif + +#ifndef a_fetch_and +#define a_fetch_and a_fetch_and +static inline int a_fetch_and(volatile int *p, int v) +{ + int old; + a_pre_llsc(); + do old = a_ll(p); + while (!a_sc(p, old & v)); + a_post_llsc(); + return old; +} +#endif + +#ifndef a_fetch_or +#define a_fetch_or a_fetch_or +static inline int a_fetch_or(volatile int *p, int v) +{ + int old; + a_pre_llsc(); + do old = a_ll(p); + while (!a_sc(p, old | v)); + a_post_llsc(); + return old; +} +#endif + +#endif + +#ifdef a_ll_p + +#ifndef a_cas_p +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + void *old; + a_pre_llsc(); + do old = a_ll_p(p); + while (old==t && !a_sc_p(p, s)); + a_post_llsc(); + return old; +} +#endif + +#endif + +#ifndef a_cas +#error missing definition of a_cas +#endif + +#ifndef a_swap +#define a_swap a_swap +static inline int a_swap(volatile int *p, int v) +{ + int old; + do old = *p; + while (a_cas(p, old, v) != old); + return old; +} +#endif + +#ifndef a_fetch_add +#define a_fetch_add a_fetch_add +static inline int a_fetch_add(volatile int *p, int v) +{ + int old; + do old = *p; + while (a_cas(p, old, (unsigned)old+v) != old); + return old; +} +#endif + +#ifndef a_fetch_and +#define a_fetch_and a_fetch_and +static inline int a_fetch_and(volatile int *p, int v) +{ + int old; + do old = *p; + while (a_cas(p, old, old&v) != old); + return old; +} +#endif +#ifndef a_fetch_or +#define a_fetch_or a_fetch_or +static inline int a_fetch_or(volatile int *p, int v) +{ + int old; + do old = *p; + while (a_cas(p, old, old|v) != old); + return old; +} +#endif + +#ifndef a_and +#define a_and a_and +static inline void a_and(volatile int *p, int v) +{ + a_fetch_and(p, v); +} +#endif + +#ifndef a_or +#define a_or a_or +static inline void a_or(volatile int *p, int v) +{ + a_fetch_or(p, v); +} +#endif + +#ifndef a_inc +#define a_inc a_inc +static inline void a_inc(volatile int *p) +{ + a_fetch_add(p, 1); +} +#endif + +#ifndef a_dec +#define a_dec a_dec +static inline void a_dec(volatile int *p) +{ + a_fetch_add(p, -1); +} +#endif + +#ifndef a_store +#define a_store a_store +static inline void a_store(volatile int *p, int v) +{ +#ifdef a_barrier + a_barrier(); + *p = v; + a_barrier(); +#else + a_swap(p, v); +#endif +} +#endif + +#ifndef a_barrier +#define a_barrier a_barrier +static void a_barrier() +{ + volatile int tmp = 0; + a_cas(&tmp, 0, 0); +} +#endif + +#ifndef a_spin +#define a_spin a_barrier +#endif + +#ifndef a_and_64 +#define a_and_64 a_and_64 +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + union { uint64_t v; uint32_t r[2]; } u = { v }; + if (u.r[0]+1) a_and((int *)p, u.r[0]); + if (u.r[1]+1) a_and((int *)p+1, u.r[1]); +} +#endif + +#ifndef a_or_64 +#define a_or_64 a_or_64 +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + union { uint64_t v; uint32_t r[2]; } u = { v }; + if (u.r[0]) a_or((int *)p, u.r[0]); + if (u.r[1]) a_or((int *)p+1, u.r[1]); +} +#endif + +#ifndef a_cas_p +typedef char a_cas_p_undefined_but_pointer_not_32bit[-sizeof(char) == 0xffffffff ? 1 : -1]; +#define a_cas_p a_cas_p +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + return (void *)a_cas((volatile int *)p, (int)t, (int)s); +} +#endif + +#ifndef a_or_l +#define a_or_l a_or_l +static inline void a_or_l(volatile void *p, long v) +{ + if (sizeof(long) == sizeof(int)) a_or(p, v); + else a_or_64(p, v); +} +#endif + +#ifndef a_crash +#define a_crash a_crash +static inline void a_crash() +{ + *(volatile char *)0=0; +} +#endif + +#ifndef a_ctz_32 +#define a_ctz_32 a_ctz_32 +static inline int a_ctz_32(uint32_t x) +{ +#ifdef a_clz_32 + return 31-a_clz_32(x&-x); +#else + static const char debruijn32[32] = { + 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, + 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 + }; + return debruijn32[(x&-x)*0x076be629 >> 27]; +#endif +} +#endif + +#ifndef a_ctz_64 +#define a_ctz_64 a_ctz_64 +static inline int a_ctz_64(uint64_t x) +{ + static const char debruijn64[64] = { + 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, + 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11, + 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10, + 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12 + }; + if (sizeof(long) < 8) { + uint32_t y = x; + if (!y) { + y = x>>32; + return 32 + a_ctz_32(y); + } + return a_ctz_32(y); + } + return debruijn64[(x&-x)*0x022fdd63cc95386dull >> 58]; +} +#endif + +static inline int a_ctz_l(unsigned long x) +{ + return (sizeof(long) < 8) ? a_ctz_32(x) : a_ctz_64(x); +} + +#ifndef a_clz_64 +#define a_clz_64 a_clz_64 +static inline int a_clz_64(uint64_t x) +{ +#ifdef a_clz_32 + if (x>>32) + return a_clz_32(x>>32); + return a_clz_32(x) + 32; +#else + uint32_t y; + int r; + if (x>>32) y=x>>32, r=0; else y=x, r=32; + if (y>>16) y>>=16; else r |= 16; + if (y>>8) y>>=8; else r |= 8; + if (y>>4) y>>=4; else r |= 4; + if (y>>2) y>>=2; else r |= 2; + return r | !(y>>1); +#endif +} +#endif + +#ifndef a_clz_32 +#define a_clz_32 a_clz_32 +static inline int a_clz_32(uint32_t x) +{ + x >>= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + x++; + return 31-a_ctz_32(x); +} +#endif + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/complex_impl.h b/vendor/modernc.org/libc/musl/src/internal/complex_impl.h new file mode 100644 index 000000000..51fb298ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/complex_impl.h @@ -0,0 +1,22 @@ +#ifndef _COMPLEX_IMPL_H +#define _COMPLEX_IMPL_H + +#include +#include "libm.h" + +#undef __CMPLX +#undef CMPLX +#undef CMPLXF +#undef CMPLXL + +#define __CMPLX(x, y, t) \ + ((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z) + +#define CMPLX(x, y) __CMPLX(x, y, double) +#define CMPLXF(x, y) __CMPLX(x, y, float) +#define CMPLXL(x, y) __CMPLX(x, y, long double) + +hidden double complex __ldexp_cexp(double complex,int); +hidden float complex __ldexp_cexpf(float complex,int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/defsysinfo.c b/vendor/modernc.org/libc/musl/src/internal/defsysinfo.c new file mode 100644 index 000000000..6d4117dbf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/defsysinfo.c @@ -0,0 +1,3 @@ +#include "libc.h" + +size_t __sysinfo; diff --git a/vendor/modernc.org/libc/musl/src/internal/dynlink.h b/vendor/modernc.org/libc/musl/src/internal/dynlink.h new file mode 100644 index 000000000..51c0639ff --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/dynlink.h @@ -0,0 +1,113 @@ +#ifndef _INTERNAL_RELOC_H +#define _INTERNAL_RELOC_H + +#include +#include +#include +#include +#include + +#if UINTPTR_MAX == 0xffffffff +typedef Elf32_Ehdr Ehdr; +typedef Elf32_Phdr Phdr; +typedef Elf32_Sym Sym; +#define R_TYPE(x) ((x)&255) +#define R_SYM(x) ((x)>>8) +#define R_INFO ELF32_R_INFO +#else +typedef Elf64_Ehdr Ehdr; +typedef Elf64_Phdr Phdr; +typedef Elf64_Sym Sym; +#define R_TYPE(x) ((x)&0x7fffffff) +#define R_SYM(x) ((x)>>32) +#define R_INFO ELF64_R_INFO +#endif + +/* These enum constants provide unmatchable default values for + * any relocation type the arch does not use. */ +enum { + REL_NONE = 0, + REL_SYMBOLIC = -100, + REL_USYMBOLIC, + REL_GOT, + REL_PLT, + REL_RELATIVE, + REL_OFFSET, + REL_OFFSET32, + REL_COPY, + REL_SYM_OR_REL, + REL_DTPMOD, + REL_DTPOFF, + REL_TPOFF, + REL_TPOFF_NEG, + REL_TLSDESC, + REL_FUNCDESC, + REL_FUNCDESC_VAL, +}; + +struct fdpic_loadseg { + uintptr_t addr, p_vaddr, p_memsz; +}; + +struct fdpic_loadmap { + unsigned short version, nsegs; + struct fdpic_loadseg segs[]; +}; + +struct fdpic_dummy_loadmap { + unsigned short version, nsegs; + struct fdpic_loadseg segs[1]; +}; + +#include "reloc.h" + +#ifndef FDPIC_CONSTDISP_FLAG +#define FDPIC_CONSTDISP_FLAG 0 +#endif + +#ifndef DL_FDPIC +#define DL_FDPIC 0 +#endif + +#ifndef DL_NOMMU_SUPPORT +#define DL_NOMMU_SUPPORT 0 +#endif + +#if !DL_FDPIC +#define IS_RELATIVE(x,s) ( \ + (R_TYPE(x) == REL_RELATIVE) || \ + (R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)) ) +#else +#define IS_RELATIVE(x,s) ( ( \ + (R_TYPE(x) == REL_FUNCDESC_VAL) || \ + (R_TYPE(x) == REL_SYMBOLIC) ) \ + && (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION) ) +#endif + +#ifndef NEED_MIPS_GOT_RELOCS +#define NEED_MIPS_GOT_RELOCS 0 +#endif + +#ifndef DT_DEBUG_INDIRECT +#define DT_DEBUG_INDIRECT 0 +#endif + +#define AUX_CNT 32 +#define DYN_CNT 32 + +typedef void (*stage2_func)(unsigned char *, size_t *); + +hidden void *__dlsym(void *restrict, const char *restrict, void *restrict); + +hidden void __dl_seterr(const char *, ...); +hidden int __dl_invalid_handle(void *); +hidden void __dl_vseterr(const char *, va_list); + +hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic(); + +hidden extern int __malloc_replaced; +hidden extern int __aligned_alloc_replaced; +hidden void __malloc_donate(char *, char *); +hidden int __malloc_allzerop(void *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/fdpic_crt.h b/vendor/modernc.org/libc/musl/src/internal/fdpic_crt.h new file mode 100644 index 000000000..7e9632bb7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/fdpic_crt.h @@ -0,0 +1,28 @@ +#include +#include + +hidden void *__fdpic_fixup(void *map, uintptr_t *a, uintptr_t *z) +{ + /* If map is a null pointer, the program was loaded by a + * non-FDPIC-aware ELF loader, and fixups are not needed, + * but the value for the GOT pointer is. */ + if (!map) return (void *)z[-1]; + + struct { + unsigned short version, nsegs; + struct fdpic_loadseg { + uintptr_t addr, p_vaddr, p_memsz; + } segs[]; + } *lm = map; + int nsegs = lm->nsegs, rseg = 0, vseg = 0; + for (;;) { + while (*a-lm->segs[rseg].p_vaddr >= lm->segs[rseg].p_memsz) + if (++rseg == nsegs) rseg = 0; + uintptr_t *r = (uintptr_t *) + (*a + lm->segs[rseg].addr - lm->segs[rseg].p_vaddr); + if (++a == z) return r; + while (*r-lm->segs[vseg].p_vaddr >= lm->segs[vseg].p_memsz) + if (++vseg == nsegs) vseg = 0; + *r += lm->segs[vseg].addr - lm->segs[vseg].p_vaddr; + } +} diff --git a/vendor/modernc.org/libc/musl/src/internal/floatscan.c b/vendor/modernc.org/libc/musl/src/internal/floatscan.c new file mode 100644 index 000000000..7ecbdf16c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/floatscan.c @@ -0,0 +1,508 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "shgetc.h" +#include "floatscan.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 + +#define LD_B1B_DIG 2 +#define LD_B1B_MAX 9007199, 254740991 +#define KMAX 128 + +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +#error TODO + +#define LD_B1B_DIG 3 +#define LD_B1B_MAX 18, 446744073, 709551615 +#define KMAX 2048 + +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 + +#define LD_B1B_DIG 4 +#define LD_B1B_MAX 10384593, 717069655, 257060992, 658440191 +#define KMAX 2048 + +#else +#error Unsupported long double representation +#endif + +#define MASK (KMAX-1) + +static long long scanexp(FILE *f, int pok) +{ + int c; + int x; + long long y; + int neg = 0; + + c = shgetc(f); + if (c=='+' || c=='-') { + neg = (c=='-'); + c = shgetc(f); + if (c-'0'>=10U && pok) shunget(f); + } + if (c-'0'>=10U) { + shunget(f); + return LLONG_MIN; + } + for (x=0; c-'0'<10U && x=0) { + shunget(f); + } + if (!gotdig) { + errno = EINVAL; + shlim(f, 0); + return 0; + } + + /* Handle zero specially to avoid nasty special cases later */ + if (!x[0]) return sign * 0.0; + + /* Optimize small integers (w/no exponent) and over/under-flow */ + if (lrp==dc && dc<10 && (bits>30 || x[0]>>bits==0)) + return sign * (long double)x[0]; + if (lrp > -emin/2) { + errno = ERANGE; + return sign * LDBL_MAX * LDBL_MAX; + } + if (lrp < emin-2*LDBL_MANT_DIG) { + errno = ERANGE; + return sign * LDBL_MIN * LDBL_MIN; + } + + /* Align incomplete final B1B digit */ + if (j) { + for (; j<9; j++) x[k]*=10; + k++; + j=0; + } + + a = 0; + z = k; + e2 = 0; + rp = lrp; + + /* Optimize small to mid-size integers (even in exp. notation) */ + if (lnz<9 && lnz<=rp && rp < 18) { + if (rp == 9) return sign * (long double)x[0]; + if (rp < 9) return sign * (long double)x[0] / p10s[8-rp]; + int bitlim = bits-3*(int)(rp-9); + if (bitlim>30 || x[0]>>bitlim==0) + return sign * (long double)x[0] * p10s[rp-10]; + } + + /* Drop trailing zeros */ + for (; !x[z-1]; z--); + + /* Align radix point to B1B digit boundary */ + if (rp % 9) { + int rpm9 = rp>=0 ? rp%9 : rp%9+9; + int p10 = p10s[8-rpm9]; + uint32_t carry = 0; + for (k=a; k!=z; k++) { + uint32_t tmp = x[k] % p10; + x[k] = x[k]/p10 + carry; + carry = 1000000000/p10 * tmp; + if (k==a && !x[k]) { + a = (a+1 & MASK); + rp -= 9; + } + } + if (carry) x[z++] = carry; + rp += 9-rpm9; + } + + /* Upscale until desired number of bits are left of radix point */ + while (rp < 9*LD_B1B_DIG || (rp == 9*LD_B1B_DIG && x[a] 1000000000) { + carry = tmp / 1000000000; + x[k] = tmp % 1000000000; + } else { + carry = 0; + x[k] = tmp; + } + if (k==(z-1 & MASK) && k!=a && !x[k]) z = k; + if (k==a) break; + } + if (carry) { + rp += 9; + a = (a-1 & MASK); + if (a == z) { + z = (z-1 & MASK); + x[z-1 & MASK] |= x[z]; + } + x[a] = carry; + } + } + + /* Downscale until exactly number of bits are left of radix point */ + for (;;) { + uint32_t carry = 0; + int sh = 1; + for (i=0; i th[i]) break; + } + if (i==LD_B1B_DIG && rp==9*LD_B1B_DIG) break; + /* FIXME: find a way to compute optimal sh */ + if (rp > 9+9*LD_B1B_DIG) sh = 9; + e2 += sh; + for (k=a; k!=z; k=(k+1 & MASK)) { + uint32_t tmp = x[k] & (1<>sh) + carry; + carry = (1000000000>>sh) * tmp; + if (k==a && !x[k]) { + a = (a+1 & MASK); + i--; + rp -= 9; + } + } + if (carry) { + if ((z+1 & MASK) != a) { + x[z] = carry; + z = (z+1 & MASK); + } else x[z-1 & MASK] |= 1; + } + } + + /* Assemble desired bits into floating point variable */ + for (y=i=0; i LDBL_MANT_DIG+e2-emin) { + bits = LDBL_MANT_DIG+e2-emin; + if (bits<0) bits=0; + denormal = 1; + } + + /* Calculate bias term to force rounding, move out lower bits */ + if (bits < LDBL_MANT_DIG) { + bias = copysignl(scalbn(1, 2*LDBL_MANT_DIG-bits-1), y); + frac = fmodl(y, scalbn(1, LDBL_MANT_DIG-bits)); + y -= frac; + y += bias; + } + + /* Process tail of decimal input so it can affect rounding */ + if ((a+i & MASK) != z) { + uint32_t t = x[a+i & MASK]; + if (t < 500000000 && (t || (a+i+1 & MASK) != z)) + frac += 0.25*sign; + else if (t > 500000000) + frac += 0.75*sign; + else if (t == 500000000) { + if ((a+i+1 & MASK) == z) + frac += 0.5*sign; + else + frac += 0.75*sign; + } + if (LDBL_MANT_DIG-bits >= 2 && !fmodl(frac, 1)) + frac++; + } + + y += frac; + y -= bias; + + if ((e2+LDBL_MANT_DIG & INT_MAX) > emax-5) { + if (fabsl(y) >= 2/LDBL_EPSILON) { + if (denormal && bits==LDBL_MANT_DIG+e2-emin) + denormal = 0; + y *= 0.5; + e2++; + } + if (e2+LDBL_MANT_DIG>emax || (denormal && frac)) + errno = ERANGE; + } + + return scalbnl(y, e2); +} + +static long double hexfloat(FILE *f, int bits, int emin, int sign, int pok) +{ + uint32_t x = 0; + long double y = 0; + long double scale = 1; + long double bias = 0; + int gottail = 0, gotrad = 0, gotdig = 0; + long long rp = 0; + long long dc = 0; + long long e2 = 0; + int d; + int c; + + c = shgetc(f); + + /* Skip leading zeros */ + for (; c=='0'; c = shgetc(f)) gotdig = 1; + + if (c=='.') { + gotrad = 1; + c = shgetc(f); + /* Count zeros after the radix point before significand */ + for (rp=0; c=='0'; c = shgetc(f), rp--) gotdig = 1; + } + + for (; c-'0'<10U || (c|32)-'a'<6U || c=='.'; c = shgetc(f)) { + if (c=='.') { + if (gotrad) break; + rp = dc; + gotrad = 1; + } else { + gotdig = 1; + if (c > '9') d = (c|32)+10-'a'; + else d = c-'0'; + if (dc<8) { + x = x*16 + d; + } else if (dc < LDBL_MANT_DIG/4+1) { + y += d*(scale/=16); + } else if (d && !gottail) { + y += 0.5*scale; + gottail = 1; + } + dc++; + } + } + if (!gotdig) { + shunget(f); + if (pok) { + shunget(f); + if (gotrad) shunget(f); + } else { + shlim(f, 0); + } + return sign * 0.0; + } + if (!gotrad) rp = dc; + while (dc<8) x *= 16, dc++; + if ((c|32)=='p') { + e2 = scanexp(f, pok); + if (e2 == LLONG_MIN) { + if (pok) { + shunget(f); + } else { + shlim(f, 0); + return 0; + } + e2 = 0; + } + } else { + shunget(f); + } + e2 += 4*rp - 32; + + if (!x) return sign * 0.0; + if (e2 > -emin) { + errno = ERANGE; + return sign * LDBL_MAX * LDBL_MAX; + } + if (e2 < emin-2*LDBL_MANT_DIG) { + errno = ERANGE; + return sign * LDBL_MIN * LDBL_MIN; + } + + while (x < 0x80000000) { + if (y>=0.5) { + x += x + 1; + y += y - 1; + } else { + x += x; + y += y; + } + e2--; + } + + if (bits > 32+e2-emin) { + bits = 32+e2-emin; + if (bits<0) bits=0; + } + + if (bits < LDBL_MANT_DIG) + bias = copysignl(scalbn(1, 32+LDBL_MANT_DIG-bits-1), sign); + + if (bits<32 && y && !(x&1)) x++, y=0; + + y = bias + sign*(long double)x + sign*y; + y -= bias; + + if (!y) errno = ERANGE; + + return scalbnl(y, e2); +} + +long double __floatscan(FILE *f, int prec, int pok) +{ + int sign = 1; + size_t i; + int bits; + int emin; + int c; + + switch (prec) { + case 0: + bits = FLT_MANT_DIG; + emin = FLT_MIN_EXP-bits; + break; + case 1: + bits = DBL_MANT_DIG; + emin = DBL_MIN_EXP-bits; + break; + case 2: + bits = LDBL_MANT_DIG; + emin = LDBL_MIN_EXP-bits; + break; + default: + return 0; + } + + while (isspace((c=shgetc(f)))); + + if (c=='+' || c=='-') { + sign -= 2*(c=='-'); + c = shgetc(f); + } + + for (i=0; i<8 && (c|32)=="infinity"[i]; i++) + if (i<7) c = shgetc(f); + if (i==3 || i==8 || (i>3 && pok)) { + if (i!=8) { + shunget(f); + if (pok) for (; i>3; i--) shunget(f); + } + return sign * INFINITY; + } + if (!i) for (i=0; i<3 && (c|32)=="nan"[i]; i++) + if (i<2) c = shgetc(f); + if (i==3) { + if (shgetc(f) != '(') { + shunget(f); + return NAN; + } + for (i=1; ; i++) { + c = shgetc(f); + if (c-'0'<10U || c-'A'<26U || c-'a'<26U || c=='_') + continue; + if (c==')') return NAN; + shunget(f); + if (!pok) { + errno = EINVAL; + shlim(f, 0); + return 0; + } + while (i--) shunget(f); + return NAN; + } + return NAN; + } + + if (i) { + shunget(f); + errno = EINVAL; + shlim(f, 0); + return 0; + } + + if (c=='0') { + c = shgetc(f); + if ((c|32) == 'x') + return hexfloat(f, bits, emin, sign, pok); + shunget(f); + c = '0'; + } + + return decfloat(f, c, bits, emin, sign, pok); +} diff --git a/vendor/modernc.org/libc/musl/src/internal/floatscan.h b/vendor/modernc.org/libc/musl/src/internal/floatscan.h new file mode 100644 index 000000000..f2b1dcf45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/floatscan.h @@ -0,0 +1,8 @@ +#ifndef FLOATSCAN_H +#define FLOATSCAN_H + +#include + +hidden long double __floatscan(FILE *, int, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/futex.h b/vendor/modernc.org/libc/musl/src/internal/futex.h new file mode 100644 index 000000000..dafbc24db --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/futex.h @@ -0,0 +1,19 @@ +#ifndef _INTERNAL_FUTEX_H +#define _INTERNAL_FUTEX_H + +#define FUTEX_WAIT 0 +#define FUTEX_WAKE 1 +#define FUTEX_FD 2 +#define FUTEX_REQUEUE 3 +#define FUTEX_CMP_REQUEUE 4 +#define FUTEX_WAKE_OP 5 +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 +#define FUTEX_WAIT_BITSET 9 + +#define FUTEX_PRIVATE 128 + +#define FUTEX_CLOCK_REALTIME 256 + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/intscan.c b/vendor/modernc.org/libc/musl/src/internal/intscan.c new file mode 100644 index 000000000..a4a5ae861 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/intscan.c @@ -0,0 +1,100 @@ +#include +#include +#include +#include "shgetc.h" + +/* Lookup table for digit values. -1==255>=36 -> invalid */ +static const unsigned char table[] = { -1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, +-1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, +25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1, +-1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, +25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +}; + +unsigned long long __intscan(FILE *f, unsigned base, int pok, unsigned long long lim) +{ + const unsigned char *val = table+1; + int c, neg=0; + unsigned x; + unsigned long long y; + if (base > 36 || base == 1) { + errno = EINVAL; + return 0; + } + while (isspace((c=shgetc(f)))); + if (c=='+' || c=='-') { + neg = -(c=='-'); + c = shgetc(f); + } + if ((base == 0 || base == 16) && c=='0') { + c = shgetc(f); + if ((c|32)=='x') { + c = shgetc(f); + if (val[c]>=16) { + shunget(f); + if (pok) shunget(f); + else shlim(f, 0); + return 0; + } + base = 16; + } else if (base == 0) { + base = 8; + } + } else { + if (base == 0) base = 10; + if (val[c] >= base) { + shunget(f); + shlim(f, 0); + errno = EINVAL; + return 0; + } + } + if (base == 10) { + for (x=0; c-'0'<10U && x<=UINT_MAX/10-1; c=shgetc(f)) + x = x*10 + (c-'0'); + for (y=x; c-'0'<10U && y<=ULLONG_MAX/10 && 10*y<=ULLONG_MAX-(c-'0'); c=shgetc(f)) + y = y*10 + (c-'0'); + if (c-'0'>=10U) goto done; + } else if (!(base & base-1)) { + int bs = "\0\1\2\4\7\3\6\5"[(0x17*base)>>5&7]; + for (x=0; val[c]>bs; c=shgetc(f)) + y = y<=lim) { + if (!(lim&1) && !neg) { + errno = ERANGE; + return lim-1; + } else if (y>lim) { + errno = ERANGE; + return lim; + } + } + return (y^neg)-neg; +} diff --git a/vendor/modernc.org/libc/musl/src/internal/intscan.h b/vendor/modernc.org/libc/musl/src/internal/intscan.h new file mode 100644 index 000000000..ccf9f112a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/intscan.h @@ -0,0 +1,8 @@ +#ifndef INTSCAN_H +#define INTSCAN_H + +#include + +hidden unsigned long long __intscan(FILE *, unsigned, int, unsigned long long); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/ksigaction.h b/vendor/modernc.org/libc/musl/src/internal/ksigaction.h new file mode 100644 index 000000000..8ebd59383 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/ksigaction.h @@ -0,0 +1,13 @@ +#include + +/* This is the structure used for the rt_sigaction syscall on most archs, + * but it can be overridden by a file with the same name in the top-level + * arch dir for a given arch, if necessary. */ +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void (*restorer)(void); + unsigned mask[2]; +}; + +hidden void __restore(), __restore_rt(); diff --git a/vendor/modernc.org/libc/musl/src/internal/libc.c b/vendor/modernc.org/libc/musl/src/internal/libc.c new file mode 100644 index 000000000..cb0518108 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/libc.c @@ -0,0 +1,9 @@ +#include "libc.h" + +struct __libc __libc; + +size_t __hwcap; +char *__progname=0, *__progname_full=0; + +weak_alias(__progname, program_invocation_short_name); +weak_alias(__progname_full, program_invocation_name); diff --git a/vendor/modernc.org/libc/musl/src/internal/libc.h b/vendor/modernc.org/libc/musl/src/internal/libc.h new file mode 100644 index 000000000..619bba861 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/libc.h @@ -0,0 +1,58 @@ +#ifndef LIBC_H +#define LIBC_H + +#include +#include +#include + +struct __locale_map; + +struct __locale_struct { + const struct __locale_map *cat[6]; +}; + +struct tls_module { + struct tls_module *next; + void *image; + size_t len, size, align, offset; +}; + +struct __libc { + char can_do_threads; + char threaded; + char secure; + volatile signed char need_locks; + int threads_minus_1; + size_t *auxv; + struct tls_module *tls_head; + size_t tls_size, tls_align, tls_cnt; + size_t page_size; + struct __locale_struct global_locale; +}; + +#ifndef PAGE_SIZE +#define PAGE_SIZE libc.page_size +#endif + +extern hidden struct __libc __libc; +#define libc __libc + +hidden void __init_libc(char **, char *); +hidden void __init_tls(size_t *); +hidden void __init_ssp(void *); +hidden void __libc_start_init(void); +hidden void __funcs_on_exit(void); +hidden void __funcs_on_quick_exit(void); +hidden void __libc_exit_fini(void); +hidden void __fork_handler(int); + +extern hidden size_t __hwcap; +extern hidden size_t __sysinfo; +extern char *__progname, *__progname_full; + +extern hidden const char __libc_version[]; + +hidden void __synccall(void (*)(void *), void *); +hidden int __setxid(int, int, int, int); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/libm.h b/vendor/modernc.org/libc/musl/src/internal/libm.h new file mode 100644 index 000000000..7533f6bae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/libm.h @@ -0,0 +1,271 @@ +#ifndef _LIBM_H +#define _LIBM_H + +#include +#include +#include +#include +#include "fp_arch.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_ENDIAN +union ldshape { + long double f; + struct { + uint64_t m; + uint16_t se; + } i; +}; +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_ENDIAN +/* This is the m68k variant of 80-bit long double, and this definition only works + * on archs where the alignment requirement of uint64_t is <= 4. */ +union ldshape { + long double f; + struct { + uint16_t se; + uint16_t pad; + uint64_t m; + } i; +}; +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_ENDIAN +union ldshape { + long double f; + struct { + uint64_t lo; + uint32_t mid; + uint16_t top; + uint16_t se; + } i; + struct { + uint64_t lo; + uint64_t hi; + } i2; +}; +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_ENDIAN +union ldshape { + long double f; + struct { + uint16_t se; + uint16_t top; + uint32_t mid; + uint64_t lo; + } i; + struct { + uint64_t hi; + uint64_t lo; + } i2; +}; +#else +#error Unsupported long double representation +#endif + +/* Support non-nearest rounding mode. */ +#define WANT_ROUNDING 1 +/* Support signaling NaNs. */ +#define WANT_SNAN 0 + +#if WANT_SNAN +#error SNaN is unsupported +#else +#define issignalingf_inline(x) 0 +#define issignaling_inline(x) 0 +#endif + +#ifndef TOINT_INTRINSICS +#define TOINT_INTRINSICS 0 +#endif + +#if TOINT_INTRINSICS +/* Round x to nearest int in all rounding modes, ties have to be rounded + consistently with converttoint so the results match. If the result + would be outside of [-2^31, 2^31-1] then the semantics is unspecified. */ +static double_t roundtoint(double_t); + +/* Convert x to nearest int in all rounding modes, ties have to be rounded + consistently with roundtoint. If the result is not representible in an + int32_t then the semantics is unspecified. */ +static int32_t converttoint(double_t); +#endif + +/* Helps static branch prediction so hot path can be better optimized. */ +#ifdef __GNUC__ +#define predict_true(x) __builtin_expect(!!(x), 1) +#define predict_false(x) __builtin_expect(x, 0) +#else +#define predict_true(x) (x) +#define predict_false(x) (x) +#endif + +/* Evaluate an expression as the specified type. With standard excess + precision handling a type cast or assignment is enough (with + -ffloat-store an assignment is required, in old compilers argument + passing and return statement may not drop excess precision). */ + +static inline float eval_as_float(float x) +{ + float y = x; + return y; +} + +static inline double eval_as_double(double x) +{ + double y = x; + return y; +} + +/* fp_barrier returns its input, but limits code transformations + as if it had a side-effect (e.g. observable io) and returned + an arbitrary value. */ + +#ifndef fp_barrierf +#define fp_barrierf fp_barrierf +static inline float fp_barrierf(float x) +{ + volatile float y = x; + return y; +} +#endif + +#ifndef fp_barrier +#define fp_barrier fp_barrier +static inline double fp_barrier(double x) +{ + volatile double y = x; + return y; +} +#endif + +#ifndef fp_barrierl +#define fp_barrierl fp_barrierl +static inline long double fp_barrierl(long double x) +{ + volatile long double y = x; + return y; +} +#endif + +/* fp_force_eval ensures that the input value is computed when that's + otherwise unused. To prevent the constant folding of the input + expression, an additional fp_barrier may be needed or a compilation + mode that does so (e.g. -frounding-math in gcc). Then it can be + used to evaluate an expression for its fenv side-effects only. */ + +#ifndef fp_force_evalf +#define fp_force_evalf fp_force_evalf +static inline void fp_force_evalf(float x) +{ + volatile float y; + y = x; +} +#endif + +#ifndef fp_force_eval +#define fp_force_eval fp_force_eval +static inline void fp_force_eval(double x) +{ + volatile double y; + y = x; +} +#endif + +#ifndef fp_force_evall +#define fp_force_evall fp_force_evall +static inline void fp_force_evall(long double x) +{ + volatile long double y; + y = x; +} +#endif + +#define FORCE_EVAL(x) do { \ + if (sizeof(x) == sizeof(float)) { \ + fp_force_evalf(x); \ + } else if (sizeof(x) == sizeof(double)) { \ + fp_force_eval(x); \ + } else { \ + fp_force_evall(x); \ + } \ +} while(0) + +#define asuint(f) ((union{float _f; uint32_t _i;}){f})._i +#define asfloat(i) ((union{uint32_t _i; float _f;}){i})._f +#define asuint64(f) ((union{double _f; uint64_t _i;}){f})._i +#define asdouble(i) ((union{uint64_t _i; double _f;}){i})._f + +#define EXTRACT_WORDS(hi,lo,d) \ +do { \ + uint64_t __u = asuint64(d); \ + (hi) = __u >> 32; \ + (lo) = (uint32_t)__u; \ +} while (0) + +#define GET_HIGH_WORD(hi,d) \ +do { \ + (hi) = asuint64(d) >> 32; \ +} while (0) + +#define GET_LOW_WORD(lo,d) \ +do { \ + (lo) = (uint32_t)asuint64(d); \ +} while (0) + +#define INSERT_WORDS(d,hi,lo) \ +do { \ + (d) = asdouble(((uint64_t)(hi)<<32) | (uint32_t)(lo)); \ +} while (0) + +#define SET_HIGH_WORD(d,hi) \ + INSERT_WORDS(d, hi, (uint32_t)asuint64(d)) + +#define SET_LOW_WORD(d,lo) \ + INSERT_WORDS(d, asuint64(d)>>32, lo) + +#define GET_FLOAT_WORD(w,d) \ +do { \ + (w) = asuint(d); \ +} while (0) + +#define SET_FLOAT_WORD(d,w) \ +do { \ + (d) = asfloat(w); \ +} while (0) + +hidden int __rem_pio2_large(double*,double*,int,int,int); + +hidden int __rem_pio2(double,double*); +hidden double __sin(double,double,int); +hidden double __cos(double,double); +hidden double __tan(double,double,int); +hidden double __expo2(double,double); + +hidden int __rem_pio2f(float,double*); +hidden float __sindf(double); +hidden float __cosdf(double); +hidden float __tandf(double,int); +hidden float __expo2f(float,float); + +hidden int __rem_pio2l(long double, long double *); +hidden long double __sinl(long double, long double, int); +hidden long double __cosl(long double, long double); +hidden long double __tanl(long double, long double, int); + +hidden long double __polevll(long double, const long double *, int); +hidden long double __p1evll(long double, const long double *, int); + +extern int __signgam; +hidden double __lgamma_r(double, int *); +hidden float __lgammaf_r(float, int *); + +/* error handling functions */ +hidden float __math_xflowf(uint32_t, float); +hidden float __math_uflowf(uint32_t); +hidden float __math_oflowf(uint32_t); +hidden float __math_divzerof(uint32_t); +hidden float __math_invalidf(float); +hidden double __math_xflow(uint32_t, double); +hidden double __math_uflow(uint32_t); +hidden double __math_oflow(uint32_t); +hidden double __math_divzero(uint32_t); +hidden double __math_invalid(double); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/locale_impl.h b/vendor/modernc.org/libc/musl/src/internal/locale_impl.h new file mode 100644 index 000000000..741a71c4d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/locale_impl.h @@ -0,0 +1,45 @@ +#ifndef _LOCALE_IMPL_H +#define _LOCALE_IMPL_H + +#include +#include +#include "libc.h" +#include "pthread_impl.h" + +#define LOCALE_NAME_MAX 23 + +struct __locale_map { + const void *map; + size_t map_size; + char name[LOCALE_NAME_MAX+1]; + const struct __locale_map *next; +}; + +extern hidden const struct __locale_map __c_dot_utf8; +extern hidden const struct __locale_struct __c_locale; +extern hidden const struct __locale_struct __c_dot_utf8_locale; + +hidden const struct __locale_map *__get_locale(int, const char *); +hidden const char *__mo_lookup(const void *, size_t, const char *); +hidden const char *__lctrans(const char *, const struct __locale_map *); +hidden const char *__lctrans_cur(const char *); +hidden const char *__lctrans_impl(const char *, const struct __locale_map *); +hidden int __loc_is_allocated(locale_t); +hidden char *__gettextdomain(void); + +#define LOC_MAP_FAILED ((const struct __locale_map *)-1) + +#define LCTRANS(msg, lc, loc) __lctrans(msg, (loc)->cat[(lc)]) +#define LCTRANS_CUR(msg) __lctrans_cur(msg) + +#define C_LOCALE ((locale_t)&__c_locale) +#define UTF8_LOCALE ((locale_t)&__c_dot_utf8_locale) + +#define CURRENT_LOCALE (__pthread_self()->locale) + +#define CURRENT_UTF8 (!!__pthread_self()->locale->cat[LC_CTYPE]) + +#undef MB_CUR_MAX +#define MB_CUR_MAX (CURRENT_UTF8 ? 4 : 1) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/lock.h b/vendor/modernc.org/libc/musl/src/internal/lock.h new file mode 100644 index 000000000..c77db6f7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/lock.h @@ -0,0 +1,9 @@ +#ifndef LOCK_H +#define LOCK_H + +hidden void __lock(volatile int *); +hidden void __unlock(volatile int *); +#define LOCK(x) __lock(x) +#define UNLOCK(x) __unlock(x) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/procfdname.c b/vendor/modernc.org/libc/musl/src/internal/procfdname.c new file mode 100644 index 000000000..fd7306ab6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/procfdname.c @@ -0,0 +1,15 @@ +#include "syscall.h" + +void __procfdname(char *buf, unsigned fd) +{ + unsigned i, j; + for (i=0; (buf[i] = "/proc/self/fd/"[i]); i++); + if (!fd) { + buf[i] = '0'; + buf[i+1] = 0; + return; + } + for (j=fd; j; j/=10, i++); + buf[i] = 0; + for (; fd; fd/=10) buf[--i] = '0' + fd%10; +} diff --git a/vendor/modernc.org/libc/musl/src/internal/pthread_impl.h b/vendor/modernc.org/libc/musl/src/internal/pthread_impl.h new file mode 100644 index 000000000..5742dfc55 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/pthread_impl.h @@ -0,0 +1,190 @@ +#ifndef _PTHREAD_IMPL_H +#define _PTHREAD_IMPL_H + +#include +#include +#include +#include +#include +#include "libc.h" +#include "syscall.h" +#include "atomic.h" +#include "futex.h" + +#define pthread __pthread + +struct pthread { + /* Part 1 -- these fields may be external or + * internal (accessed via asm) ABI. Do not change. */ + struct pthread *self; + uintptr_t *dtv; + struct pthread *prev, *next; /* non-ABI */ + uintptr_t sysinfo; + uintptr_t canary, canary2; + + /* Part 2 -- implementation details, non-ABI. */ + int tid; + int errno_val; + volatile int detach_state; + volatile int cancel; + volatile unsigned char canceldisable, cancelasync; + unsigned char tsd_used:1; + unsigned char dlerror_flag:1; + unsigned char *map_base; + size_t map_size; + void *stack; + size_t stack_size; + size_t guard_size; + void *result; + struct __ptcb *cancelbuf; + void **tsd; + struct { + volatile void *volatile head; + long off; + volatile void *volatile pending; + } robust_list; + volatile int timer_id; + locale_t locale; + volatile int killlock[1]; + char *dlerror_buf; + void *stdio_locks; + + /* Part 3 -- the positions of these fields relative to + * the end of the structure is external and internal ABI. */ + uintptr_t canary_at_end; + uintptr_t *dtv_copy; +}; + +enum { + DT_EXITING = 0, + DT_JOINABLE, + DT_DETACHED, +}; + +struct __timer { + int timerid; + pthread_t thread; +}; + +#define __SU (sizeof(size_t)/sizeof(int)) + +#define _a_stacksize __u.__s[0] +#define _a_guardsize __u.__s[1] +#define _a_stackaddr __u.__s[2] +#define _a_detach __u.__i[3*__SU+0] +#define _a_sched __u.__i[3*__SU+1] +#define _a_policy __u.__i[3*__SU+2] +#define _a_prio __u.__i[3*__SU+3] +#define _m_type __u.__i[0] +#define _m_lock __u.__vi[1] +#define _m_waiters __u.__vi[2] +#define _m_prev __u.__p[3] +#define _m_next __u.__p[4] +#define _m_count __u.__i[5] +#define _c_shared __u.__p[0] +#define _c_seq __u.__vi[2] +#define _c_waiters __u.__vi[3] +#define _c_clock __u.__i[4] +#define _c_lock __u.__vi[8] +#define _c_head __u.__p[1] +#define _c_tail __u.__p[5] +#define _rw_lock __u.__vi[0] +#define _rw_waiters __u.__vi[1] +#define _rw_shared __u.__i[2] +#define _b_lock __u.__vi[0] +#define _b_waiters __u.__vi[1] +#define _b_limit __u.__i[2] +#define _b_count __u.__vi[3] +#define _b_waiters2 __u.__vi[4] +#define _b_inst __u.__p[3] + +#include "pthread_arch.h" + +#ifndef CANARY +#define CANARY canary +#endif + +#ifndef DTP_OFFSET +#define DTP_OFFSET 0 +#endif + +#ifndef tls_mod_off_t +#define tls_mod_off_t size_t +#endif + +#define SIGTIMER 32 +#define SIGCANCEL 33 +#define SIGSYNCCALL 34 + +#define SIGALL_SET ((sigset_t *)(const unsigned long long [2]){ -1,-1 }) +#define SIGPT_SET \ + ((sigset_t *)(const unsigned long [_NSIG/8/sizeof(long)]){ \ + [sizeof(long)==4] = 3UL<<(32*(sizeof(long)>4)) }) +#define SIGTIMER_SET \ + ((sigset_t *)(const unsigned long [_NSIG/8/sizeof(long)]){ \ + 0x80000000 }) + +void *__tls_get_addr(tls_mod_off_t *); +hidden int __init_tp(void *); +hidden void *__copy_tls(unsigned char *); +hidden void __reset_tls(); + +hidden void __membarrier_init(void); +hidden void __dl_thread_cleanup(void); +hidden void __testcancel(); +hidden void __do_cleanup_push(struct __ptcb *); +hidden void __do_cleanup_pop(struct __ptcb *); +hidden void __pthread_tsd_run_dtors(); + +hidden void __pthread_key_delete_synccall(void (*)(void *), void *); +hidden int __pthread_key_delete_impl(pthread_key_t); + +extern hidden volatile size_t __pthread_tsd_size; +extern hidden void *__pthread_tsd_main[]; +extern hidden volatile int __aio_fut; +extern hidden volatile int __eintr_valid_flag; + +hidden int __clone(int (*)(void *), void *, int, void *, ...); +hidden int __set_thread_area(void *); +hidden int __libc_sigaction(int, const struct sigaction *, struct sigaction *); +hidden void __unmapself(void *, size_t); + +hidden int __timedwait(volatile int *, int, clockid_t, const struct timespec *, int); +hidden int __timedwait_cp(volatile int *, int, clockid_t, const struct timespec *, int); +hidden void __wait(volatile int *, volatile int *, int, int); +static inline void __wake(volatile void *addr, int cnt, int priv) +{ + if (priv) priv = FUTEX_PRIVATE; + if (cnt<0) cnt = INT_MAX; + __syscall(SYS_futex, addr, FUTEX_WAKE|priv, cnt) != -ENOSYS || + __syscall(SYS_futex, addr, FUTEX_WAKE, cnt); +} +static inline void __futexwait(volatile void *addr, int val, int priv) +{ + if (priv) priv = FUTEX_PRIVATE; + __syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0) != -ENOSYS || + __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0); +} + +hidden void __acquire_ptc(void); +hidden void __release_ptc(void); +hidden void __inhibit_ptc(void); + +hidden void __tl_lock(void); +hidden void __tl_unlock(void); +hidden void __tl_sync(pthread_t); + +extern hidden volatile int __thread_list_lock; + +extern hidden unsigned __default_stacksize; +extern hidden unsigned __default_guardsize; + +#define DEFAULT_STACK_SIZE 131072 +#define DEFAULT_GUARD_SIZE 8192 + +#define DEFAULT_STACK_MAX (8<<20) +#define DEFAULT_GUARD_MAX (1<<20) + +#define __ATTRP_C11_THREAD ((void*)(uintptr_t)-1) + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/sh/__shcall.c b/vendor/modernc.org/libc/musl/src/internal/sh/__shcall.c new file mode 100644 index 000000000..4e073e8ff --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/sh/__shcall.c @@ -0,0 +1,6 @@ +#include + +hidden int __shcall(void *arg, int (*func)(void *)) +{ + return func(arg); +} diff --git a/vendor/modernc.org/libc/musl/src/internal/shgetc.c b/vendor/modernc.org/libc/musl/src/internal/shgetc.c new file mode 100644 index 000000000..7455d2f00 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/shgetc.c @@ -0,0 +1,37 @@ +#include "shgetc.h" + +/* The shcnt field stores the number of bytes read so far, offset by + * the value of buf-rpos at the last function call (__shlim or __shgetc), + * so that between calls the inline shcnt macro can add rpos-buf to get + * the actual count. */ + +void __shlim(FILE *f, off_t lim) +{ + f->shlim = lim; + f->shcnt = f->buf - f->rpos; + /* If lim is nonzero, rend must be a valid pointer. */ + if (lim && f->rend - f->rpos > lim) + f->shend = f->rpos + lim; + else + f->shend = f->rend; +} + +int __shgetc(FILE *f) +{ + int c; + off_t cnt = shcnt(f); + if (f->shlim && cnt >= f->shlim || (c=__uflow(f)) < 0) { + f->shcnt = f->buf - f->rpos + cnt; + f->shend = f->rpos; + f->shlim = -1; + return EOF; + } + cnt++; + if (f->shlim && f->rend - f->rpos > f->shlim - cnt) + f->shend = f->rpos + (f->shlim - cnt); + else + f->shend = f->rend; + f->shcnt = f->buf - f->rpos + cnt; + if (f->rpos <= f->buf) f->rpos[-1] = c; + return c; +} diff --git a/vendor/modernc.org/libc/musl/src/internal/shgetc.h b/vendor/modernc.org/libc/musl/src/internal/shgetc.h new file mode 100644 index 000000000..9435381a6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/shgetc.h @@ -0,0 +1,32 @@ +#include "stdio_impl.h" + +/* Scan helper "stdio" functions for use by scanf-family and strto*-family + * functions. These accept either a valid stdio FILE, or a minimal pseudo + * FILE whose buffer pointers point into a null-terminated string. In the + * latter case, the sh_fromstring macro should be used to setup the FILE; + * the rest of the structure can be left uninitialized. + * + * To begin using these functions, shlim must first be called on the FILE + * to set a field width limit, or 0 for no limit. For string pseudo-FILEs, + * a nonzero limit is not valid and produces undefined behavior. After that, + * shgetc, shunget, and shcnt are valid as long as no other stdio functions + * are called on the stream. + * + * When used with a real FILE object, shunget has only one byte of pushback + * available. Further shunget (up to a limit of the stdio UNGET buffer size) + * will adjust the position but will not restore the data to be read again. + * This functionality is needed for the wcsto*-family functions, where it's + * okay because the FILE will be discarded immediately anyway. When used + * with string pseudo-FILEs, shunget has unlimited pushback, back to the + * beginning of the string. */ + +hidden void __shlim(FILE *, off_t); +hidden int __shgetc(FILE *); + +#define shcnt(f) ((f)->shcnt + ((f)->rpos - (f)->buf)) +#define shlim(f, lim) __shlim((f), (lim)) +#define shgetc(f) (((f)->rpos != (f)->shend) ? *(f)->rpos++ : __shgetc(f)) +#define shunget(f) ((f)->shlim>=0 ? (void)(f)->rpos-- : (void)0) + +#define sh_fromstring(f, s) \ + ((f)->buf = (f)->rpos = (void *)(s), (f)->rend = (void*)-1) diff --git a/vendor/modernc.org/libc/musl/src/internal/stdio_impl.h b/vendor/modernc.org/libc/musl/src/internal/stdio_impl.h new file mode 100644 index 000000000..0b2438d61 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/stdio_impl.h @@ -0,0 +1,112 @@ +#ifndef _STDIO_IMPL_H +#define _STDIO_IMPL_H + +#include +#include "syscall.h" + +#define UNGET 8 + +#define FFINALLOCK(f) ((f)->lock>=0 ? __lockfile((f)) : 0) +#define FLOCK(f) int __need_unlock = ((f)->lock>=0 ? __lockfile((f)) : 0) +#define FUNLOCK(f) do { if (__need_unlock) __unlockfile((f)); } while (0) + +#define F_PERM 1 +#define F_NORD 4 +#define F_NOWR 8 +#define F_EOF 16 +#define F_ERR 32 +#define F_SVB 64 +#define F_APP 128 + +struct _IO_FILE { + unsigned flags; + unsigned char *rpos, *rend; + int (*close)(FILE *); + unsigned char *wend, *wpos; + unsigned char *mustbezero_1; + unsigned char *wbase; + size_t (*read)(FILE *, unsigned char *, size_t); + size_t (*write)(FILE *, const unsigned char *, size_t); + off_t (*seek)(FILE *, off_t, int); + unsigned char *buf; + size_t buf_size; + FILE *prev, *next; + int fd; + int pipe_pid; + long lockcount; + int mode; + volatile int lock; + int lbf; + void *cookie; + off_t off; + char *getln_buf; + void *mustbezero_2; + unsigned char *shend; + off_t shlim, shcnt; + FILE *prev_locked, *next_locked; + struct __locale_struct *locale; +}; + +extern hidden FILE *volatile __stdin_used; +extern hidden FILE *volatile __stdout_used; +extern hidden FILE *volatile __stderr_used; + +hidden int __lockfile(FILE *); +hidden void __unlockfile(FILE *); + +hidden size_t __stdio_read(FILE *, unsigned char *, size_t); +hidden size_t __stdio_write(FILE *, const unsigned char *, size_t); +hidden size_t __stdout_write(FILE *, const unsigned char *, size_t); +hidden off_t __stdio_seek(FILE *, off_t, int); +hidden int __stdio_close(FILE *); + +hidden int __toread(FILE *); +hidden int __towrite(FILE *); + +hidden void __stdio_exit(void); +hidden void __stdio_exit_needed(void); + +#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303) +__attribute__((visibility("protected"))) +#endif +int __overflow(FILE *, int), __uflow(FILE *); + +hidden int __fseeko(FILE *, off_t, int); +hidden int __fseeko_unlocked(FILE *, off_t, int); +hidden off_t __ftello(FILE *); +hidden off_t __ftello_unlocked(FILE *); +hidden size_t __fwritex(const unsigned char *, size_t, FILE *); +hidden int __putc_unlocked(int, FILE *); + +hidden FILE *__fdopen(int, const char *); +hidden int __fmodeflags(const char *); + +hidden FILE *__ofl_add(FILE *f); +hidden FILE **__ofl_lock(void); +hidden void __ofl_unlock(void); + +struct __pthread; +hidden void __register_locked_file(FILE *, struct __pthread *); +hidden void __unlist_locked_file(FILE *); +hidden void __do_orphaned_stdio_locks(void); + +#define MAYBE_WAITERS 0x40000000 + +hidden void __getopt_msg(const char *, const char *, const char *, size_t); + +#define feof(f) ((f)->flags & F_EOF) +#define ferror(f) ((f)->flags & F_ERR) + +#define getc_unlocked(f) \ + ( ((f)->rpos != (f)->rend) ? *(f)->rpos++ : __uflow((f)) ) + +#define putc_unlocked(c, f) \ + ( (((unsigned char)(c)!=(f)->lbf && (f)->wpos!=(f)->wend)) \ + ? *(f)->wpos++ = (unsigned char)(c) \ + : __overflow((f),(unsigned char)(c)) ) + +/* Caller-allocated FILE * operations */ +hidden FILE *__fopen_rb_ca(const char *, FILE *, unsigned char *, size_t); +hidden int __fclose_ca(FILE *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/syscall.h b/vendor/modernc.org/libc/musl/src/internal/syscall.h new file mode 100644 index 000000000..975a0031d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/syscall.h @@ -0,0 +1,384 @@ +#ifndef _INTERNAL_SYSCALL_H +#define _INTERNAL_SYSCALL_H + +#include +#include +#include "syscall_arch.h" + +#ifndef SYSCALL_RLIM_INFINITY +#define SYSCALL_RLIM_INFINITY (~0ULL) +#endif + +#ifndef SYSCALL_MMAP2_UNIT +#define SYSCALL_MMAP2_UNIT 4096ULL +#endif + +#ifndef __SYSCALL_LL_PRW +#define __SYSCALL_LL_PRW(x) __SYSCALL_LL_O(x) +#endif + +#ifndef __scc +#define __scc(X) ((long) (X)) +typedef long syscall_arg_t; +#endif + +hidden long __syscall_ret(unsigned long), + __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t); + +#define __syscall1(n,a) __syscall1(n,__scc(a)) +#define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b)) +#define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c)) +#define __syscall4(n,a,b,c,d) __syscall4(n,__scc(a),__scc(b),__scc(c),__scc(d)) +#define __syscall5(n,a,b,c,d,e) __syscall5(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) +#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) +#define __syscall7(n,a,b,c,d,e,f,g) __syscall7(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) + +#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n +#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) +#define __SYSCALL_CONCAT_X(a,b) a##b +#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) +#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) + +#define __syscall(...) __SYSCALL_DISP(__syscall,__VA_ARGS__) +#define syscall(...) __syscall_ret(__syscall(__VA_ARGS__)) + +#define socketcall(nm,a,b,c,d,e,f) __syscall_ret(__socketcall(nm,a,b,c,d,e,f)) +#define socketcall_cp(nm,a,b,c,d,e,f) __syscall_ret(__socketcall_cp(nm,a,b,c,d,e,f)) + +#define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0) +#define __syscall_cp1(n,a) (__syscall_cp)(n,__scc(a),0,0,0,0,0) +#define __syscall_cp2(n,a,b) (__syscall_cp)(n,__scc(a),__scc(b),0,0,0,0) +#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),0,0,0) +#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),0,0) +#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0) +#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) + +#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) +#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) + +#ifndef SYSCALL_USE_SOCKETCALL +#define __socketcall(nm,a,b,c,d,e,f) __syscall(SYS_##nm, a, b, c, d, e, f) +#define __socketcall_cp(nm,a,b,c,d,e,f) __syscall_cp(SYS_##nm, a, b, c, d, e, f) +#else +#define __socketcall(nm,a,b,c,d,e,f) __syscall(SYS_socketcall, __SC_##nm, \ + ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f })) +#define __socketcall_cp(nm,a,b,c,d,e,f) __syscall_cp(SYS_socketcall, __SC_##nm, \ + ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f })) +#endif + +/* fixup legacy 16-bit junk */ + +#ifdef SYS_getuid32 +#undef SYS_lchown +#undef SYS_getuid +#undef SYS_getgid +#undef SYS_geteuid +#undef SYS_getegid +#undef SYS_setreuid +#undef SYS_setregid +#undef SYS_getgroups +#undef SYS_setgroups +#undef SYS_fchown +#undef SYS_setresuid +#undef SYS_getresuid +#undef SYS_setresgid +#undef SYS_getresgid +#undef SYS_chown +#undef SYS_setuid +#undef SYS_setgid +#undef SYS_setfsuid +#undef SYS_setfsgid +#define SYS_lchown SYS_lchown32 +#define SYS_getuid SYS_getuid32 +#define SYS_getgid SYS_getgid32 +#define SYS_geteuid SYS_geteuid32 +#define SYS_getegid SYS_getegid32 +#define SYS_setreuid SYS_setreuid32 +#define SYS_setregid SYS_setregid32 +#define SYS_getgroups SYS_getgroups32 +#define SYS_setgroups SYS_setgroups32 +#define SYS_fchown SYS_fchown32 +#define SYS_setresuid SYS_setresuid32 +#define SYS_getresuid SYS_getresuid32 +#define SYS_setresgid SYS_setresgid32 +#define SYS_getresgid SYS_getresgid32 +#define SYS_chown SYS_chown32 +#define SYS_setuid SYS_setuid32 +#define SYS_setgid SYS_setgid32 +#define SYS_setfsuid SYS_setfsuid32 +#define SYS_setfsgid SYS_setfsgid32 +#endif + + +/* fixup legacy 32-bit-vs-lfs64 junk */ + +#ifdef SYS_fcntl64 +#undef SYS_fcntl +#define SYS_fcntl SYS_fcntl64 +#endif + +#ifdef SYS_getdents64 +#undef SYS_getdents +#define SYS_getdents SYS_getdents64 +#endif + +#ifdef SYS_ftruncate64 +#undef SYS_ftruncate +#undef SYS_truncate +#define SYS_ftruncate SYS_ftruncate64 +#define SYS_truncate SYS_truncate64 +#endif + +#ifdef SYS_stat64 +#undef SYS_stat +#define SYS_stat SYS_stat64 +#endif + +#ifdef SYS_fstat64 +#undef SYS_fstat +#define SYS_fstat SYS_fstat64 +#endif + +#ifdef SYS_lstat64 +#undef SYS_lstat +#define SYS_lstat SYS_lstat64 +#endif + +#ifdef SYS_statfs64 +#undef SYS_statfs +#define SYS_statfs SYS_statfs64 +#endif + +#ifdef SYS_fstatfs64 +#undef SYS_fstatfs +#define SYS_fstatfs SYS_fstatfs64 +#endif + +#if defined(SYS_newfstatat) +#undef SYS_fstatat +#define SYS_fstatat SYS_newfstatat +#elif defined(SYS_fstatat64) +#undef SYS_fstatat +#define SYS_fstatat SYS_fstatat64 +#endif + +#ifdef SYS_ugetrlimit +#undef SYS_getrlimit +#define SYS_getrlimit SYS_ugetrlimit +#endif + +#ifdef SYS__newselect +#undef SYS_select +#define SYS_select SYS__newselect +#endif + +#ifdef SYS_pread64 +#undef SYS_pread +#undef SYS_pwrite +#define SYS_pread SYS_pread64 +#define SYS_pwrite SYS_pwrite64 +#endif + +#ifdef SYS_fadvise64_64 +#undef SYS_fadvise +#define SYS_fadvise SYS_fadvise64_64 +#elif defined(SYS_fadvise64) +#undef SYS_fadvise +#define SYS_fadvise SYS_fadvise64 +#endif + +#ifdef SYS_sendfile64 +#undef SYS_sendfile +#define SYS_sendfile SYS_sendfile64 +#endif + +#ifndef SYS_timer_settime +#define SYS_timer_settime SYS_timer_settime32 +#endif + +#ifndef SYS_timer_gettime +#define SYS_timer_gettime SYS_timer_gettime32 +#endif + +#ifndef SYS_timerfd_settime +#define SYS_timerfd_settime SYS_timerfd_settime32 +#endif + +#ifndef SYS_timerfd_gettime +#define SYS_timerfd_gettime SYS_timerfd_gettime32 +#endif + +#ifndef SYS_clock_settime +#define SYS_clock_settime SYS_clock_settime32 +#endif + +#ifndef SYS_clock_gettime +#define SYS_clock_gettime SYS_clock_gettime32 +#endif + +#ifndef SYS_clock_getres +#define SYS_clock_getres SYS_clock_getres_time32 +#endif + +#ifndef SYS_clock_nanosleep +#define SYS_clock_nanosleep SYS_clock_nanosleep_time32 +#endif + +#ifndef SYS_gettimeofday +#define SYS_gettimeofday SYS_gettimeofday_time32 +#endif + +#ifndef SYS_settimeofday +#define SYS_settimeofday SYS_settimeofday_time32 +#endif + +/* Ensure that the plain syscall names are defined even for "time64-only" + * archs. These facilitate callers passing null time arguments, and make + * tests for establishing which to use/fallback-to more consistent when + * they do need to be called with time arguments. */ + +#ifndef SYS_clock_gettime +#define SYS_clock_gettime SYS_clock_gettime64 +#endif + +#ifndef SYS_clock_settime +#define SYS_clock_settime SYS_clock_settime64 +#endif + +#ifndef SYS_clock_adjtime +#define SYS_clock_adjtime SYS_clock_adjtime64 +#endif + +#ifndef SYS_clock_getres +#define SYS_clock_getres SYS_clock_getres_time64 +#endif + +#ifndef SYS_clock_nanosleep +#define SYS_clock_nanosleep SYS_clock_nanosleep_time64 +#endif + +#ifndef SYS_timer_gettime +#define SYS_timer_gettime SYS_timer_gettime64 +#endif + +#ifndef SYS_timer_settime +#define SYS_timer_settime SYS_timer_settime64 +#endif + +#ifndef SYS_timerfd_gettime +#define SYS_timerfd_gettime SYS_timerfd_gettime64 +#endif + +#ifndef SYS_timerfd_settime +#define SYS_timerfd_settime SYS_timerfd_settime64 +#endif + +#ifndef SYS_utimensat +#define SYS_utimensat SYS_utimensat_time64 +#endif + +#ifndef SYS_pselect6 +#define SYS_pselect6 SYS_pselect6_time64 +#endif + +#ifndef SYS_ppoll +#define SYS_ppoll SYS_ppoll_time64 +#endif + +#ifndef SYS_recvmmsg +#define SYS_recvmmsg SYS_recvmmsg_time64 +#endif + +#ifndef SYS_mq_timedsend +#define SYS_mq_timedsend SYS_mq_timedsend_time64 +#endif + +#ifndef SYS_mq_timedreceive +#define SYS_mq_timedreceive SYS_mq_timedreceive_time64 +#endif + +/* SYS_semtimedop omitted because SYS_ipc may provide it */ + +#ifndef SYS_rt_sigtimedwait +#define SYS_rt_sigtimedwait SYS_rt_sigtimedwait_time64 +#endif + +#ifndef SYS_futex +#define SYS_futex SYS_futex_time64 +#endif + +#ifndef SYS_sched_rr_get_interval +#define SYS_sched_rr_get_interval SYS_sched_rr_get_interval_time64 +#endif + + + + +/* socketcall calls */ + +#define __SC_socket 1 +#define __SC_bind 2 +#define __SC_connect 3 +#define __SC_listen 4 +#define __SC_accept 5 +#define __SC_getsockname 6 +#define __SC_getpeername 7 +#define __SC_socketpair 8 +#define __SC_send 9 +#define __SC_recv 10 +#define __SC_sendto 11 +#define __SC_recvfrom 12 +#define __SC_shutdown 13 +#define __SC_setsockopt 14 +#define __SC_getsockopt 15 +#define __SC_sendmsg 16 +#define __SC_recvmsg 17 +#define __SC_accept4 18 +#define __SC_recvmmsg 19 +#define __SC_sendmmsg 20 + +#ifndef SO_RCVTIMEO_OLD +#define SO_RCVTIMEO_OLD 20 +#endif +#ifndef SO_SNDTIMEO_OLD +#define SO_SNDTIMEO_OLD 21 +#endif + +#define SO_TIMESTAMP_OLD 29 +#define SO_TIMESTAMPNS_OLD 35 +#define SO_TIMESTAMPING_OLD 37 +#define SCM_TIMESTAMP_OLD SO_TIMESTAMP_OLD +#define SCM_TIMESTAMPNS_OLD SO_TIMESTAMPNS_OLD +#define SCM_TIMESTAMPING_OLD SO_TIMESTAMPING_OLD + +#ifndef SIOCGSTAMP_OLD +#define SIOCGSTAMP_OLD 0x8906 +#endif +#ifndef SIOCGSTAMPNS_OLD +#define SIOCGSTAMPNS_OLD 0x8907 +#endif + +#ifdef SYS_open +#define __sys_open2(x,pn,fl) __syscall2(SYS_open, pn, (fl)|O_LARGEFILE) +#define __sys_open3(x,pn,fl,mo) __syscall3(SYS_open, pn, (fl)|O_LARGEFILE, mo) +#define __sys_open_cp2(x,pn,fl) __syscall_cp2(SYS_open, pn, (fl)|O_LARGEFILE) +#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp3(SYS_open, pn, (fl)|O_LARGEFILE, mo) +#else +#define __sys_open2(x,pn,fl) __syscall3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE) +#define __sys_open3(x,pn,fl,mo) __syscall4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo) +#define __sys_open_cp2(x,pn,fl) __syscall_cp3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE) +#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo) +#endif + +#define __sys_open(...) __SYSCALL_DISP(__sys_open,,__VA_ARGS__) +#define sys_open(...) __syscall_ret(__sys_open(__VA_ARGS__)) + +#define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp,,__VA_ARGS__) +#define sys_open_cp(...) __syscall_ret(__sys_open_cp(__VA_ARGS__)) + +hidden void __procfdname(char __buf[static 15+3*sizeof(int)], unsigned); + +hidden void *__vdsosym(const char *, const char *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/syscall_ret.c b/vendor/modernc.org/libc/musl/src/internal/syscall_ret.c new file mode 100644 index 000000000..a3f471368 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/syscall_ret.c @@ -0,0 +1,11 @@ +#include +#include "syscall.h" + +long __syscall_ret(unsigned long r) +{ + if (r > -4096UL) { + errno = -r; + return -1; + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/internal/vdso.c b/vendor/modernc.org/libc/musl/src/internal/vdso.c new file mode 100644 index 000000000..d46d32281 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/vdso.c @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include +#include "libc.h" +#include "syscall.h" + +#ifdef VDSO_USEFUL + +#if ULONG_MAX == 0xffffffff +typedef Elf32_Ehdr Ehdr; +typedef Elf32_Phdr Phdr; +typedef Elf32_Sym Sym; +typedef Elf32_Verdef Verdef; +typedef Elf32_Verdaux Verdaux; +#else +typedef Elf64_Ehdr Ehdr; +typedef Elf64_Phdr Phdr; +typedef Elf64_Sym Sym; +typedef Elf64_Verdef Verdef; +typedef Elf64_Verdaux Verdaux; +#endif + +static int checkver(Verdef *def, int vsym, const char *vername, char *strings) +{ + vsym &= 0x7fff; + for (;;) { + if (!(def->vd_flags & VER_FLG_BASE) + && (def->vd_ndx & 0x7fff) == vsym) + break; + if (def->vd_next == 0) + return 0; + def = (Verdef *)((char *)def + def->vd_next); + } + Verdaux *aux = (Verdaux *)((char *)def + def->vd_aux); + return !strcmp(vername, strings + aux->vda_name); +} + +#define OK_TYPES (1<e_phoff); + size_t *dynv=0, base=-1; + for (i=0; ie_phnum; i++, ph=(void *)((char *)ph+eh->e_phentsize)) { + if (ph->p_type == PT_LOAD) + base = (size_t)eh + ph->p_offset - ph->p_vaddr; + else if (ph->p_type == PT_DYNAMIC) + dynv = (void *)((char *)eh + ph->p_offset); + } + if (!dynv || base==(size_t)-1) return 0; + + char *strings = 0; + Sym *syms = 0; + Elf_Symndx *hashtab = 0; + uint16_t *versym = 0; + Verdef *verdef = 0; + + for (i=0; dynv[i]; i+=2) { + void *p = (void *)(base + dynv[i+1]); + switch(dynv[i]) { + case DT_STRTAB: strings = p; break; + case DT_SYMTAB: syms = p; break; + case DT_HASH: hashtab = p; break; + case DT_VERSYM: versym = p; break; + case DT_VERDEF: verdef = p; break; + } + } + + if (!strings || !syms || !hashtab) return 0; + if (!verdef) versym = 0; + + for (i=0; i>4) & OK_BINDS)) continue; + if (!syms[i].st_shndx) continue; + if (strcmp(name, strings+syms[i].st_name)) continue; + if (versym && !checkver(verdef, versym[i], vername, strings)) + continue; + return (void *)(base + syms[i].st_value); + } + + return 0; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/internal/version.c b/vendor/modernc.org/libc/musl/src/internal/version.c new file mode 100644 index 000000000..08bbf5b2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/internal/version.c @@ -0,0 +1,4 @@ +#include "version.h" +#include "libc.h" + +const char __libc_version[] = VERSION; diff --git a/vendor/modernc.org/libc/musl/src/ipc/ftok.c b/vendor/modernc.org/libc/musl/src/ipc/ftok.c new file mode 100644 index 000000000..c36b4b600 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/ftok.c @@ -0,0 +1,10 @@ +#include +#include + +key_t ftok(const char *path, int id) +{ + struct stat st; + if (stat(path, &st) < 0) return -1; + + return ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) | ((id & 0xffu) << 24)); +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/ipc.h b/vendor/modernc.org/libc/musl/src/ipc/ipc.h new file mode 100644 index 000000000..746a905c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/ipc.h @@ -0,0 +1,24 @@ +#include "syscall.h" + +#define IPCOP_semop 1 +#define IPCOP_semget 2 +#define IPCOP_semctl 3 +#define IPCOP_semtimedop 4 +#define IPCOP_msgsnd 11 +#define IPCOP_msgrcv 12 +#define IPCOP_msgget 13 +#define IPCOP_msgctl 14 +#define IPCOP_shmat 21 +#define IPCOP_shmdt 22 +#define IPCOP_shmget 23 +#define IPCOP_shmctl 24 + +#ifndef IPC_64 +#define IPC_64 0x100 +#endif + +#define IPC_TIME64 (IPC_STAT & 0x100) + +#define IPC_CMD(cmd) (((cmd) & ~IPC_TIME64) | IPC_64) + +#define IPC_HILO(b,t) ((b)->t = (b)->__##t##_lo | 0LL+(b)->__##t##_hi<<32) diff --git a/vendor/modernc.org/libc/musl/src/ipc/msgctl.c b/vendor/modernc.org/libc/musl/src/ipc/msgctl.c new file mode 100644 index 000000000..9c1144064 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/msgctl.c @@ -0,0 +1,51 @@ +#include +#include +#include "syscall.h" +#include "ipc.h" + +#if __BYTE_ORDER != __BIG_ENDIAN +#undef SYSCALL_IPC_BROKEN_MODE +#endif + +int msgctl(int q, int cmd, struct msqid_ds *buf) +{ +#if IPC_TIME64 + struct msqid_ds out, *orig; + if (cmd&IPC_TIME64) { + out = (struct msqid_ds){0}; + orig = buf; + buf = &out; + } +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + struct msqid_ds tmp; + if (cmd == IPC_SET) { + tmp = *buf; + tmp.msg_perm.mode *= 0x10000U; + buf = &tmp; + } +#endif +#ifndef SYS_ipc + int r = __syscall(SYS_msgctl, q, IPC_CMD(cmd), buf); +#else + int r = __syscall(SYS_ipc, IPCOP_msgctl, q, IPC_CMD(cmd), 0, buf, 0); +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + if (r >= 0) switch (cmd | IPC_TIME64) { + case IPC_STAT: + case MSG_STAT: + case MSG_STAT_ANY: + buf->msg_perm.mode >>= 16; + } +#endif +#if IPC_TIME64 + if (r >= 0 && (cmd&IPC_TIME64)) { + buf = orig; + *buf = out; + IPC_HILO(buf, msg_stime); + IPC_HILO(buf, msg_rtime); + IPC_HILO(buf, msg_ctime); + } +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/msgget.c b/vendor/modernc.org/libc/musl/src/ipc/msgget.c new file mode 100644 index 000000000..30a4b42b8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/msgget.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" +#include "ipc.h" + +int msgget(key_t k, int flag) +{ +#ifndef SYS_ipc + return syscall(SYS_msgget, k, flag); +#else + return syscall(SYS_ipc, IPCOP_msgget, k, flag); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/msgrcv.c b/vendor/modernc.org/libc/musl/src/ipc/msgrcv.c new file mode 100644 index 000000000..9d1034b14 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/msgrcv.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" +#include "ipc.h" + +ssize_t msgrcv(int q, void *m, size_t len, long type, int flag) +{ +#ifndef SYS_ipc + return syscall_cp(SYS_msgrcv, q, m, len, type, flag); +#else + return syscall_cp(SYS_ipc, IPCOP_msgrcv, q, len, flag, ((long[]){ (long)m, type })); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/msgsnd.c b/vendor/modernc.org/libc/musl/src/ipc/msgsnd.c new file mode 100644 index 000000000..99bb17e94 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/msgsnd.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" +#include "ipc.h" + +int msgsnd(int q, const void *m, size_t len, int flag) +{ +#ifndef SYS_ipc + return syscall_cp(SYS_msgsnd, q, m, len, flag); +#else + return syscall_cp(SYS_ipc, IPCOP_msgsnd, q, len, flag, m); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/semctl.c b/vendor/modernc.org/libc/musl/src/ipc/semctl.c new file mode 100644 index 000000000..bbb97d7ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/semctl.c @@ -0,0 +1,69 @@ +#include +#include +#include +#include "syscall.h" +#include "ipc.h" + +#if __BYTE_ORDER != __BIG_ENDIAN +#undef SYSCALL_IPC_BROKEN_MODE +#endif + +union semun { + int val; + struct semid_ds *buf; + unsigned short *array; +}; + +int semctl(int id, int num, int cmd, ...) +{ + union semun arg = {0}; + va_list ap; + switch (cmd & ~IPC_TIME64) { + case SETVAL: case GETALL: case SETALL: case IPC_SET: + case IPC_INFO: case SEM_INFO: + case IPC_STAT & ~IPC_TIME64: + case SEM_STAT & ~IPC_TIME64: + case SEM_STAT_ANY & ~IPC_TIME64: + va_start(ap, cmd); + arg = va_arg(ap, union semun); + va_end(ap); + } +#if IPC_TIME64 + struct semid_ds out, *orig; + if (cmd&IPC_TIME64) { + out = (struct semid_ds){0}; + orig = arg.buf; + arg.buf = &out; + } +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + struct semid_ds tmp; + if (cmd == IPC_SET) { + tmp = *arg.buf; + tmp.sem_perm.mode *= 0x10000U; + arg.buf = &tmp; + } +#endif +#ifndef SYS_ipc + int r = __syscall(SYS_semctl, id, num, IPC_CMD(cmd), arg.buf); +#else + int r = __syscall(SYS_ipc, IPCOP_semctl, id, num, IPC_CMD(cmd), &arg.buf); +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + if (r >= 0) switch (cmd | IPC_TIME64) { + case IPC_STAT: + case SEM_STAT: + case SEM_STAT_ANY: + arg.buf->sem_perm.mode >>= 16; + } +#endif +#if IPC_TIME64 + if (r >= 0 && (cmd&IPC_TIME64)) { + arg.buf = orig; + *arg.buf = out; + IPC_HILO(arg.buf, sem_otime); + IPC_HILO(arg.buf, sem_ctime); + } +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/semget.c b/vendor/modernc.org/libc/musl/src/ipc/semget.c new file mode 100644 index 000000000..2cdf626b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/semget.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include "syscall.h" +#include "ipc.h" + +int semget(key_t key, int n, int fl) +{ + /* The kernel uses the wrong type for the sem_nsems member + * of struct semid_ds, and thus might not check that the + * n fits in the correct (per POSIX) userspace type, so + * we have to check here. */ + if (n > USHRT_MAX) return __syscall_ret(-EINVAL); +#ifndef SYS_ipc + return syscall(SYS_semget, key, n, fl); +#else + return syscall(SYS_ipc, IPCOP_semget, key, n, fl); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/semop.c b/vendor/modernc.org/libc/musl/src/ipc/semop.c new file mode 100644 index 000000000..5f0c7deaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/semop.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" +#include "ipc.h" + +int semop(int id, struct sembuf *buf, size_t n) +{ +#ifndef SYS_ipc + return syscall(SYS_semop, id, buf, n); +#else + return syscall(SYS_ipc, IPCOP_semop, id, n, 0, buf); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/semtimedop.c b/vendor/modernc.org/libc/musl/src/ipc/semtimedop.c new file mode 100644 index 000000000..1632e7b03 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/semtimedop.c @@ -0,0 +1,35 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" +#include "ipc.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +#if !defined(SYS_semtimedop) && !defined(SYS_ipc) +#define NO_TIME32 1 +#else +#define NO_TIME32 0 +#endif + +int semtimedop(int id, struct sembuf *buf, size_t n, const struct timespec *ts) +{ +#ifdef SYS_semtimedop_time64 + time_t s = ts ? ts->tv_sec : 0; + long ns = ts ? ts->tv_nsec : 0; + int r = -ENOSYS; + if (NO_TIME32 || !IS32BIT(s)) + r = __syscall(SYS_semtimedop_time64, id, buf, n, + ts ? ((long long[]){s, ns}) : 0); + if (NO_TIME32 || r!=-ENOSYS) return __syscall_ret(r); + ts = ts ? (void *)(long[]){CLAMP(s), ns} : 0; +#endif +#if defined(SYS_ipc) + return syscall(SYS_ipc, IPCOP_semtimedop, id, n, 0, buf, ts); +#elif defined(SYS_semtimedop) + return syscall(SYS_semtimedop, id, buf, n, ts); +#else + return __syscall_ret(-ENOSYS); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/shmat.c b/vendor/modernc.org/libc/musl/src/ipc/shmat.c new file mode 100644 index 000000000..8c7407d13 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/shmat.c @@ -0,0 +1,17 @@ +#include +#include "syscall.h" +#include "ipc.h" + +#ifndef SYS_ipc +void *shmat(int id, const void *addr, int flag) +{ + return (void *)syscall(SYS_shmat, id, addr, flag); +} +#else +void *shmat(int id, const void *addr, int flag) +{ + unsigned long ret; + ret = syscall(SYS_ipc, IPCOP_shmat, id, flag, &addr, addr); + return (ret > -(unsigned long)SHMLBA) ? (void *)ret : (void *)addr; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/ipc/shmctl.c b/vendor/modernc.org/libc/musl/src/ipc/shmctl.c new file mode 100644 index 000000000..1c9f78c2f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/shmctl.c @@ -0,0 +1,51 @@ +#include +#include +#include "syscall.h" +#include "ipc.h" + +#if __BYTE_ORDER != __BIG_ENDIAN +#undef SYSCALL_IPC_BROKEN_MODE +#endif + +int shmctl(int id, int cmd, struct shmid_ds *buf) +{ +#if IPC_TIME64 + struct shmid_ds out, *orig; + if (cmd&IPC_TIME64) { + out = (struct shmid_ds){0}; + orig = buf; + buf = &out; + } +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + struct shmid_ds tmp; + if (cmd == IPC_SET) { + tmp = *buf; + tmp.shm_perm.mode *= 0x10000U; + buf = &tmp; + } +#endif +#ifndef SYS_ipc + int r = __syscall(SYS_shmctl, id, IPC_CMD(cmd), buf); +#else + int r = __syscall(SYS_ipc, IPCOP_shmctl, id, IPC_CMD(cmd), 0, buf, 0); +#endif +#ifdef SYSCALL_IPC_BROKEN_MODE + if (r >= 0) switch (cmd | IPC_TIME64) { + case IPC_STAT: + case SHM_STAT: + case SHM_STAT_ANY: + buf->shm_perm.mode >>= 16; + } +#endif +#if IPC_TIME64 + if (r >= 0 && (cmd&IPC_TIME64)) { + buf = orig; + *buf = out; + IPC_HILO(buf, shm_atime); + IPC_HILO(buf, shm_dtime); + IPC_HILO(buf, shm_ctime); + } +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/shmdt.c b/vendor/modernc.org/libc/musl/src/ipc/shmdt.c new file mode 100644 index 000000000..572381378 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/shmdt.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" +#include "ipc.h" + +int shmdt(const void *addr) +{ +#ifndef SYS_ipc + return syscall(SYS_shmdt, addr); +#else + return syscall(SYS_ipc, IPCOP_shmdt, 0, 0, 0, addr); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ipc/shmget.c b/vendor/modernc.org/libc/musl/src/ipc/shmget.c new file mode 100644 index 000000000..7521b5fa3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ipc/shmget.c @@ -0,0 +1,14 @@ +#include +#include +#include "syscall.h" +#include "ipc.h" + +int shmget(key_t key, size_t size, int flag) +{ + if (size > PTRDIFF_MAX) size = SIZE_MAX; +#ifndef SYS_ipc + return syscall(SYS_shmget, key, size, flag); +#else + return syscall(SYS_ipc, IPCOP_shmget, key, size, flag); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/ldso/__dlsym.c b/vendor/modernc.org/libc/musl/src/ldso/__dlsym.c new file mode 100644 index 000000000..0384f97e9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/__dlsym.c @@ -0,0 +1,14 @@ +#include +#include "dynlink.h" + +static void *stub_dlsym(void *restrict p, const char *restrict s, void *restrict ra) +{ + __dl_seterr("Symbol not found: %s", s); + return 0; +} + +weak_alias(stub_dlsym, __dlsym); + +#if _REDIR_TIME64 +weak_alias(stub_dlsym, __dlsym_redir_time64); +#endif diff --git a/vendor/modernc.org/libc/musl/src/ldso/arm/find_exidx.c b/vendor/modernc.org/libc/musl/src/ldso/arm/find_exidx.c new file mode 100644 index 000000000..77c4472bf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/arm/find_exidx.c @@ -0,0 +1,42 @@ +#define _GNU_SOURCE +#include +#include + +struct find_exidx_data { + uintptr_t pc, exidx_start; + int exidx_len; +}; + +static int find_exidx(struct dl_phdr_info *info, size_t size, void *ptr) +{ + struct find_exidx_data *data = ptr; + const ElfW(Phdr) *phdr = info->dlpi_phdr; + uintptr_t addr, exidx_start = 0; + int i, match = 0, exidx_len = 0; + + for (i = info->dlpi_phnum; i > 0; i--, phdr++) { + addr = info->dlpi_addr + phdr->p_vaddr; + switch (phdr->p_type) { + case PT_LOAD: + match |= data->pc >= addr && data->pc < addr + phdr->p_memsz; + break; + case PT_ARM_EXIDX: + exidx_start = addr; + exidx_len = phdr->p_memsz; + break; + } + } + data->exidx_start = exidx_start; + data->exidx_len = exidx_len; + return match; +} + +uintptr_t __gnu_Unwind_Find_exidx(uintptr_t pc, int *pcount) +{ + struct find_exidx_data data; + data.pc = pc; + if (dl_iterate_phdr(find_exidx, &data) <= 0) + return 0; + *pcount = data.exidx_len / 8; + return data.exidx_start; +} diff --git a/vendor/modernc.org/libc/musl/src/ldso/dl_iterate_phdr.c b/vendor/modernc.org/libc/musl/src/ldso/dl_iterate_phdr.c new file mode 100644 index 000000000..86c87ef83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dl_iterate_phdr.c @@ -0,0 +1,46 @@ +#include +#include +#include "libc.h" + +#define AUX_CNT 38 + +extern weak hidden const size_t _DYNAMIC[]; + +static int static_dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data) +{ + unsigned char *p; + ElfW(Phdr) *phdr, *tls_phdr=0; + size_t base = 0; + size_t n; + struct dl_phdr_info info; + size_t i, aux[AUX_CNT] = {0}; + + for (i=0; libc.auxv[i]; i+=2) + if (libc.auxv[i]p_type == PT_PHDR) + base = aux[AT_PHDR] - phdr->p_vaddr; + if (phdr->p_type == PT_DYNAMIC && _DYNAMIC) + base = (size_t)_DYNAMIC - phdr->p_vaddr; + if (phdr->p_type == PT_TLS) + tls_phdr = phdr; + } + info.dlpi_addr = base; + info.dlpi_name = "/proc/self/exe"; + info.dlpi_phdr = (void *)aux[AT_PHDR]; + info.dlpi_phnum = aux[AT_PHNUM]; + info.dlpi_adds = 0; + info.dlpi_subs = 0; + if (tls_phdr) { + info.dlpi_tls_modid = 1; + info.dlpi_tls_data = (void *)(base + tls_phdr->p_vaddr); + } else { + info.dlpi_tls_modid = 0; + info.dlpi_tls_data = 0; + } + return (callback)(&info, sizeof (info), data); +} + +weak_alias(static_dl_iterate_phdr, dl_iterate_phdr); diff --git a/vendor/modernc.org/libc/musl/src/ldso/dladdr.c b/vendor/modernc.org/libc/musl/src/ldso/dladdr.c new file mode 100644 index 000000000..e5c80206a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dladdr.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include + +static int stub_dladdr(const void *addr, Dl_info *info) +{ + return 0; +} + +weak_alias(stub_dladdr, dladdr); diff --git a/vendor/modernc.org/libc/musl/src/ldso/dlclose.c b/vendor/modernc.org/libc/musl/src/ldso/dlclose.c new file mode 100644 index 000000000..e437422a6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dlclose.c @@ -0,0 +1,7 @@ +#include +#include "dynlink.h" + +int dlclose(void *p) +{ + return __dl_invalid_handle(p); +} diff --git a/vendor/modernc.org/libc/musl/src/ldso/dlerror.c b/vendor/modernc.org/libc/musl/src/ldso/dlerror.c new file mode 100644 index 000000000..3fcc77795 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dlerror.c @@ -0,0 +1,77 @@ +#include +#include +#include +#include "pthread_impl.h" +#include "dynlink.h" +#include "lock.h" + +char *dlerror() +{ + pthread_t self = __pthread_self(); + if (!self->dlerror_flag) return 0; + self->dlerror_flag = 0; + char *s = self->dlerror_buf; + if (s == (void *)-1) + return "Dynamic linker failed to allocate memory for error message"; + else + return s; +} + +static volatile int freebuf_queue_lock[1]; +static void **freebuf_queue; + +void __dl_thread_cleanup(void) +{ + pthread_t self = __pthread_self(); + if (self->dlerror_buf && self->dlerror_buf != (void *)-1) { + LOCK(freebuf_queue_lock); + void **p = (void **)self->dlerror_buf; + *p = freebuf_queue; + freebuf_queue = p; + UNLOCK(freebuf_queue_lock); + } +} + +hidden void __dl_vseterr(const char *fmt, va_list ap) +{ + LOCK(freebuf_queue_lock); + while (freebuf_queue) { + void **p = freebuf_queue; + freebuf_queue = *p; + free(p); + } + UNLOCK(freebuf_queue_lock); + + va_list ap2; + va_copy(ap2, ap); + pthread_t self = __pthread_self(); + if (self->dlerror_buf != (void *)-1) + free(self->dlerror_buf); + size_t len = vsnprintf(0, 0, fmt, ap2); + if (len < sizeof(void *)) len = sizeof(void *); + va_end(ap2); + char *buf = malloc(len+1); + if (buf) { + vsnprintf(buf, len+1, fmt, ap); + } else { + buf = (void *)-1; + } + self->dlerror_buf = buf; + self->dlerror_flag = 1; +} + +hidden void __dl_seterr(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + __dl_vseterr(fmt, ap); + va_end(ap); +} + +static int stub_invalid_handle(void *h) +{ + __dl_seterr("Invalid library handle %p", (void *)h); + return 1; +} + +weak_alias(stub_invalid_handle, __dl_invalid_handle); diff --git a/vendor/modernc.org/libc/musl/src/ldso/dlinfo.c b/vendor/modernc.org/libc/musl/src/ldso/dlinfo.c new file mode 100644 index 000000000..b55f5fe6c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dlinfo.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include "dynlink.h" + +int dlinfo(void *dso, int req, void *res) +{ + if (__dl_invalid_handle(dso)) return -1; + if (req != RTLD_DI_LINKMAP) { + __dl_seterr("Unsupported request %d", req); + return -1; + } + *(struct link_map **)res = dso; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/ldso/dlopen.c b/vendor/modernc.org/libc/musl/src/ldso/dlopen.c new file mode 100644 index 000000000..69372a220 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dlopen.c @@ -0,0 +1,10 @@ +#include +#include "dynlink.h" + +static void *stub_dlopen(const char *file, int mode) +{ + __dl_seterr("Dynamic loading not supported"); + return 0; +} + +weak_alias(stub_dlopen, dlopen); diff --git a/vendor/modernc.org/libc/musl/src/ldso/dlsym.c b/vendor/modernc.org/libc/musl/src/ldso/dlsym.c new file mode 100644 index 000000000..65eb27659 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/dlsym.c @@ -0,0 +1,7 @@ +#include +#include "dynlink.h" + +void *dlsym(void *restrict p, const char *restrict s) +{ + return __dlsym(p, s, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/ldso/tlsdesc.c b/vendor/modernc.org/libc/musl/src/ldso/tlsdesc.c new file mode 100644 index 000000000..49a1f18c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/ldso/tlsdesc.c @@ -0,0 +1,9 @@ +#include +#include + +ptrdiff_t __tlsdesc_static() +{ + return 0; +} + +weak_alias(__tlsdesc_static, __tlsdesc_dynamic); diff --git a/vendor/modernc.org/libc/musl/src/legacy/cuserid.c b/vendor/modernc.org/libc/musl/src/legacy/cuserid.c new file mode 100644 index 000000000..4e78798de --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/cuserid.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include +#include + +char *cuserid(char *buf) +{ + struct passwd pw, *ppw; + long pwb[256]; + if (getpwuid_r(geteuid(), &pw, (void *)pwb, sizeof pwb, &ppw)) + return 0; + snprintf(buf, L_cuserid, "%s", pw.pw_name); + return buf; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/daemon.c b/vendor/modernc.org/libc/musl/src/legacy/daemon.c new file mode 100644 index 000000000..1568b1dcb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/daemon.c @@ -0,0 +1,33 @@ +#define _GNU_SOURCE +#include +#include + +int daemon(int nochdir, int noclose) +{ + if (!nochdir && chdir("/")) + return -1; + if (!noclose) { + int fd, failed = 0; + if ((fd = open("/dev/null", O_RDWR)) < 0) return -1; + if (dup2(fd, 0) < 0 || dup2(fd, 1) < 0 || dup2(fd, 2) < 0) + failed++; + if (fd > 2) close(fd); + if (failed) return -1; + } + + switch(fork()) { + case 0: break; + case -1: return -1; + default: _exit(0); + } + + if (setsid() < 0) return -1; + + switch(fork()) { + case 0: break; + case -1: return -1; + default: _exit(0); + } + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/err.c b/vendor/modernc.org/libc/musl/src/legacy/err.c new file mode 100644 index 000000000..0d6ab5242 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/err.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +extern char *__progname; + +void vwarn(const char *fmt, va_list ap) +{ + fprintf (stderr, "%s: ", __progname); + if (fmt) { + vfprintf(stderr, fmt, ap); + fputs (": ", stderr); + } + perror(0); +} + +void vwarnx(const char *fmt, va_list ap) +{ + fprintf (stderr, "%s: ", __progname); + if (fmt) vfprintf(stderr, fmt, ap); + putc('\n', stderr); +} + +_Noreturn void verr(int status, const char *fmt, va_list ap) +{ + vwarn(fmt, ap); + exit(status); +} + +_Noreturn void verrx(int status, const char *fmt, va_list ap) +{ + vwarnx(fmt, ap); + exit(status); +} + +void warn(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vwarn(fmt, ap); + va_end(ap); +} + +void warnx(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vwarnx(fmt, ap); + va_end(ap); +} + +_Noreturn void err(int status, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + verr(status, fmt, ap); + va_end(ap); +} + +_Noreturn void errx(int status, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + verrx(status, fmt, ap); + va_end(ap); +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/euidaccess.c b/vendor/modernc.org/libc/musl/src/legacy/euidaccess.c new file mode 100644 index 000000000..6e1f39855 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/euidaccess.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include +#include + +int euidaccess(const char *filename, int amode) +{ + return faccessat(AT_FDCWD, filename, amode, AT_EACCESS); +} + +weak_alias(euidaccess, eaccess); diff --git a/vendor/modernc.org/libc/musl/src/legacy/ftw.c b/vendor/modernc.org/libc/musl/src/legacy/ftw.c new file mode 100644 index 000000000..506bd29ce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/ftw.c @@ -0,0 +1,11 @@ +#include + +int ftw(const char *path, int (*fn)(const char *, const struct stat *, int), int fd_limit) +{ + /* The following cast assumes that calling a function with one + * argument more than it needs behaves as expected. This is + * actually undefined, but works on all real-world machines. */ + return nftw(path, (int (*)())fn, fd_limit, FTW_PHYS); +} + +weak_alias(ftw, ftw64); diff --git a/vendor/modernc.org/libc/musl/src/legacy/futimes.c b/vendor/modernc.org/libc/musl/src/legacy/futimes.c new file mode 100644 index 000000000..1c19eb1fa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/futimes.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include + +int futimes(int fd, const struct timeval tv[2]) +{ + struct timespec times[2]; + if (!tv) return futimens(fd, 0); + times[0].tv_sec = tv[0].tv_sec; + times[0].tv_nsec = tv[0].tv_usec * 1000; + times[1].tv_sec = tv[1].tv_sec; + times[1].tv_nsec = tv[1].tv_usec * 1000; + return futimens(fd, times); +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/getdtablesize.c b/vendor/modernc.org/libc/musl/src/legacy/getdtablesize.c new file mode 100644 index 000000000..b30c1933a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/getdtablesize.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include +#include + +int getdtablesize(void) +{ + struct rlimit rl; + getrlimit(RLIMIT_NOFILE, &rl); + return rl.rlim_cur < INT_MAX ? rl.rlim_cur : INT_MAX; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/getloadavg.c b/vendor/modernc.org/libc/musl/src/legacy/getloadavg.c new file mode 100644 index 000000000..ff06de0f8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/getloadavg.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include + +int getloadavg(double *a, int n) +{ + struct sysinfo si; + if (n <= 0) return n ? -1 : 0; + sysinfo(&si); + if (n > 3) n = 3; + for (int i=0; i +#include "libc.h" + +int getpagesize(void) +{ + return PAGE_SIZE; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/getpass.c b/vendor/modernc.org/libc/musl/src/legacy/getpass.c new file mode 100644 index 000000000..d51286c0b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/getpass.c @@ -0,0 +1,40 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +char *getpass(const char *prompt) +{ + int fd; + struct termios s, t; + ssize_t l; + static char password[128]; + + if ((fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_CLOEXEC)) < 0) return 0; + + tcgetattr(fd, &t); + s = t; + t.c_lflag &= ~(ECHO|ISIG); + t.c_lflag |= ICANON; + t.c_iflag &= ~(INLCR|IGNCR); + t.c_iflag |= ICRNL; + tcsetattr(fd, TCSAFLUSH, &t); + tcdrain(fd); + + dprintf(fd, "%s", prompt); + + l = read(fd, password, sizeof password); + if (l >= 0) { + if (l > 0 && password[l-1] == '\n' || l==sizeof password) l--; + password[l] = 0; + } + + tcsetattr(fd, TCSAFLUSH, &s); + + dprintf(fd, "\n"); + close(fd); + + return l<0 ? 0 : password; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/getusershell.c b/vendor/modernc.org/libc/musl/src/legacy/getusershell.c new file mode 100644 index 000000000..5fecdec2e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/getusershell.c @@ -0,0 +1,32 @@ +#define _GNU_SOURCE +#include +#include + +static const char defshells[] = "/bin/sh\n/bin/csh\n"; + +static char *line; +static size_t linesize; +static FILE *f; + +void endusershell(void) +{ + if (f) fclose(f); + f = 0; +} + +void setusershell(void) +{ + if (!f) f = fopen("/etc/shells", "rbe"); + if (!f) f = fmemopen((void *)defshells, sizeof defshells - 1, "rb"); +} + +char *getusershell(void) +{ + ssize_t l; + if (!f) setusershell(); + if (!f) return 0; + l = getline(&line, &linesize, f); + if (l <= 0) return 0; + if (line[l-1]=='\n') line[l-1]=0; + return line; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/isastream.c b/vendor/modernc.org/libc/musl/src/legacy/isastream.c new file mode 100644 index 000000000..4dafdb082 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/isastream.c @@ -0,0 +1,7 @@ +#include +#include + +int isastream(int fd) +{ + return fcntl(fd, F_GETFD) < 0 ? -1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/lutimes.c b/vendor/modernc.org/libc/musl/src/legacy/lutimes.c new file mode 100644 index 000000000..2e5502d1e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/lutimes.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include +#include + +int lutimes(const char *filename, const struct timeval tv[2]) +{ + struct timespec times[2]; + times[0].tv_sec = tv[0].tv_sec; + times[0].tv_nsec = tv[0].tv_usec * 1000; + times[1].tv_sec = tv[1].tv_sec; + times[1].tv_nsec = tv[1].tv_usec * 1000; + return utimensat(AT_FDCWD, filename, times, AT_SYMLINK_NOFOLLOW); +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/ulimit.c b/vendor/modernc.org/libc/musl/src/legacy/ulimit.c new file mode 100644 index 000000000..1f59e8e61 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/ulimit.c @@ -0,0 +1,19 @@ +#include +#include +#include + +long ulimit(int cmd, ...) +{ + struct rlimit rl; + getrlimit(RLIMIT_FSIZE, &rl); + if (cmd == UL_SETFSIZE) { + long val; + va_list ap; + va_start(ap, cmd); + val = va_arg(ap, long); + va_end(ap); + rl.rlim_cur = 512ULL * val; + if (setrlimit(RLIMIT_FSIZE, &rl)) return -1; + } + return rl.rlim_cur / 512; +} diff --git a/vendor/modernc.org/libc/musl/src/legacy/utmpx.c b/vendor/modernc.org/libc/musl/src/legacy/utmpx.c new file mode 100644 index 000000000..7aa65da33 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/utmpx.c @@ -0,0 +1,52 @@ +#define _GNU_SOURCE +#include +#include +#include + +void endutxent(void) +{ +} + +void setutxent(void) +{ +} + +struct utmpx *getutxent(void) +{ + return NULL; +} + +struct utmpx *getutxid(const struct utmpx *ut) +{ + return NULL; +} + +struct utmpx *getutxline(const struct utmpx *ut) +{ + return NULL; +} + +struct utmpx *pututxline(const struct utmpx *ut) +{ + return NULL; +} + +void updwtmpx(const char *f, const struct utmpx *u) +{ +} + +static int __utmpxname(const char *f) +{ + errno = ENOTSUP; + return -1; +} + +weak_alias(endutxent, endutent); +weak_alias(setutxent, setutent); +weak_alias(getutxent, getutent); +weak_alias(getutxid, getutid); +weak_alias(getutxline, getutline); +weak_alias(pututxline, pututline); +weak_alias(updwtmpx, updwtmp); +weak_alias(__utmpxname, utmpname); +weak_alias(__utmpxname, utmpxname); diff --git a/vendor/modernc.org/libc/musl/src/legacy/valloc.c b/vendor/modernc.org/libc/musl/src/legacy/valloc.c new file mode 100644 index 000000000..5af2256a4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/legacy/valloc.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include "libc.h" + +void *valloc(size_t size) +{ + return memalign(PAGE_SIZE, size); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/adjtime.c b/vendor/modernc.org/libc/musl/src/linux/adjtime.c new file mode 100644 index 000000000..5a707f2f2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/adjtime.c @@ -0,0 +1,27 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int adjtime(const struct timeval *in, struct timeval *out) +{ + struct timex tx = { 0 }; + if (in) { + if (in->tv_sec > 1000 || in->tv_usec > 1000000000) { + errno = EINVAL; + return -1; + } + tx.offset = in->tv_sec*1000000 + in->tv_usec; + tx.modes = ADJ_OFFSET_SINGLESHOT; + } + if (adjtimex(&tx) < 0) return -1; + if (out) { + out->tv_sec = tx.offset / 1000000; + if ((out->tv_usec = tx.offset % 1000000) < 0) { + out->tv_sec--; + out->tv_usec += 1000000; + } + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/linux/adjtimex.c b/vendor/modernc.org/libc/musl/src/linux/adjtimex.c new file mode 100644 index 000000000..e9d727cf3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/adjtimex.c @@ -0,0 +1,7 @@ +#include +#include + +int adjtimex(struct timex *tx) +{ + return clock_adjtime(CLOCK_REALTIME, tx); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/arch_prctl.c b/vendor/modernc.org/libc/musl/src/linux/arch_prctl.c new file mode 100644 index 000000000..94603658a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/arch_prctl.c @@ -0,0 +1,7 @@ +#include "syscall.h" +#ifdef SYS_arch_prctl +int arch_prctl(int code, unsigned long addr) +{ + return syscall(SYS_arch_prctl, code, addr); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/linux/brk.c b/vendor/modernc.org/libc/musl/src/linux/brk.c new file mode 100644 index 000000000..a6173e07f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/brk.c @@ -0,0 +1,9 @@ +#define _BSD_SOURCE +#include +#include +#include "syscall.h" + +int brk(void *end) +{ + return __syscall_ret(-ENOMEM); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/cache.c b/vendor/modernc.org/libc/musl/src/linux/cache.c new file mode 100644 index 000000000..0eb051c2d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/cache.c @@ -0,0 +1,50 @@ +#include +#include "syscall.h" +#include "atomic.h" + +#ifdef SYS_cacheflush +int _flush_cache(void *addr, int len, int op) +{ + return syscall(SYS_cacheflush, addr, len, op); +} +weak_alias(_flush_cache, cacheflush); +#endif + +#ifdef SYS_cachectl +int __cachectl(void *addr, int len, int op) +{ + return syscall(SYS_cachectl, addr, len, op); +} +weak_alias(__cachectl, cachectl); +#endif + +#ifdef SYS_riscv_flush_icache + +#define VDSO_FLUSH_ICACHE_SYM "__vdso_flush_icache" +#define VDSO_FLUSH_ICACHE_VER "LINUX_4.5" + +static void *volatile vdso_func; + +static int flush_icache_init(void *start, void *end, unsigned long int flags) +{ + void *p = __vdsosym(VDSO_FLUSH_ICACHE_VER, VDSO_FLUSH_ICACHE_SYM); + int (*f)(void *, void *, unsigned long int) = + (int (*)(void *, void *, unsigned long int))p; + a_cas_p(&vdso_func, (void *)flush_icache_init, p); + return f ? f(start, end, flags) : -ENOSYS; +} + +static void *volatile vdso_func = (void *)flush_icache_init; + +int __riscv_flush_icache(void *start, void *end, unsigned long int flags) +{ + int (*f)(void *, void *, unsigned long int) = + (int (*)(void *, void *, unsigned long int))vdso_func; + if (f) { + int r = f(start, end, flags); + if (!r) return r; + if (r != -ENOSYS) return __syscall_ret(r); + } +} +weak_alias(__riscv_flush_icache, riscv_flush_icache); +#endif diff --git a/vendor/modernc.org/libc/musl/src/linux/cap.c b/vendor/modernc.org/libc/musl/src/linux/cap.c new file mode 100644 index 000000000..8d035e07a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/cap.c @@ -0,0 +1,11 @@ +#include "syscall.h" + +int capset(void *a, void *b) +{ + return syscall(SYS_capset, a, b); +} + +int capget(void *a, void *b) +{ + return syscall(SYS_capget, a, b); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/chroot.c b/vendor/modernc.org/libc/musl/src/linux/chroot.c new file mode 100644 index 000000000..0e69f145d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/chroot.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int chroot(const char *path) +{ + return syscall(SYS_chroot, path); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/clock_adjtime.c b/vendor/modernc.org/libc/musl/src/linux/clock_adjtime.c new file mode 100644 index 000000000..d4d03d24d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/clock_adjtime.c @@ -0,0 +1,151 @@ +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) + +struct ktimex64 { + unsigned modes; + int :32; + long long offset, freq, maxerror, esterror; + int status; + int :32; + long long constant, precision, tolerance; + long long time_sec, time_usec; + long long tick, ppsfreq, jitter; + int shift; + int :32; + long long stabil, jitcnt, calcnt, errcnt, stbcnt; + int tai; + int __padding[11]; +}; + +struct ktimex { + unsigned modes; + long offset, freq, maxerror, esterror; + int status; + long constant, precision, tolerance; + long time_sec, time_usec; + long tick, ppsfreq, jitter; + int shift; + long stabil, jitcnt, calcnt, errcnt, stbcnt; + int tai; + int __padding[11]; +}; + +int clock_adjtime (clockid_t clock_id, struct timex *utx) +{ + int r = -ENOSYS; +#ifdef SYS_clock_adjtime64 + struct ktimex64 ktx = { + .modes = utx->modes, + .offset = utx->offset, + .freq = utx->freq, + .maxerror = utx->maxerror, + .esterror = utx->esterror, + .status = utx->status, + .constant = utx->constant, + .precision = utx->precision, + .tolerance = utx->tolerance, + .time_sec = utx->time.tv_sec, + .time_usec = utx->time.tv_usec, + .tick = utx->tick, + .ppsfreq = utx->ppsfreq, + .jitter = utx->jitter, + .shift = utx->shift, + .stabil = utx->stabil, + .jitcnt = utx->jitcnt, + .calcnt = utx->calcnt, + .errcnt = utx->errcnt, + .stbcnt = utx->stbcnt, + .tai = utx->tai, + }; + r = __syscall(SYS_clock_adjtime64, clock_id, &ktx); + if (r>=0) { + utx->modes = ktx.modes; + utx->offset = ktx.offset; + utx->freq = ktx.freq; + utx->maxerror = ktx.maxerror; + utx->esterror = ktx.esterror; + utx->status = ktx.status; + utx->constant = ktx.constant; + utx->precision = ktx.precision; + utx->tolerance = ktx.tolerance; + utx->time.tv_sec = ktx.time_sec; + utx->time.tv_usec = ktx.time_usec; + utx->tick = ktx.tick; + utx->ppsfreq = ktx.ppsfreq; + utx->jitter = ktx.jitter; + utx->shift = ktx.shift; + utx->stabil = ktx.stabil; + utx->jitcnt = ktx.jitcnt; + utx->calcnt = ktx.calcnt; + utx->errcnt = ktx.errcnt; + utx->stbcnt = ktx.stbcnt; + utx->tai = ktx.tai; + } + if (SYS_clock_adjtime == SYS_clock_adjtime64 || r!=-ENOSYS) + return __syscall_ret(r); + if ((utx->modes & ADJ_SETOFFSET) && !IS32BIT(utx->time.tv_sec)) + return __syscall_ret(-ENOTSUP); +#endif + if (sizeof(time_t) > sizeof(long)) { + struct ktimex ktx = { + .modes = utx->modes, + .offset = utx->offset, + .freq = utx->freq, + .maxerror = utx->maxerror, + .esterror = utx->esterror, + .status = utx->status, + .constant = utx->constant, + .precision = utx->precision, + .tolerance = utx->tolerance, + .time_sec = utx->time.tv_sec, + .time_usec = utx->time.tv_usec, + .tick = utx->tick, + .ppsfreq = utx->ppsfreq, + .jitter = utx->jitter, + .shift = utx->shift, + .stabil = utx->stabil, + .jitcnt = utx->jitcnt, + .calcnt = utx->calcnt, + .errcnt = utx->errcnt, + .stbcnt = utx->stbcnt, + .tai = utx->tai, + }; +#ifdef SYS_adjtimex + if (clock_id==CLOCK_REALTIME) r = __syscall(SYS_adjtimex, &ktx); + else +#endif + r = __syscall(SYS_clock_adjtime, clock_id, &ktx); + if (r>=0) { + utx->modes = ktx.modes; + utx->offset = ktx.offset; + utx->freq = ktx.freq; + utx->maxerror = ktx.maxerror; + utx->esterror = ktx.esterror; + utx->status = ktx.status; + utx->constant = ktx.constant; + utx->precision = ktx.precision; + utx->tolerance = ktx.tolerance; + utx->time.tv_sec = ktx.time_sec; + utx->time.tv_usec = ktx.time_usec; + utx->tick = ktx.tick; + utx->ppsfreq = ktx.ppsfreq; + utx->jitter = ktx.jitter; + utx->shift = ktx.shift; + utx->stabil = ktx.stabil; + utx->jitcnt = ktx.jitcnt; + utx->calcnt = ktx.calcnt; + utx->errcnt = ktx.errcnt; + utx->stbcnt = ktx.stbcnt; + utx->tai = ktx.tai; + } + return __syscall_ret(r); + } +#ifdef SYS_adjtimex + if (clock_id==CLOCK_REALTIME) return syscall(SYS_adjtimex, utx); +#endif + return syscall(SYS_clock_adjtime, clock_id, utx); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/clone.c b/vendor/modernc.org/libc/musl/src/linux/clone.c new file mode 100644 index 000000000..8c1af7d3d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/clone.c @@ -0,0 +1,21 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "pthread_impl.h" +#include "syscall.h" + +int clone(int (*func)(void *), void *stack, int flags, void *arg, ...) +{ + va_list ap; + pid_t *ptid, *ctid; + void *tls; + + va_start(ap, arg); + ptid = va_arg(ap, pid_t *); + tls = va_arg(ap, void *); + ctid = va_arg(ap, pid_t *); + va_end(ap); + + return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid)); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/copy_file_range.c b/vendor/modernc.org/libc/musl/src/linux/copy_file_range.c new file mode 100644 index 000000000..dd4b13333 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/copy_file_range.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t copy_file_range(int fd_in, off_t *off_in, int fd_out, off_t *off_out, size_t len, unsigned flags) +{ + return syscall(SYS_copy_file_range, fd_in, off_in, fd_out, off_out, len, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/epoll.c b/vendor/modernc.org/libc/musl/src/linux/epoll.c new file mode 100644 index 000000000..deff5b101 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/epoll.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include "syscall.h" + +int epoll_create(int size) +{ + return epoll_create1(0); +} + +int epoll_create1(int flags) +{ + int r = __syscall(SYS_epoll_create1, flags); +#ifdef SYS_epoll_create + if (r==-ENOSYS && !flags) r = __syscall(SYS_epoll_create, 1); +#endif + return __syscall_ret(r); +} + +int epoll_ctl(int fd, int op, int fd2, struct epoll_event *ev) +{ + return syscall(SYS_epoll_ctl, fd, op, fd2, ev); +} + +int epoll_pwait(int fd, struct epoll_event *ev, int cnt, int to, const sigset_t *sigs) +{ + int r = __syscall(SYS_epoll_pwait, fd, ev, cnt, to, sigs, _NSIG/8); +#ifdef SYS_epoll_wait + if (r==-ENOSYS && !sigs) r = __syscall(SYS_epoll_wait, fd, ev, cnt, to); +#endif + return __syscall_ret(r); +} + +int epoll_wait(int fd, struct epoll_event *ev, int cnt, int to) +{ + return epoll_pwait(fd, ev, cnt, to, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/eventfd.c b/vendor/modernc.org/libc/musl/src/linux/eventfd.c new file mode 100644 index 000000000..68e489c83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/eventfd.c @@ -0,0 +1,23 @@ +#include +#include +#include +#include "syscall.h" + +int eventfd(unsigned int count, int flags) +{ + int r = __syscall(SYS_eventfd2, count, flags); +#ifdef SYS_eventfd + if (r==-ENOSYS && !flags) r = __syscall(SYS_eventfd, count); +#endif + return __syscall_ret(r); +} + +int eventfd_read(int fd, eventfd_t *value) +{ + return (sizeof(*value) == read(fd, value, sizeof(*value))) ? 0 : -1; +} + +int eventfd_write(int fd, eventfd_t value) +{ + return (sizeof(value) == write(fd, &value, sizeof(value))) ? 0 : -1; +} diff --git a/vendor/modernc.org/libc/musl/src/linux/fallocate.c b/vendor/modernc.org/libc/musl/src/linux/fallocate.c new file mode 100644 index 000000000..7d68bc8f6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/fallocate.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int fallocate(int fd, int mode, off_t base, off_t len) +{ + return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base), + __SYSCALL_LL_E(len)); +} + +#undef fallocate64 +weak_alias(fallocate, fallocate64); diff --git a/vendor/modernc.org/libc/musl/src/linux/fanotify.c b/vendor/modernc.org/libc/musl/src/linux/fanotify.c new file mode 100644 index 000000000..c6211afc0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/fanotify.c @@ -0,0 +1,14 @@ +#include "syscall.h" +#include + +int fanotify_init(unsigned flags, unsigned event_f_flags) +{ + return syscall(SYS_fanotify_init, flags, event_f_flags); +} + +int fanotify_mark(int fanotify_fd, unsigned flags, unsigned long long mask, + int dfd, const char *pathname) +{ + return syscall(SYS_fanotify_mark, fanotify_fd, flags, __SYSCALL_LL_E(mask), dfd, pathname); +} + diff --git a/vendor/modernc.org/libc/musl/src/linux/flock.c b/vendor/modernc.org/libc/musl/src/linux/flock.c new file mode 100644 index 000000000..87aa5cfed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/flock.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int flock(int fd, int op) +{ + return syscall(SYS_flock, fd, op); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/getdents.c b/vendor/modernc.org/libc/musl/src/linux/getdents.c new file mode 100644 index 000000000..796c1e5c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/getdents.c @@ -0,0 +1,12 @@ +#define _BSD_SOURCE +#include +#include +#include "syscall.h" + +int getdents(int fd, struct dirent *buf, size_t len) +{ + if (len>INT_MAX) len = INT_MAX; + return syscall(SYS_getdents, fd, buf, len); +} + +weak_alias(getdents, getdents64); diff --git a/vendor/modernc.org/libc/musl/src/linux/getrandom.c b/vendor/modernc.org/libc/musl/src/linux/getrandom.c new file mode 100644 index 000000000..6cc6f6b04 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/getrandom.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t getrandom(void *buf, size_t buflen, unsigned flags) +{ + return syscall_cp(SYS_getrandom, buf, buflen, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/inotify.c b/vendor/modernc.org/libc/musl/src/linux/inotify.c new file mode 100644 index 000000000..df5e48b31 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/inotify.c @@ -0,0 +1,26 @@ +#include +#include +#include "syscall.h" + +int inotify_init() +{ + return inotify_init1(0); +} +int inotify_init1(int flags) +{ + int r = __syscall(SYS_inotify_init1, flags); +#ifdef SYS_inotify_init + if (r==-ENOSYS && !flags) r = __syscall(SYS_inotify_init); +#endif + return __syscall_ret(r); +} + +int inotify_add_watch(int fd, const char *pathname, uint32_t mask) +{ + return syscall(SYS_inotify_add_watch, fd, pathname, mask); +} + +int inotify_rm_watch(int fd, int wd) +{ + return syscall(SYS_inotify_rm_watch, fd, wd); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/ioperm.c b/vendor/modernc.org/libc/musl/src/linux/ioperm.c new file mode 100644 index 000000000..08c6d8b86 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/ioperm.c @@ -0,0 +1,10 @@ +#include "syscall.h" + +#ifdef SYS_ioperm +#include + +int ioperm(unsigned long from, unsigned long num, int turn_on) +{ + return syscall(SYS_ioperm, from, num, turn_on); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/linux/iopl.c b/vendor/modernc.org/libc/musl/src/linux/iopl.c new file mode 100644 index 000000000..835d3d4ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/iopl.c @@ -0,0 +1,10 @@ +#include "syscall.h" + +#ifdef SYS_iopl +#include + +int iopl(int level) +{ + return syscall(SYS_iopl, level); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/linux/klogctl.c b/vendor/modernc.org/libc/musl/src/linux/klogctl.c new file mode 100644 index 000000000..8102ee641 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/klogctl.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int klogctl (int type, char *buf, int len) +{ + return syscall(SYS_syslog, type, buf, len); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/membarrier.c b/vendor/modernc.org/libc/musl/src/linux/membarrier.c new file mode 100644 index 000000000..9ebe906ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/membarrier.c @@ -0,0 +1,77 @@ +#include +#include +#include +#include +#include "pthread_impl.h" +#include "syscall.h" + +static void dummy_0(void) +{ +} + +static void dummy_1(pthread_t t) +{ +} + +weak_alias(dummy_0, __tl_lock); +weak_alias(dummy_0, __tl_unlock); +weak_alias(dummy_1, __tl_sync); + +static sem_t barrier_sem; + +static void bcast_barrier(int s) +{ + sem_post(&barrier_sem); +} + +int __membarrier(int cmd, int flags) +{ + int r = __syscall(SYS_membarrier, cmd, flags); + /* Emulate the private expedited command, which is needed by the + * dynamic linker for installation of dynamic TLS, for older + * kernels that lack the syscall. Unlike the syscall, this only + * synchronizes with threads of the process, not other processes + * sharing the VM, but such sharing is not a supported usage + * anyway. */ + if (r && cmd == MEMBARRIER_CMD_PRIVATE_EXPEDITED && !flags) { + pthread_t self=__pthread_self(), td; + sigset_t set; + __block_app_sigs(&set); + __tl_lock(); + sem_init(&barrier_sem, 0, 0); + struct sigaction sa = { + .sa_flags = SA_RESTART, + .sa_handler = bcast_barrier + }; + memset(&sa.sa_mask, -1, sizeof sa.sa_mask); + if (!__libc_sigaction(SIGSYNCCALL, &sa, 0)) { + for (td=self->next; td!=self; td=td->next) + __syscall(SYS_tkill, td->tid, SIGSYNCCALL); + for (td=self->next; td!=self; td=td->next) + sem_wait(&barrier_sem); + r = 0; + sa.sa_handler = SIG_IGN; + __libc_sigaction(SIGSYNCCALL, &sa, 0); + } + sem_destroy(&barrier_sem); + __tl_unlock(); + __restore_sigs(&set); + } + return __syscall_ret(r); +} + +void __membarrier_init(void) +{ + /* If membarrier is linked, attempt to pre-register to be able to use + * the private expedited command before the process becomes multi- + * threaded, since registering later has bad, potentially unbounded + * latency. This syscall should be essentially free, and it's arguably + * a mistake in the API design that registration was even required. + * For other commands, registration may impose some cost, so it's left + * to the application to do so if desired. Unfortunately this means + * library code initialized after the process becomes multi-threaded + * cannot use these features without accepting registration latency. */ + __syscall(SYS_membarrier, MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED, 0); +} + +weak_alias(__membarrier, membarrier); diff --git a/vendor/modernc.org/libc/musl/src/linux/memfd_create.c b/vendor/modernc.org/libc/musl/src/linux/memfd_create.c new file mode 100644 index 000000000..1649fe554 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/memfd_create.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE 1 +#include +#include "syscall.h" + +int memfd_create(const char *name, unsigned flags) +{ + return syscall(SYS_memfd_create, name, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/mlock2.c b/vendor/modernc.org/libc/musl/src/linux/mlock2.c new file mode 100644 index 000000000..10132742d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/mlock2.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE 1 +#include +#include "syscall.h" + +int mlock2(const void *addr, size_t len, unsigned flags) +{ + if (flags == 0) + return mlock(addr, len); + return syscall(SYS_mlock2, addr, len, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/module.c b/vendor/modernc.org/libc/musl/src/linux/module.c new file mode 100644 index 000000000..33f69a000 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/module.c @@ -0,0 +1,11 @@ +#include "syscall.h" + +int init_module(void *a, unsigned long b, const char *c) +{ + return syscall(SYS_init_module, a, b, c); +} + +int delete_module(const char *a, unsigned b) +{ + return syscall(SYS_delete_module, a, b); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/mount.c b/vendor/modernc.org/libc/musl/src/linux/mount.c new file mode 100644 index 000000000..34e11af12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/mount.c @@ -0,0 +1,17 @@ +#include +#include "syscall.h" + +int mount(const char *special, const char *dir, const char *fstype, unsigned long flags, const void *data) +{ + return syscall(SYS_mount, special, dir, fstype, flags, data); +} + +int umount(const char *special) +{ + return syscall(SYS_umount2, special, 0); +} + +int umount2(const char *special, int flags) +{ + return syscall(SYS_umount2, special, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/name_to_handle_at.c b/vendor/modernc.org/libc/musl/src/linux/name_to_handle_at.c new file mode 100644 index 000000000..cd4075bd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/name_to_handle_at.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int name_to_handle_at(int dirfd, const char *pathname, + struct file_handle *handle, int *mount_id, int flags) +{ + return syscall(SYS_name_to_handle_at, dirfd, + pathname, handle, mount_id, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/open_by_handle_at.c b/vendor/modernc.org/libc/musl/src/linux/open_by_handle_at.c new file mode 100644 index 000000000..1c9b6a2be --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/open_by_handle_at.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int open_by_handle_at(int mount_fd, struct file_handle *handle, int flags) +{ + return syscall(SYS_open_by_handle_at, mount_fd, handle, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/personality.c b/vendor/modernc.org/libc/musl/src/linux/personality.c new file mode 100644 index 000000000..e00cf7997 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/personality.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#ifdef SYS_personality +int personality(unsigned long persona) +{ + return syscall(SYS_personality, persona); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/linux/pivot_root.c b/vendor/modernc.org/libc/musl/src/linux/pivot_root.c new file mode 100644 index 000000000..17e70c916 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/pivot_root.c @@ -0,0 +1,6 @@ +#include "syscall.h" + +int pivot_root(const char *new, const char *old) +{ + return syscall(SYS_pivot_root, new, old); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/ppoll.c b/vendor/modernc.org/libc/musl/src/linux/ppoll.c new file mode 100644 index 000000000..e614600ab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/ppoll.c @@ -0,0 +1,26 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int ppoll(struct pollfd *fds, nfds_t n, const struct timespec *to, const sigset_t *mask) +{ + time_t s = to ? to->tv_sec : 0; + long ns = to ? to->tv_nsec : 0; +#ifdef SYS_ppoll_time64 + int r = -ENOSYS; + if (SYS_ppoll == SYS_ppoll_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_ppoll_time64, fds, n, + to ? ((long long[]){s, ns}) : 0, + mask, _NSIG/8); + if (SYS_ppoll == SYS_ppoll_time64 || r != -ENOSYS) + return __syscall_ret(r); + s = CLAMP(s); +#endif + return syscall_cp(SYS_ppoll, fds, n, + to ? ((long[]){s, ns}) : 0, mask, _NSIG/8); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/prctl.c b/vendor/modernc.org/libc/musl/src/linux/prctl.c new file mode 100644 index 000000000..19f4267cd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/prctl.c @@ -0,0 +1,14 @@ +#include +#include +#include "syscall.h" + +int prctl(int op, ...) +{ + unsigned long x[4]; + int i; + va_list ap; + va_start(ap, op); + for (i=0; i<4; i++) x[i] = va_arg(ap, unsigned long); + va_end(ap); + return syscall(SYS_prctl, op, x[0], x[1], x[2], x[3]); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/prlimit.c b/vendor/modernc.org/libc/musl/src/linux/prlimit.c new file mode 100644 index 000000000..3df9ffba7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/prlimit.c @@ -0,0 +1,26 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0) + +int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit) +{ + struct rlimit tmp; + int r; + if (new_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { + tmp = *new_limit; + FIX(tmp.rlim_cur); + FIX(tmp.rlim_max); + new_limit = &tmp; + } + r = syscall(SYS_prlimit64, pid, resource, new_limit, old_limit); + if (!r && old_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { + FIX(old_limit->rlim_cur); + FIX(old_limit->rlim_max); + } + return r; +} + +#undef prlimit64 +weak_alias(prlimit, prlimit64); diff --git a/vendor/modernc.org/libc/musl/src/linux/process_vm.c b/vendor/modernc.org/libc/musl/src/linux/process_vm.c new file mode 100644 index 000000000..7703bdf0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/process_vm.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t process_vm_writev(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags) +{ + return syscall(SYS_process_vm_writev, pid, lvec, liovcnt, rvec, riovcnt, flags); +} + +ssize_t process_vm_readv(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags) +{ + return syscall(SYS_process_vm_readv, pid, lvec, liovcnt, rvec, riovcnt, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/ptrace.c b/vendor/modernc.org/libc/musl/src/linux/ptrace.c new file mode 100644 index 000000000..a3f393d95 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/ptrace.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include "syscall.h" + +long ptrace(int req, ...) +{ + va_list ap; + pid_t pid; + void *addr, *data, *addr2 = 0; + long ret, result; + + va_start(ap, req); + pid = va_arg(ap, pid_t); + addr = va_arg(ap, void *); + data = va_arg(ap, void *); + /* PTRACE_{READ,WRITE}{DATA,TEXT} (16...19) are specific to SPARC. */ +#ifdef PTRACE_READDATA + if ((unsigned)req - PTRACE_READDATA < 4) + addr2 = va_arg(ap, void *); +#endif + va_end(ap); + + if (req-1U < 3) data = &result; + ret = syscall(SYS_ptrace, req, pid, addr, data, addr2); + + if (ret < 0 || req-1U >= 3) return ret; + return result; +} diff --git a/vendor/modernc.org/libc/musl/src/linux/quotactl.c b/vendor/modernc.org/libc/musl/src/linux/quotactl.c new file mode 100644 index 000000000..344eb0d16 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/quotactl.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int quotactl(int cmd, const char *special, int id, char *addr) +{ + return syscall(SYS_quotactl, cmd, special, id, addr); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/readahead.c b/vendor/modernc.org/libc/musl/src/linux/readahead.c new file mode 100644 index 000000000..5c70bfd6e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/readahead.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t readahead(int fd, off_t pos, size_t len) +{ + return syscall(SYS_readahead, fd, __SYSCALL_LL_O(pos), len); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/reboot.c b/vendor/modernc.org/libc/musl/src/linux/reboot.c new file mode 100644 index 000000000..7f12af79b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/reboot.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int reboot(int type) +{ + return syscall(SYS_reboot, 0xfee1dead, 672274793, type); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/remap_file_pages.c b/vendor/modernc.org/libc/musl/src/linux/remap_file_pages.c new file mode 100644 index 000000000..a9699ce2e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/remap_file_pages.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags) +{ + return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/sbrk.c b/vendor/modernc.org/libc/musl/src/linux/sbrk.c new file mode 100644 index 000000000..bb8663058 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/sbrk.c @@ -0,0 +1,11 @@ +#define _BSD_SOURCE +#include +#include +#include +#include "syscall.h" + +void *sbrk(intptr_t inc) +{ + if (inc) return (void *)__syscall_ret(-ENOMEM); + return (void *)__syscall(SYS_brk, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/sendfile.c b/vendor/modernc.org/libc/musl/src/linux/sendfile.c new file mode 100644 index 000000000..9afe6dd61 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/sendfile.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +ssize_t sendfile(int out_fd, int in_fd, off_t *ofs, size_t count) +{ + return syscall(SYS_sendfile, out_fd, in_fd, ofs, count); +} + +weak_alias(sendfile, sendfile64); diff --git a/vendor/modernc.org/libc/musl/src/linux/setfsgid.c b/vendor/modernc.org/libc/musl/src/linux/setfsgid.c new file mode 100644 index 000000000..e29d9c006 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/setfsgid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int setfsgid(gid_t gid) +{ + return syscall(SYS_setfsgid, gid); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/setfsuid.c b/vendor/modernc.org/libc/musl/src/linux/setfsuid.c new file mode 100644 index 000000000..1bae44186 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/setfsuid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int setfsuid(uid_t uid) +{ + return syscall(SYS_setfsuid, uid); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/setgroups.c b/vendor/modernc.org/libc/musl/src/linux/setgroups.c new file mode 100644 index 000000000..1248fdbfd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/setgroups.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int setgroups(size_t count, const gid_t list[]) +{ + return syscall(SYS_setgroups, count, list); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/sethostname.c b/vendor/modernc.org/libc/musl/src/linux/sethostname.c new file mode 100644 index 000000000..9313b3245 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/sethostname.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int sethostname(const char *name, size_t len) +{ + return syscall(SYS_sethostname, name, len); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/setns.c b/vendor/modernc.org/libc/musl/src/linux/setns.c new file mode 100644 index 000000000..0afec813f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/setns.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int setns(int fd, int nstype) +{ + return syscall(SYS_setns, fd, nstype); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/settimeofday.c b/vendor/modernc.org/libc/musl/src/linux/settimeofday.c new file mode 100644 index 000000000..860fb5de9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/settimeofday.c @@ -0,0 +1,13 @@ +#define _BSD_SOURCE +#include +#include +#include +#include "syscall.h" + +int settimeofday(const struct timeval *tv, const struct timezone *tz) +{ + if (!tv) return 0; + if (tv->tv_usec >= 1000000ULL) return __syscall_ret(-EINVAL); + return clock_settime(CLOCK_REALTIME, &((struct timespec){ + .tv_sec = tv->tv_sec, .tv_nsec = tv->tv_usec * 1000})); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/signalfd.c b/vendor/modernc.org/libc/musl/src/linux/signalfd.c new file mode 100644 index 000000000..4bf43326f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/signalfd.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include "syscall.h" + +int signalfd(int fd, const sigset_t *sigs, int flags) +{ + int ret = __syscall(SYS_signalfd4, fd, sigs, _NSIG/8, flags); +#ifdef SYS_signalfd + if (ret != -ENOSYS) return __syscall_ret(ret); + ret = __syscall(SYS_signalfd, fd, sigs, _NSIG/8); + if (ret >= 0) { + if (flags & SFD_CLOEXEC) + __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + if (flags & SFD_NONBLOCK) + __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); + } +#endif + return __syscall_ret(ret); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/splice.c b/vendor/modernc.org/libc/musl/src/linux/splice.c new file mode 100644 index 000000000..78b6220d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/splice.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t splice(int fd_in, off_t *off_in, int fd_out, off_t *off_out, size_t len, unsigned flags) +{ + return syscall(SYS_splice, fd_in, off_in, fd_out, off_out, len, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/stime.c b/vendor/modernc.org/libc/musl/src/linux/stime.c new file mode 100644 index 000000000..7d0443ba3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/stime.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include + +int stime(const time_t *t) +{ + struct timeval tv = { .tv_sec = *t, .tv_usec = 0 }; + return settimeofday(&tv, (void *)0); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/swap.c b/vendor/modernc.org/libc/musl/src/linux/swap.c new file mode 100644 index 000000000..8137d51eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/swap.c @@ -0,0 +1,12 @@ +#include +#include "syscall.h" + +int swapon(const char *path, int flags) +{ + return syscall(SYS_swapon, path, flags); +} + +int swapoff(const char *path) +{ + return syscall(SYS_swapoff, path); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/sync_file_range.c b/vendor/modernc.org/libc/musl/src/linux/sync_file_range.c new file mode 100644 index 000000000..6859abc05 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/sync_file_range.c @@ -0,0 +1,17 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" + +int sync_file_range(int fd, off_t pos, off_t len, unsigned flags) +{ +#if defined(SYS_sync_file_range2) + return syscall(SYS_sync_file_range2, fd, flags, + __SYSCALL_LL_E(pos), __SYSCALL_LL_E(len)); +#elif defined(SYS_sync_file_range) + return syscall(SYS_sync_file_range, fd, + __SYSCALL_LL_O(pos), __SYSCALL_LL_E(len), flags); +#else + return __syscall_ret(-ENOSYS); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/linux/syncfs.c b/vendor/modernc.org/libc/musl/src/linux/syncfs.c new file mode 100644 index 000000000..bc7d301e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/syncfs.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int syncfs(int fd) +{ + return syscall(SYS_syncfs, fd); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/sysinfo.c b/vendor/modernc.org/libc/musl/src/linux/sysinfo.c new file mode 100644 index 000000000..db86476d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/sysinfo.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +int __lsysinfo(struct sysinfo *info) +{ + return syscall(SYS_sysinfo, info); +} + +weak_alias(__lsysinfo, sysinfo); diff --git a/vendor/modernc.org/libc/musl/src/linux/tee.c b/vendor/modernc.org/libc/musl/src/linux/tee.c new file mode 100644 index 000000000..a24748cfb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/tee.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t tee(int src, int dest, size_t len, unsigned flags) +{ + return syscall(SYS_tee, src, dest, len, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/timerfd.c b/vendor/modernc.org/libc/musl/src/linux/timerfd.c new file mode 100644 index 000000000..5bdfaf165 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/timerfd.c @@ -0,0 +1,59 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) + +int timerfd_create(int clockid, int flags) +{ + return syscall(SYS_timerfd_create, clockid, flags); +} + +int timerfd_settime(int fd, int flags, const struct itimerspec *new, struct itimerspec *old) +{ +#ifdef SYS_timerfd_settime64 + time_t is = new->it_interval.tv_sec, vs = new->it_value.tv_sec; + long ins = new->it_interval.tv_nsec, vns = new->it_value.tv_nsec; + int r = -ENOSYS; + if (SYS_timerfd_settime == SYS_timerfd_settime64 + || !IS32BIT(is) || !IS32BIT(vs) || (sizeof(time_t)>4 && old)) + r = __syscall(SYS_timerfd_settime64, fd, flags, + ((long long[]){is, ins, vs, vns}), old); + if (SYS_timerfd_settime == SYS_timerfd_settime64 || r!=-ENOSYS) + return __syscall_ret(r); + if (!IS32BIT(is) || !IS32BIT(vs)) + return __syscall_ret(-ENOTSUP); + long old32[4]; + r = __syscall(SYS_timerfd_settime, fd, flags, + ((long[]){is, ins, vs, vns}), old32); + if (!r && old) { + old->it_interval.tv_sec = old32[0]; + old->it_interval.tv_nsec = old32[1]; + old->it_value.tv_sec = old32[2]; + old->it_value.tv_nsec = old32[3]; + } + return __syscall_ret(r); +#endif + return syscall(SYS_timerfd_settime, fd, flags, new, old); +} + +int timerfd_gettime(int fd, struct itimerspec *cur) +{ +#ifdef SYS_timerfd_gettime64 + int r = -ENOSYS; + if (sizeof(time_t) > 4) + r = __syscall(SYS_timerfd_gettime64, fd, cur); + if (SYS_timerfd_gettime == SYS_timerfd_gettime64 || r!=-ENOSYS) + return __syscall_ret(r); + long cur32[4]; + r = __syscall(SYS_timerfd_gettime, fd, cur32); + if (!r) { + cur->it_interval.tv_sec = cur32[0]; + cur->it_interval.tv_nsec = cur32[1]; + cur->it_value.tv_sec = cur32[2]; + cur->it_value.tv_nsec = cur32[3]; + } + return __syscall_ret(r); +#endif + return syscall(SYS_timerfd_gettime, fd, cur); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/unshare.c b/vendor/modernc.org/libc/musl/src/linux/unshare.c new file mode 100644 index 000000000..3861db3b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/unshare.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int unshare(int flags) +{ + return syscall(SYS_unshare, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/utimes.c b/vendor/modernc.org/libc/musl/src/linux/utimes.c new file mode 100644 index 000000000..6ca025d95 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/utimes.c @@ -0,0 +1,8 @@ +#include +#include "fcntl.h" +#include "syscall.h" + +int utimes(const char *path, const struct timeval times[2]) +{ + return __futimesat(AT_FDCWD, path, times); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/vhangup.c b/vendor/modernc.org/libc/musl/src/linux/vhangup.c new file mode 100644 index 000000000..020307150 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/vhangup.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int vhangup(void) +{ + return syscall(SYS_vhangup); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/vmsplice.c b/vendor/modernc.org/libc/musl/src/linux/vmsplice.c new file mode 100644 index 000000000..ebf13ee44 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/vmsplice.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +ssize_t vmsplice(int fd, const struct iovec *iov, size_t cnt, unsigned flags) +{ + return syscall(SYS_vmsplice, fd, iov, cnt, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/wait3.c b/vendor/modernc.org/libc/musl/src/linux/wait3.c new file mode 100644 index 000000000..61c735947 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/wait3.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" + +pid_t wait3(int *status, int options, struct rusage *usage) +{ + return wait4(-1, status, options, usage); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/wait4.c b/vendor/modernc.org/libc/musl/src/linux/wait4.c new file mode 100644 index 000000000..83650e34a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/wait4.c @@ -0,0 +1,39 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include "syscall.h" + +pid_t wait4(pid_t pid, int *status, int options, struct rusage *ru) +{ + int r; +#ifdef SYS_wait4_time64 + if (ru) { + long long kru64[18]; + r = __syscall(SYS_wait4_time64, pid, status, options, kru64); + if (!r) { + ru->ru_utime = (struct timeval) + { .tv_sec = kru64[0], .tv_usec = kru64[1] }; + ru->ru_stime = (struct timeval) + { .tv_sec = kru64[2], .tv_usec = kru64[3] }; + char *slots = (char *)&ru->ru_maxrss; + for (int i=0; i<14; i++) + *(long *)(slots + i*sizeof(long)) = kru64[4+i]; + } + if (SYS_wait4_time64 == SYS_wait4 || r != -ENOSYS) + return __syscall_ret(r); + } +#endif + char *dest = ru ? (char *)&ru->ru_maxrss - 4*sizeof(long) : 0; + r = __syscall(SYS_wait4, pid, status, options, dest); + if (r>0 && ru && sizeof(time_t) > sizeof(long)) { + long kru[4]; + memcpy(kru, dest, 4*sizeof(long)); + ru->ru_utime = (struct timeval) + { .tv_sec = kru[0], .tv_usec = kru[1] }; + ru->ru_stime = (struct timeval) + { .tv_sec = kru[2], .tv_usec = kru[3] }; + } + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/linux/x32/sysinfo.c b/vendor/modernc.org/libc/musl/src/linux/x32/sysinfo.c new file mode 100644 index 000000000..59b3bb708 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/x32/sysinfo.c @@ -0,0 +1,49 @@ +#include +#include "syscall.h" + +#define klong long long +#define kulong unsigned long long + +struct kernel_sysinfo { + klong uptime; + kulong loads[3]; + kulong totalram; + kulong freeram; + kulong sharedram; + kulong bufferram; + kulong totalswap; + kulong freeswap; + short procs; + short pad; + kulong totalhigh; + kulong freehigh; + unsigned mem_unit; +}; + +int __lsysinfo(struct sysinfo *info) +{ + struct kernel_sysinfo tmp; + int ret = syscall(SYS_sysinfo, &tmp); + if(ret == -1) return ret; + info->uptime = tmp.uptime; + info->loads[0] = tmp.loads[0]; + info->loads[1] = tmp.loads[1]; + info->loads[2] = tmp.loads[2]; + kulong shifts; + kulong max = tmp.totalram | tmp.totalswap; + __asm__("bsr %1,%0" : "=r"(shifts) : "r"(max)); + shifts = shifts >= 32 ? shifts - 31 : 0; + info->totalram = tmp.totalram >> shifts; + info->freeram = tmp.freeram >> shifts; + info->sharedram = tmp.sharedram >> shifts; + info->bufferram = tmp.bufferram >> shifts; + info->totalswap = tmp.totalswap >> shifts; + info->freeswap = tmp.freeswap >> shifts; + info->procs = tmp.procs ; + info->totalhigh = tmp.totalhigh >> shifts; + info->freehigh = tmp.freehigh >> shifts; + info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts; + return ret; +} + +weak_alias(__lsysinfo, sysinfo); diff --git a/vendor/modernc.org/libc/musl/src/linux/xattr.c b/vendor/modernc.org/libc/musl/src/linux/xattr.c new file mode 100644 index 000000000..fea0d209a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/linux/xattr.c @@ -0,0 +1,62 @@ +#include +#include "syscall.h" + +ssize_t getxattr(const char *path, const char *name, void *value, size_t size) +{ + return syscall(SYS_getxattr, path, name, value, size); +} + +ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size) +{ + return syscall(SYS_lgetxattr, path, name, value, size); +} + +ssize_t fgetxattr(int filedes, const char *name, void *value, size_t size) +{ + return syscall(SYS_fgetxattr, filedes, name, value, size); +} + +ssize_t listxattr(const char *path, char *list, size_t size) +{ + return syscall(SYS_listxattr, path, list, size); +} + +ssize_t llistxattr(const char *path, char *list, size_t size) +{ + return syscall(SYS_llistxattr, path, list, size); +} + +ssize_t flistxattr(int filedes, char *list, size_t size) +{ + return syscall(SYS_flistxattr, filedes, list, size); +} + +int setxattr(const char *path, const char *name, const void *value, size_t size, int flags) +{ + return syscall(SYS_setxattr, path, name, value, size, flags); +} + +int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags) +{ + return syscall(SYS_lsetxattr, path, name, value, size, flags); +} + +int fsetxattr(int filedes, const char *name, const void *value, size_t size, int flags) +{ + return syscall(SYS_fsetxattr, filedes, name, value, size, flags); +} + +int removexattr(const char *path, const char *name) +{ + return syscall(SYS_removexattr, path, name); +} + +int lremovexattr(const char *path, const char *name) +{ + return syscall(SYS_lremovexattr, path, name); +} + +int fremovexattr(int fd, const char *name) +{ + return syscall(SYS_fremovexattr, fd, name); +} diff --git a/vendor/modernc.org/libc/musl/src/locale/__lctrans.c b/vendor/modernc.org/libc/musl/src/locale/__lctrans.c new file mode 100644 index 000000000..9fbe762ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/__lctrans.c @@ -0,0 +1,19 @@ +#include +#include "locale_impl.h" + +static const char *dummy(const char *msg, const struct __locale_map *lm) +{ + return msg; +} + +weak_alias(dummy, __lctrans_impl); + +const char *__lctrans(const char *msg, const struct __locale_map *lm) +{ + return __lctrans_impl(msg, lm); +} + +const char *__lctrans_cur(const char *msg) +{ + return __lctrans_impl(msg, CURRENT_LOCALE->cat[LC_MESSAGES]); +} diff --git a/vendor/modernc.org/libc/musl/src/locale/__mo_lookup.c b/vendor/modernc.org/libc/musl/src/locale/__mo_lookup.c new file mode 100644 index 000000000..d18ab7744 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/__mo_lookup.c @@ -0,0 +1,42 @@ +#include +#include + +static inline uint32_t swapc(uint32_t x, int c) +{ + return c ? x>>24 | x>>8&0xff00 | x<<8&0xff0000 | x<<24 : x; +} + +const char *__mo_lookup(const void *p, size_t size, const char *s) +{ + const uint32_t *mo = p; + int sw = *mo - 0x950412de; + uint32_t b = 0, n = swapc(mo[2], sw); + uint32_t o = swapc(mo[3], sw); + uint32_t t = swapc(mo[4], sw); + if (n>=size/4 || o>=size-4*n || t>=size-4*n || ((o|t)%4)) + return 0; + o/=4; + t/=4; + for (;;) { + uint32_t ol = swapc(mo[o+2*(b+n/2)], sw); + uint32_t os = swapc(mo[o+2*(b+n/2)+1], sw); + if (os >= size || ol >= size-os || ((char *)p)[os+ol]) + return 0; + int sign = strcmp(s, (char *)p + os); + if (!sign) { + uint32_t tl = swapc(mo[t+2*(b+n/2)], sw); + uint32_t ts = swapc(mo[t+2*(b+n/2)+1], sw); + if (ts >= size || tl >= size-ts || ((char *)p)[ts+tl]) + return 0; + return (char *)p + ts; + } + else if (n == 1) return 0; + else if (sign < 0) + n /= 2; + else { + b += n/2; + n -= n/2; + } + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/big5.h b/vendor/modernc.org/libc/musl/src/locale/big5.h new file mode 100644 index 000000000..332ea3bc5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/big5.h @@ -0,0 +1,1085 @@ +12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229, +65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075, +9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309, +65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087, +65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116, +65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251, +167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660, +12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119, +65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800, +8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735, +8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594, +8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504, +65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262, +13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929, +31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610, +9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581, +9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296, +65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547, +8548,8549,8550,8551,8552,8553,12321, +12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314, +65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327, +65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346, +65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359, +65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915, +916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935, +936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961, +963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556, +12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569, +12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582, +12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223, +9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238, +9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19968,20057,19969,19971,20035,20061,20102, +20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448, +19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129, +20800,20995,21242,21315,21449,21475,22303, +22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029, +24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981, +20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160, +20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844, +20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317, +21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588, +23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903, +25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604, +27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993, +19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182, +20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984, +21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359, +21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483, +21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833, +22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321, +24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410, +26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577, +29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382, +30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051, +20073,20121,20132,20134,20133,20223,20233,20249,20234, +20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235, +20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014, +21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515, +21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320, +22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909, +22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030, +24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179, +25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421, +27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739, +27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769, +32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292, +33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136, +20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282, +20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317, +20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032, +21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582, +21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550, +21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251, +22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941, +22930,22952,22942,22947,22937,22934,22925,22948,22931, +22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615, +23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351, +24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106, +25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203, +25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356, +26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455, +27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792, +27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789, +27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590, +29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597, +32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282, +35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802, +36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450, +38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335, +20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329, +20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856, +20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330, +21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654, +21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644, +21658,21602,21608,21643,21629,21646,22266,22403,22391, +22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974, +22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963, +22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624, +23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085, +24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448, +24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598, +24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215, +25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288, +25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303, +25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126, +26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483, +26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515, +26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825, +27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833, +27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868, +27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289, +29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105, +30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354, +31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939, +32937,32948,32938,32943,33253,33278,33293,33459,33437, +33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470, +33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046, +37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738, +38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419, +20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407, +20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193, +21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688, +21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691, +21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869, +22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002, +23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629, +23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365, +24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590, +24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308, +25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342, +25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159, +26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543, +26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544, +26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915, +27954,27946,27969,27941,27916,27953,27934,27927,27963, +27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947, +28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300, +29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031, +30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408, +30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722, +30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359, +31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654, +32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993, +32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510, +33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491, +33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330, +35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837, +36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480, +38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318, +39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486, +20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505, +20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941, +20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471, +21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729, +21769,21742,21738,21734,21799,21767,21757,21775,22275, +22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068, +23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472, +23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805, +23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231, +24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708, +24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406, +25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421, +25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181, +26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708, +26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693, +26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010, +28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020, +28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879, +29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674, +29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140, +30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697, +30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056, +31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209, +31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034, +32020,32016,32021,32026,32028,32013,32025,32027,32570, +32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026, +33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261, +33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592, +33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603, +34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946, +34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345, +35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870, +36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202, +37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493, +38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602, +20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596, +20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208, +21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828, +21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852, +21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496, +22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146, +23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494, +23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825, +23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248, +24246,24245,24254,24373,24375,24407,24428,24425,24427, +24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779, +24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760, +24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447, +25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505, +25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943, +21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205, +26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805, +26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781, +26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121, +28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126, +28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145, +28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911, +29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702, +29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164, +30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520, +30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515, +31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057, +32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716, +32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282, +33333,33335,33334,33337,33678,33694,33688,33656,33698, +33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703, +34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899, +34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365, +35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007, +36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893, +36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207, +37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512, +38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165, +40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634, +26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888, +21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939, +21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285, +22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159, +23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563, +23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257, +24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860, +24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850, +25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552, +25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958, +25954,25955,26001,26000,26031,26222,26224,26228,26230, +26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840, +26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893, +26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631, +27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195, +28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204, +28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953, +28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492, +29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736, +29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332, +30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237, +31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565, +31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097, +32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099, +33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784, +33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740, +33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521, +34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387, +35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414, +35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031, +36024,36234,36229,36225,36302,36317,36299,36314,36305, +36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918, +37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389, +37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539, +38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642, +38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643, +40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655, +20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971, +21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989, +21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602, +22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218, +23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904, +24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871, +24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615, +25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247, +26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997, +26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463, +27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359, +28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327, +28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022, +28998,29032,29014,29242,29266,29495,29509,29503,29502, +29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208, +30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566, +30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871, +30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260, +31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921, +31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681, +32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131, +33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865, +33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553, +34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028, +35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443, +35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436, +35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035, +36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611, +36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944, +36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321, +37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453, +37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647, +38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164, +39156,39165,39166,39347,39345,39348,39649,40169,40578, +40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721, +20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013, +22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294, +22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890, +22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525, +23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151, +24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931, +24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681, +25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048, +27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053, +27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457, +28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451, +28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053, +29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805, +29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561, +30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401, +31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620, +31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177, +32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735, +32862,32858,32903,33104,33152,33167,33160,33162,33151, +33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950, +33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619, +34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069, +35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493, +35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249, +36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958, +36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509, +37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309, +38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087, +39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182, +40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741, +20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079, +22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707, +22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532, +23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285, +24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956, +24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134, +25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746, +25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283, +26292,26289,27171,27167,27112,27137,27166,27161,27133, +27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590, +28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538, +28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270, +29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244, +30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917, +30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407, +31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244, +32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242, +32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071, +34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047, +34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907, +34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531, +35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918, +35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205, +36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637, +36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983, +37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548, +37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663, +38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192, +39389,39376,39391,39387,39377,39381,39378,39385,39607, +39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654, +22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235, +22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114, +22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010, +24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787, +25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313, +26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234, +27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611, +28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136, +29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848, +29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623, +30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705, +31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283, +32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193, +33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157, +34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105, +35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586, +35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418, +36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988, +36986,37172,37266,37664,37686,37624,37683,37679,37666, +37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568, +38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960, +38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405, +39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210, +40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160, +22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656, +23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138, +25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987, +26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296, +27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544, +28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164, +29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284, +30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977, +31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966, +31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305, +32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882, +32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256, +33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186, +34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126, +35140,35128,35133,35244,35598,35607,35609,35611,35594, +35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264, +36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993, +36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707, +37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577, +38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851, +39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474, +22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850, +25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311, +27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182, +29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652, +30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777, +31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886, +33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799, +34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441, +36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292, +37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356, +38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905, +38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617, +39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288, +40672,40725,40748,20787,22181,22750,22751,22754,23541, +40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354, +27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560, +29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337, +31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371, +32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821, +34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662, +35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692, +36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853, +37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753, +38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911, +39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184, +22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880, +25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309, +31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381, +32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311, +34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111, +36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108, +39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751, +40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086, +25885,25884,26005,26345,27387,27396,27386,27570,28748, +29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330, +34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493, +36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712, +38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761, +39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796, +20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753, +28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186, +35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717, +38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995, +40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348, +27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865, +35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635, +39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321, +30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312, +37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572, +40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313, +38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522, +39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015, +40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318, +9319,9320,9321,9332,9333,9334,9335,9336, +9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569, +20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424, +24027,24186,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168, +710,12541,12542,12445,12446,0,0,12293,12294,12295,12540,65339,65341,10045, +12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365, +12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378, +12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391, +12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404, +12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417, +12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430, +12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456, +12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469, +12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482, +12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495, +12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508, +12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521, +12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534, +1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053, +1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068, +1069,1070, +1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084, +1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099, +1100,1101,1102,1103,8679,8632,8633,12751,204,20058,138,20994,17553,40880, +20872,40881,30215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904, +11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946, +11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998, +12003,0,0,0,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274, +21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014, +20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063, +26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186, +21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667, +24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360, +29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232, +20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158, +21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908, +22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675, +23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188, +25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427, +26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724, +28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405, +33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310, +20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275, +20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390, +21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569, +21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790, +22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442, +23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032, +24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529, +24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576, +24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217, +25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439, +26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751, +27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750, +27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370, +29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820, +32917,32921,32912,32914,32924,33424,33423,33413,33422, +33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031, +37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342, +20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380, +20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043, +21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634, +21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656, +21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400, +22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990, +22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983, +23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724, +23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084, +24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614, +24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592, +24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258, +25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121, +26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358, +26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508, +26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518, +27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856, +27842,27834,27843,27846,27885,27890,27858,27869,27828, +27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857, +28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398, +29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606, +29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451, +30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352, +31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440, +33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448, +33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818, +36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461, +38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441, +20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186, +21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549, +21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726, +21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425, +22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034, +23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028, +23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751, +23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098, +24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454, +24631,24633,24660,24690,24670,24645,24659,24647,24649, +24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295, +25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363, +25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165, +26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561, +26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591, +26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546, +26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571, +27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935, +27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933, +27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913, +27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258, +29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573, +29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635, +29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472, +30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725, +30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181, +31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872, +31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823, +32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981, +32969,32975,32983,32998,32973,33279,33313,33428,33497, +33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522, +33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420, +34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833, +36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331, +38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507, +20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527, +20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074, +21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747, +21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752, +21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461, +22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085, +23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638, +23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234, +24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705, +24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430, +25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396, +25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930, +25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650, +26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671, +26702,26692,26676,26653,26642,26644,26662,26664,26670, +26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622, +27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050, +27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055, +28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035, +28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882, +28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303, +29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654, +29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672, +29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143, +30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489, +30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761, +30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200, +31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367, +31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889, +31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031, +32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706, +32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327, +33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570, +33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577, +33607,33605,33612,33619,33566,33580,33611,33575,33608, +34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458, +34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884, +34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346, +35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862, +36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087, +37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492, +38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555, +20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587, +20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102, +21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858, +21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819, +21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525, +22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542, +22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128, +23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127, +23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145, +23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837, +23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854, +24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714, +24720,24710,24766,24752,24762,24787,24788,24783,24804, +24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445, +25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488, +25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473, +25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745, +26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741, +26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779, +26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443, +27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276, +28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133, +28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105, +28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916, +28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939, +28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448, +29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690, +29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156, +30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525, +30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076, +31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380, +31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537, +31531,31533,31535,31538,31544,31514,31523,31892,31896, +31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062, +32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720, +32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049, +33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331, +33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679, +33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675, +33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393, +34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508, +34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970, +34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958, +35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965, +36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572, +36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108, +37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364, +37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280, +38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628, +20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831, +20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907, +21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921, +21902,22284,22569,22583,22553,22558,22567,22563,22568, +22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572, +22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212, +23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196, +23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863, +23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869, +23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129, +24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842, +24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831, +24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587, +25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560, +25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956, +25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240, +26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865, +26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888, +26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890, +26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917, +26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635, +27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223, +28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264, +28252,28257,28209,28200,28256,28273,28267,28217,28194, +28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214, +28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968, +28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474, +29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739, +29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999, +30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426, +30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820, +30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091, +31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556, +31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099, +32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095, +32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022, +32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272, +33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810, +33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765, +33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798, +33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787, +33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525, +34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001, +35000,35008,35006,34998,35004,34999,35005,34994,35073, +35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415, +35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026, +36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316, +36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581, +36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126, +37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217, +37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376, +37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398, +38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595, +38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150, +20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657, +20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968, +21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986, +21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601, +22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236, +23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242, +23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882, +23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139, +24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901, +24886,24882,24878,24902,24879,24911,24873,24896,25120, +37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651, +25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665, +25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614, +25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400, +26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969, +27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944, +26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961, +26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013, +27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308, +28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326, +28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351, +28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021, +29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011, +28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498, +29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774, +29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191, +30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205, +30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553, +30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841, +30873,30848,30870,30843,31100,31106,31101,31097,31249, +31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467, +31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606, +31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123, +32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678, +32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138, +26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349, +34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840, +33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914, +33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849, +33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860, +33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637, +34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035, +35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302, +35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450, +35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241, +36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334, +36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613, +36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137, +37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477, +37470,37507,37422,37450,37446,37485,37484,37455,37472, +37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452, +37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653, +38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343, +39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692, +20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704, +20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031, +22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680, +22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651, +22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283, +23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651, +23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949, +23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274, +24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915, +24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129, +25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702, +25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707, +25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062, +27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049, +27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027, +27050,27041,27038,27097,27031,27024,27074,27061,27045, +27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401, +28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475, +28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395, +28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446, +28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079, +29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813, +29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225, +30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898, +30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128, +31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280, +31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638, +31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932, +31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198, +32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627, +32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164, +33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977, +33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991, +33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002, +34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585, +34587,34627,34604,34625,34622,34630,34592,34610,34602, +34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608, +34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052, +35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471, +35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349, +36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155, +37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235, +37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497, +37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510, +37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744, +38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934, +39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357, +39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615, +20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131, +21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106, +22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688, +22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288, +23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955, +23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286, +24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007, +25005,24991,24978,25002,24993,24973,24934,25011,25133, +25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759, +25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290, +26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135, +27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144, +27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143, +27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454, +28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534, +28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523, +28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106, +29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098, +29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537, +29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817, +29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364, +30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926, +30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289, +31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941, +31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246, +32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742, +32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363, +33362,33360,33358,33361,34084,34107,34063,34048,34089, +34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036, +34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088, +34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041, +34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675, +34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655, +34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665, +34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081, +35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541, +35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983, +36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387, +36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376, +36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979, +36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254, +37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617, +37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606, +37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268, +38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798, +38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176, +39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369, +39382,39384,39371,39383,39372,39603,39660,39659,39667, +39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780, +39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196, +40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128, +22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717, +22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312, +23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982, +23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294, +24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018, +25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843, +25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299, +26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254, +27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247, +27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559, +27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622, +28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586, +28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119, +29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126, +29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850, +29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268, +30261,30258,30256,30395,30438,30618,30621,30625,30620, +30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939, +30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409, +31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714, +31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268, +32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276, +32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190, +33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366, +33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146, +34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144, +34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707, +34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692, +34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113, +35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556, +35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085, +36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421, +36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663, +36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261, +37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650, +37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684, +37634,37668,37631,37673,37689,37685,37674,37652,37644, +37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335, +38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965, +38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395, +39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808, +39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816, +40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584, +40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772, +20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145, +22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342, +23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056, +25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038, +26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283, +27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483, +27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658, +28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551, +29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967, +30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644, +30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980, +31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759, +31730,31744,31743,31739,31758,31732,31755,31731,31746, +31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316, +32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310, +32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226, +33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208, +34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135, +34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166, +34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748, +34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744, +34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247, +35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605, +35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989, +35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990, +37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732, +37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708, +37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735, +37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688, +38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977, +38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213, +39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419, +39421,39422,39420,39427,39614,39678,39677,39681,39676, +39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855, +40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254, +40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703, +40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173, +22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073, +25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004, +26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335, +27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671, +28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880, +29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288, +30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985, +30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773, +31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337, +32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374, +34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254, +34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786, +34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787, +34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152, +35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633, +35621,35639,35622,35638,35630,35620,35643,35645,35642, +35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439, +36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680, +36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778, +37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791, +37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579, +38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827, +38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096, +39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430, +39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875, +39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266, +40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588, +40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789, +21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802, +23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870, +25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344, +27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705, +28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349, +29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660, +30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801, +31788,31803,31980,31978,32374,32373,32376,32368,32375, +32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888, +33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263, +34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274, +34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826, +34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254, +35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666, +35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461, +36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184, +37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849, +37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269, +38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878, +38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334, +39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452, +39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910, +39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321, +40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309, +40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593, +40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195, +22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875, +26079,26344,26339,26340,27379,27376,27370,27368,27385, +27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730, +28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378, +30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017, +31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382, +32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305, +34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839, +34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687, +35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187, +37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909, +37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897, +37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703, +38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257, +39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469, +39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000, +39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336, +40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383, +40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750, +40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206, +23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739, +28740,28746,28744,28745,28741,28742,29213,29210,29209, +29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392, +32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332, +34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852, +34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707, +36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951, +37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373, +38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481, +39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738, +39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380, +40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364, +40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731, +40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371, +23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757, +28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381, +31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591, +32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858, +34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501, +36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963, +37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259, +39502,39507,39508,39500,39503,39496,39498,39497,39506, +39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987, +40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400, +40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757, +40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024, +34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594, +28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362, +34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187, +35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973, +37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024, +40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427, +40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424, +40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817, +40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769, +28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389, +34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309, +37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769, +40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448, +40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902, +26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851, +31990,32410,32408,32411,32409,33248,33249,34374,34375, +34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997, +37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463, +40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855, +34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053, +40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742, +35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716, +40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528, +39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777, +28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556, +9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560, +9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582, +9584,9583,9619, diff --git a/vendor/modernc.org/libc/musl/src/locale/bind_textdomain_codeset.c b/vendor/modernc.org/libc/musl/src/locale/bind_textdomain_codeset.c new file mode 100644 index 000000000..5ebfd5e8a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/bind_textdomain_codeset.c @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +char *bind_textdomain_codeset(const char *domainname, const char *codeset) +{ + if (codeset && strcasecmp(codeset, "UTF-8")) + errno = EINVAL; + return NULL; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/c_locale.c b/vendor/modernc.org/libc/musl/src/locale/c_locale.c new file mode 100644 index 000000000..77ccf5873 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/c_locale.c @@ -0,0 +1,15 @@ +#include "locale_impl.h" +#include + +static const uint32_t empty_mo[] = { 0x950412de, 0, -1, -1, -1 }; + +const struct __locale_map __c_dot_utf8 = { + .map = empty_mo, + .map_size = sizeof empty_mo, + .name = "C.UTF-8" +}; + +const struct __locale_struct __c_locale = { 0 }; +const struct __locale_struct __c_dot_utf8_locale = { + .cat[LC_CTYPE] = &__c_dot_utf8 +}; diff --git a/vendor/modernc.org/libc/musl/src/locale/catclose.c b/vendor/modernc.org/libc/musl/src/locale/catclose.c new file mode 100644 index 000000000..54e24dd21 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/catclose.c @@ -0,0 +1,14 @@ +#define _BSD_SOURCE +#include +#include +#include +#include + +#define V(p) be32toh(*(uint32_t *)(p)) + +int catclose (nl_catd catd) +{ + char *map = (char *)catd; + munmap(map, V(map+8)+20); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/catgets.c b/vendor/modernc.org/libc/musl/src/locale/catgets.c new file mode 100644 index 000000000..71c31c1d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/catgets.c @@ -0,0 +1,38 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include + +#define V(p) be32toh(*(uint32_t *)(p)) + +static int cmp(const void *a, const void *b) +{ + uint32_t x = V(a), y = V(b); + return xy ? 1 : 0; +} + +char *catgets (nl_catd catd, int set_id, int msg_id, const char *s) +{ + const char *map = (const char *)catd; + uint32_t nsets = V(map+4); + const char *sets = map+20; + const char *msgs = map+20+V(map+12); + const char *strings = map+20+V(map+16); + uint32_t set_id_be = htobe32(set_id); + uint32_t msg_id_be = htobe32(msg_id); + const char *set = bsearch(&set_id_be, sets, nsets, 12, cmp); + if (!set) { + errno = ENOMSG; + return (char *)s; + } + uint32_t nmsgs = V(set+4); + msgs += 12*V(set+8); + const char *msg = bsearch(&msg_id_be, msgs, nmsgs, 12, cmp); + if (!msg) { + errno = ENOMSG; + return (char *)s; + } + return (char *)(strings + V(msg+8)); +} diff --git a/vendor/modernc.org/libc/musl/src/locale/catopen.c b/vendor/modernc.org/libc/musl/src/locale/catopen.c new file mode 100644 index 000000000..97f2446d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/catopen.c @@ -0,0 +1,79 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include "libc.h" + +#define V(p) be32toh(*(uint32_t *)(p)) + +static nl_catd do_catopen(const char *name) +{ + size_t size; + const unsigned char *map = __map_file(name, &size); + /* Size recorded in the file must match file size; otherwise + * the information needed to unmap the file will be lost. */ + if (!map || V(map) != 0xff88ff89 || 20+V(map+8) != size) { + if(map) munmap((void *)map, size); + errno = ENOENT; + return (nl_catd)-1; + } + return (nl_catd)map; +} + +nl_catd catopen(const char *name, int oflag) +{ + nl_catd catd; + + if (strchr(name, '/')) return do_catopen(name); + + char buf[PATH_MAX]; + size_t i; + const char *path, *lang, *p, *z; + if (libc.secure || !(path = getenv("NLSPATH"))) { + errno = ENOENT; + return (nl_catd)-1; + } + lang = oflag ? nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES)) : getenv("LANG"); + if (!lang) lang = ""; + for (p=path; *p; p=z) { + i = 0; + z = __strchrnul(p, ':'); + for (; p= sizeof buf - i) { + break; + } + memcpy(buf+i, v, l); + i += l; + } + if (!*z && (p +#include +#include +#include +#include +#include +#include +#include +#include "locale_impl.h" +#include "atomic.h" +#include "pleval.h" +#include "lock.h" + +struct binding { + struct binding *next; + int dirlen; + volatile int active; + char *domainname; + char *dirname; + char buf[]; +}; + +static void *volatile bindings; + +static char *gettextdir(const char *domainname, size_t *dirlen) +{ + struct binding *p; + for (p=bindings; p; p=p->next) { + if (!strcmp(p->domainname, domainname) && p->active) { + *dirlen = p->dirlen; + return (char *)p->dirname; + } + } + return 0; +} + +char *bindtextdomain(const char *domainname, const char *dirname) +{ + static volatile int lock[1]; + struct binding *p, *q; + + if (!domainname) return 0; + if (!dirname) return gettextdir(domainname, &(size_t){0}); + + size_t domlen = strnlen(domainname, NAME_MAX+1); + size_t dirlen = strnlen(dirname, PATH_MAX); + if (domlen > NAME_MAX || dirlen >= PATH_MAX) { + errno = EINVAL; + return 0; + } + + LOCK(lock); + + for (p=bindings; p; p=p->next) { + if (!strcmp(p->domainname, domainname) && + !strcmp(p->dirname, dirname)) { + break; + } + } + + if (!p) { + p = calloc(sizeof *p + domlen + dirlen + 2, 1); + if (!p) { + UNLOCK(lock); + return 0; + } + p->next = bindings; + p->dirlen = dirlen; + p->domainname = p->buf; + p->dirname = p->buf + domlen + 1; + memcpy(p->domainname, domainname, domlen+1); + memcpy(p->dirname, dirname, dirlen+1); + a_cas_p(&bindings, bindings, p); + } + + a_store(&p->active, 1); + + for (q=bindings; q; q=q->next) { + if (!strcmp(q->domainname, domainname) && q != p) + a_store(&q->active, 0); + } + + UNLOCK(lock); + + return (char *)p->dirname; +} + +static const char catnames[][12] = { + "LC_CTYPE", + "LC_NUMERIC", + "LC_TIME", + "LC_COLLATE", + "LC_MONETARY", + "LC_MESSAGES", +}; + +static const char catlens[] = { 8, 10, 7, 10, 11, 11 }; + +struct msgcat { + struct msgcat *next; + const void *map; + size_t map_size; + const char *plural_rule; + int nplurals; + struct binding *binding; + const struct __locale_map *lm; + int cat; +}; + +static char *dummy_gettextdomain() +{ + return "messages"; +} + +weak_alias(dummy_gettextdomain, __gettextdomain); + +char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long int n, int category) +{ + static struct msgcat *volatile cats; + struct msgcat *p; + struct __locale_struct *loc = CURRENT_LOCALE; + const struct __locale_map *lm; + size_t domlen; + struct binding *q; + int old_errno = errno; + + if ((unsigned)category >= LC_ALL) goto notrans; + + if (!domainname) domainname = __gettextdomain(); + + domlen = strnlen(domainname, NAME_MAX+1); + if (domlen > NAME_MAX) goto notrans; + + for (q=bindings; q; q=q->next) + if (!strcmp(q->domainname, domainname) && q->active) + break; + if (!q) goto notrans; + + lm = loc->cat[category]; + if (!lm) { +notrans: + errno = old_errno; + return (char *) ((n == 1) ? msgid1 : msgid2); + } + + for (p=cats; p; p=p->next) + if (p->binding == q && p->lm == lm && p->cat == category) + break; + + if (!p) { + const char *dirname, *locname, *catname, *modname, *locp; + size_t dirlen, loclen, catlen, modlen, alt_modlen; + void *old_cats; + size_t map_size; + + dirname = q->dirname; + locname = lm->name; + catname = catnames[category]; + + dirlen = q->dirlen; + loclen = strlen(locname); + catlen = catlens[category]; + + /* Logically split @mod suffix from locale name. */ + modname = memchr(locname, '@', loclen); + if (!modname) modname = locname + loclen; + alt_modlen = modlen = loclen - (modname-locname); + loclen = modname-locname; + + /* Drop .charset identifier; it is not used. */ + const char *csp = memchr(locname, '.', loclen); + if (csp) loclen = csp-locname; + + char name[dirlen+1 + loclen+modlen+1 + catlen+1 + domlen+3 + 1]; + const void *map; + + for (;;) { + snprintf(name, sizeof name, "%s/%.*s%.*s/%s/%s.mo\0", + dirname, (int)loclen, locname, + (int)alt_modlen, modname, catname, domainname); + if (map = __map_file(name, &map_size)) break; + + /* Try dropping @mod, _YY, then both. */ + if (alt_modlen) { + alt_modlen = 0; + } else if ((locp = memchr(locname, '_', loclen))) { + loclen = locp-locname; + alt_modlen = modlen; + } else { + break; + } + } + if (!map) goto notrans; + + p = calloc(sizeof *p, 1); + if (!p) { + __munmap((void *)map, map_size); + goto notrans; + } + p->cat = category; + p->binding = q; + p->lm = lm; + p->map = map; + p->map_size = map_size; + + const char *rule = "n!=1;"; + unsigned long np = 2; + const char *r = __mo_lookup(p->map, p->map_size, ""); + char *z; + while (r && strncmp(r, "Plural-Forms:", 13)) { + z = strchr(r, '\n'); + r = z ? z+1 : 0; + } + if (r) { + r += 13; + while (isspace(*r)) r++; + if (!strncmp(r, "nplurals=", 9)) { + np = strtoul(r+9, &z, 10); + r = z; + } + while (*r && *r != ';') r++; + if (*r) { + r++; + while (isspace(*r)) r++; + if (!strncmp(r, "plural=", 7)) + rule = r+7; + } + } + p->nplurals = np; + p->plural_rule = rule; + + do { + old_cats = cats; + p->next = old_cats; + } while (a_cas_p(&cats, old_cats, p) != old_cats); + } + + const char *trans = __mo_lookup(p->map, p->map_size, msgid1); + if (!trans) goto notrans; + + /* Non-plural-processing gettext forms pass a null pointer as + * msgid2 to request that dcngettext suppress plural processing. */ + + if (msgid2 && p->nplurals) { + unsigned long plural = __pleval(p->plural_rule, n); + if (plural > p->nplurals) goto notrans; + while (plural--) { + size_t rem = p->map_size - (trans - (char *)p->map); + size_t l = strnlen(trans, rem); + if (l+1 >= rem) + goto notrans; + trans += l+1; + } + } + errno = old_errno; + return (char *)trans; +} + +char *dcgettext(const char *domainname, const char *msgid, int category) +{ + return dcngettext(domainname, msgid, 0, 1, category); +} + +char *dngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long int n) +{ + return dcngettext(domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +char *dgettext(const char *domainname, const char *msgid) +{ + return dcngettext(domainname, msgid, 0, 1, LC_MESSAGES); +} diff --git a/vendor/modernc.org/libc/musl/src/locale/duplocale.c b/vendor/modernc.org/libc/musl/src/locale/duplocale.c new file mode 100644 index 000000000..030b64cb0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/duplocale.c @@ -0,0 +1,15 @@ +#include +#include +#include "locale_impl.h" +#include "libc.h" + +locale_t __duplocale(locale_t old) +{ + locale_t new = malloc(sizeof *new); + if (!new) return 0; + if (old == LC_GLOBAL_LOCALE) old = &libc.global_locale; + *new = *old; + return new; +} + +weak_alias(__duplocale, duplocale); diff --git a/vendor/modernc.org/libc/musl/src/locale/freelocale.c b/vendor/modernc.org/libc/musl/src/locale/freelocale.c new file mode 100644 index 000000000..802b8bfe1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/freelocale.c @@ -0,0 +1,9 @@ +#include +#include "locale_impl.h" + +void freelocale(locale_t l) +{ + if (__loc_is_allocated(l)) free(l); +} + +weak_alias(freelocale, __freelocale); diff --git a/vendor/modernc.org/libc/musl/src/locale/gb18030.h b/vendor/modernc.org/libc/musl/src/locale/gb18030.h new file mode 100644 index 000000000..8f300e9b6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/gb18030.h @@ -0,0 +1,1866 @@ +19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009, +20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042, +20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075, +20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091, +20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118, +20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151, +20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188, +20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218, +20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242, +20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270, +20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293, +20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328, +20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352, +20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374, +20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401, +20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416, +20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437, +20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468, +20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484, +20485,20486,20487,20488,20489,20490,20491,20494, +20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516, +20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537, +20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557, +20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575, +20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590, +20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609, +20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625, +20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638, +20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657, +20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673, +20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686, +20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702, +20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720, +20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736, +20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752, +20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766, +20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780, +20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793, +20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818, +20819,20823,20824,20825,20827,20829,20830,20831,20832, +20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867, +20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890, +20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916, +20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942, +20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959, +20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980, +20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020, +21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042, +21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071, +21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091, +21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110, +21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127, +21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143, +21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173, +21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189, +21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209, +21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224, +21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238, +21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259, +21260,21262,21265,21266,21267,21268,21272,21275,21276, +21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296, +21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316, +21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354, +21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383, +21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403, +21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425, +21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443, +21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469, +21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515, +21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559, +21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583, +21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611, +21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637, +21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664, +21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694, +21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739, +21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760, +21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781, +21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800, +21801,21803,21805,21810,21812,21813,21814,21816,21817, +21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839, +21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856, +21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882, +21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911, +21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930, +21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951, +21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973, +21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000, +22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021, +22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039, +22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059, +22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081, +22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097, +22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117, +22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137, +22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154, +22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170, +22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184, +22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198, +22200,22201,22202,22203,22205,22206,22207,22208,22209, +22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223, +22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247, +22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268, +22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290, +22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305, +22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328, +22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355, +22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385, +22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408, +22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425, +22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451, +22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468, +22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487, +22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507, +22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527, +22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547, +22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566, +22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582, +22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595, +22597,22598,22599,22600,22601,22602,22603,22606,22607, +22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624, +22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640, +22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653, +22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672, +22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691, +22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706, +22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720, +22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735, +22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750, +22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767, +22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784, +22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802, +22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828, +22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854, +22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881, +22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896, +22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923, +22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943, +22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966, +22967,22968,22970,22972,22973,22975,22976,22977,22978, +22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001, +23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021, +23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036, +23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061, +23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080, +23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098, +23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116, +23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131, +23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147, +23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165, +23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179, +23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193, +23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208, +23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226, +23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243, +23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262, +23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282, +23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295, +23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309, +23310,23311,23312,23313,23314,23315,23316,23317,23320, +23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333, +23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347, +23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363, +23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378, +23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414, +23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440, +23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473, +23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501, +23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520, +23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539, +23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563, +23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585, +23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605, +23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639, +23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659, +23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677, +23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698, +23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722, +23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746, +23747,23749,23750,23751,23752,23753,23754,23756,23757, +23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772, +23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793, +23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807, +23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825, +23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842, +23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862, +23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877, +23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894, +23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910, +23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928, +23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942, +23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955, +23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970, +23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983, +23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997, +23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011, +24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025, +24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056, +24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078, +24082,24083,24087,24094,24095,24096,24097,24098,24099, +24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117, +24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138, +24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154, +24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171, +24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195, +24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227, +24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250, +24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264, +24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284, +24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299, +24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316, +24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345, +24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368, +24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386, +24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399, +24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424, +24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451, +24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479, +24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497, +24498,24499,24500,24502,24504,24505,24506,24507,24510, +24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538, +24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560, +24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588, +24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621, +24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638, +24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659, +24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686, +24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712, +24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734, +24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759, +24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777, +24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798, +24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828, +24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849, +24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866, +24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884, +24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898, +24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916, +24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932, +24933,24934,24937,24938,24939,24940,24941,24942,24943, +24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959, +24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973, +24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988, +24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006, +25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020, +25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038, +25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054, +25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068, +25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082, +25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107, +25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133, +25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156, +25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182, +25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208, +25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229, +25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258, +25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280, +25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323, +25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354, +25355,25356,25357,25359,25360,25362,25363,25364,25365, +25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395, +25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415, +25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436, +25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459, +25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478, +25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502, +25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533, +25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555, +25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573, +25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593, +25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614, +25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636, +25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654, +25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677, +25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693, +25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710, +25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726, +25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743, +25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762, +25763,25765,25766,25767,25768,25770,25771,25775,25777, +25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798, +25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817, +25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834, +25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847, +25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861, +25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876, +25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890, +25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907, +25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931, +25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953, +25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974, +25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988, +25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008, +26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034, +26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055, +26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075, +26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101, +26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121, +26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145, +26146,26147,26148,26150,26153,26154,26155,26156,26158, +26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180, +26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203, +26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221, +26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243, +26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260, +26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276, +26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293, +26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308, +26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321, +26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338, +26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357, +26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380, +26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401, +26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424, +26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450, +26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471, +26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498, +26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516, +26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546, +26548,26553,26554,26555,26556,26557,26558,26559,26560, +26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582, +26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606, +26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627, +26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654, +26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670, +26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703, +26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732, +26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748, +26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765, +26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781, +26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801, +26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817, +26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835, +26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853, +26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870, +26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888, +26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906, +26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922, +26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939, +26940,26942,26944,26945,26947,26948,26949,26950,26951, +26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26965, +26966,26968,26969,26971,26972,26975,26977,26978,26980,26981,26983,26984,26985, +26986,26988,26989,26991,26992,26994,26995,26996,26997,26998,27002,27003,27005, +27006,27007,27009,27011,27013,27018,27019,27020,27022,27023,27024,27025,27026, +27027,27030,27031,27033,27034,27037,27038,27039,27040,27041,27042,27043,27044, +27045,27046,27049,27050,27052,27054,27055,27056,27058,27059,27061,27062,27064, +27065,27066,27068,27069,27070,27071,27072,27074,27075,27076,27077,27078,27079, +27080,27081,27083,27085,27087,27089,27090,27091,27093,27094,27095,27096,27097, +27098,27100,27101,27102,27105,27106,27107,27108,27109,27110,27111,27112,27113, +27114,27115,27116,27118,27119,27120,27121,27123,27124,27125,27126,27127,27128, +27129,27130,27131,27132,27134,27136,27137,27138,27139,27140,27141,27142,27143, +27144,27145,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157, +27158,27161,27162,27163,27164,27165,27166,27168,27170,27171,27172,27173,27174, +27175,27177,27179,27180,27181,27182,27184,27186,27187,27188,27190,27191,27192, +27193,27194,27195,27196,27199,27200,27201,27202,27203,27205,27206,27208,27209, +27210,27211,27212,27213,27214,27215,27217,27218,27219,27220,27221,27222,27223, +27226,27228,27229,27230,27231,27232,27234,27235,27236,27238,27239,27240,27241, +27242,27243,27244,27245,27246,27247,27248,27250,27251,27252,27253,27254,27255, +27256,27258,27259,27261,27262,27263,27265,27266,27267,27269,27270,27271,27272, +27273,27274,27275,27276,27277,27279,27282,27283,27284, +27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,27297,27298,27299, +27300,27301,27302,27303,27304,27306,27309,27310,27311,27312,27313,27314,27315, +27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328, +27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341, +27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354, +27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367, +27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380, +27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393, +27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406, +27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419, +27420,27421,27422,27423,27429,27430,27432,27433,27434,27435,27436,27437,27438, +27439,27440,27441,27443,27444,27445,27446,27448,27451,27452,27453,27455,27456, +27457,27458,27460,27461,27464,27466,27467,27469,27470,27471,27472,27473,27474, +27475,27476,27477,27478,27479,27480,27482,27483,27484,27485,27486,27487,27488, +27489,27496,27497,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508, +27509,27510,27511,27512,27514,27517,27518,27519,27520,27525,27528,27532,27534, +27535,27536,27537,27540,27541,27543,27544,27545,27548,27549,27550,27551,27552, +27554,27555,27556,27557,27558,27559,27560,27561,27563,27564,27565,27566,27567, +27568,27569,27570,27574,27576,27577,27578,27579,27580,27581,27582,27584,27587, +27588,27590,27591,27592,27593,27594,27596,27598,27600, +27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,27622, +27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,27640, +27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,27658, +27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,27692, +27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,27716, +27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,27737, +27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,27763, +27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,27789, +27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,27810, +27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,27843, +27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,27868, +27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,27904, +27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,27924, +27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,27944, +27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,27970, +27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,28002, +28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,28022, +28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,28042, +28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,28069, +28076,28077,28080,28081,28083,28084,28086,28087,28089, +28090,28091,28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110, +28111,28112,28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131, +28133,28135,28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152, +28154,28157,28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169, +28171,28175,28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198, +28199,28200,28202,28204,28206,28208,28209,28211,28213,28214,28215,28217,28219, +28220,28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234, +28235,28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254, +28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269, +28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283, +28284,28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302, +28305,28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320, +28321,28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341, +28344,28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362, +28364,28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391, +28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407, +28408,28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423, +28424,28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441, +28442,28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456, +28460,28462,28464,28466,28468,28469,28471,28472,28473, +28474,28475,28476,28477,28479,28480,28481,28482,28483,28484,28485,28488,28489, +28490,28492,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28505, +28506,28507,28509,28511,28512,28513,28515,28516,28517,28519,28520,28521,28522, +28523,28524,28527,28528,28529,28531,28533,28534,28535,28537,28539,28541,28542, +28543,28544,28545,28546,28547,28549,28550,28551,28554,28555,28559,28560,28561, +28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28573,28574,28575, +28576,28578,28579,28580,28581,28582,28584,28585,28586,28587,28588,28589,28590, +28591,28592,28593,28594,28596,28597,28599,28600,28602,28603,28604,28605,28606, +28607,28609,28611,28612,28613,28614,28615,28616,28618,28619,28620,28621,28622, +28623,28624,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637, +28639,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653, +28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668, +28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681, +28682,28683,28684,28685,28686,28687,28688,28690,28691,28692,28693,28694,28695, +28696,28697,28700,28701,28702,28703,28704,28705,28706,28708,28709,28710,28711, +28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724, +28726,28727,28728,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739, +28740,28741,28742,28743,28744,28745,28746,28747,28749,28750,28752,28753,28754, +28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28767,28768, +28769,28770,28771,28772,28773,28774,28775,28776,28777, +28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,28801,28802, +28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,28819,28823, +28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839, +28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,28868,28869, +28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884, +28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,28901,28906, +28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,28924,28926, +28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,28940,28941, +28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,28960,28961, +28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,28974,28978, +28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992, +28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,29008,29009, +29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,29023,29024, +29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,29041,29044, +29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,29059,29061, +29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,29075,29077, +29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,29093,29094, +29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,29110,29111, +29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,29125,29126, +29127,29128,29129,29130,29131,29132,29133,29135,29136, +29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151, +29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168, +29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182, +29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196, +29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209, +29210,29211,29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223, +29225,29227,29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249, +29250,29251,29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267, +29268,29269,29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290, +29291,29292,29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309, +29314,29315,29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332, +29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346, +29347,29348,29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363, +29365,29370,29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386, +29387,29388,29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567, +58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580, +58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593, +58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606, +58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619, +58620,58621,58622,58623,58624,58625,58626,58627,58628, +58629,58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641, +58642,58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654, +58655,58656,58657,58658,58659,58660,58661,12288,12289,12290,183,713,711,168, +12291,12293,8212,65374,8214,8230,8216,8217,8220,8221,12308,12309,12296,12297, +12298,12299,12300,12301,12302,12303,12310,12311,12304,12305,177,215,247,8758, +8743,8744,8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747, +8750,8801,8780,8776,8765,8733,8800,8814,8815,8804,8805,8734,8757,8756,9794, +9792,176,8242,8243,8451,65284,164,65504,65505,8240,167,8470,9734,9733,9675, +9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,8592,8593,8595,12307,58662, +58663,58664,58665,58666,58667,58668,58669,58670,58671,58672,58673,58674,58675, +58676,58677,58678,58679,58680,58681,58682,58683,58684,58685,58686,58687,58688, +58689,58690,58691,58692,58693,58694,58695,58696,58697,58698,58699,58700,58701, +58702,58703,58704,58705,58706,58707,58708,58709,58710,58711,58712,58713,58714, +58715,58716,58717,58718,58719,58720,58721,58722,58723,58724,58725,58726,58727, +58728,58729,58730,58731,58732,58733,58734,58735,58736,58737,58738,58739,58740, +58741,58742,58743,58744,58745,58746,58747,58748,58749,58750,58751,58752,58753, +58754,58755,58756,58757,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569, +59238,59239,59240,59241,59242,59243,9352,9353,9354,9355,9356,9357,9358,9359, +9360,9361,9362,9363,9364,9365,9366,9367,9368, +9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343, +9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,9317,9318, +9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,12839, +12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553, +8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,58766, +58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,58779, +58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,58792, +58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,58805, +58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,58818, +58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,58831, +58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,58844, +58845,58846,58847,58848,58849,58850,58851,58852,58853,65281,65282,65283,65509, +65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297, +65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310, +65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323, +65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336, +65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349, +65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362, +65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,58854, +58855,58856,58857,58858, +58859,58860,58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871, +58872,58873,58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884, +58885,58886,58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897, +58898,58899,58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910, +58911,58912,58913,58914,58915,58916,58917,58918,58919,58920,58921,58922,58923, +58924,58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936, +58937,58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949, +12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365, +12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378, +12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391, +12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404, +12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417, +12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430, +12431,12432,12433,12434,12435,59250,59251,59252,59253,59254,59255,59256,59257, +59258,59259,59260,58950,58951,58952,58953,58954,58955,58956,58957,58958,58959, +58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,58972, +58973,58974,58975,58976,58977,58978,58979,58980,58981,58982,58983,58984,58985, +58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,58997,58998, +58999,59000,59001,59002,59003,59004,59005,59006,59007,59008,59009,59010,59011, +59012,59013,59014,59015,59016,59017,59018,59019,59020, +59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,59033, +59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,12449, +12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462, +12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475, +12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488, +12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501, +12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514, +12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527, +12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,59266, +59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,59056, +59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,59069, +59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,59082, +59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,59095, +59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,59108, +59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,59121, +59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,59134, +59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,920,921, +922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,59270,59271, +59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953, +954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,59277,59278,59279, +59280,59281,59282,59283,65077,65078,65081,65082,65087,65088,65085,65086,65089, +65090,65091,65092,59284,59285,65083,65084,65079,65080,65073,59286,65075,65076, +59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145, +59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158, +59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171, +59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184, +59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197, +59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210, +59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223, +59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236, +59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052, +1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067, +1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304, +59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078, +1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093, +1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314, +59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213, +8229,8245,8453,8457,8598,8599,8600,8601, +8725,8735,8739,8786,8806,8807,8895,9552,9553,9554,9555,9556,9557,9558,9559, +9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574, +9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9601,9602, +9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9619,9620, +9621,9660,9661,9698,9699,9700,9701,9737,8853,12306,12317,12318,59324,59325, +59326,59327,59328,59329,59330,59331,59332,59333,59334,257,225,462,224,275,233, +283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252, +234,593,59335,324,328,505,609,59337,59338,59339,59340,12549,12550,12551,12552, +12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565, +12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578, +12579,12580,12581,12582,12583,12584,12585,59341,59342,59343,59344,59345,59346, +59347,59348,59349,59350,59351,59352,59353,59354,59355,59356,59357,59358,59359, +59360,59361,12321,12322,12323,12324,12325,12326,12327,12328,12329,12963,13198, +13199,13212,13213,13214,13217,13252,13262,13265,13266,13269,65072,65506,65508, +59362,8481,12849,59363,8208,59364,59365,59366,12540,12443,12444,12541,12542, +12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106, +65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,65120,65121, +65122,65123,65124,65125,65126,65128,65129,65130,65131,12350,12272,12273,12274, +12275,12276,12277, +12278,12279,12280,12281,12282,12283,12295,59380,59381,59382,59383,59384,59385, +59386,59387,59388,59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478, +9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493, +9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508, +9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523, +9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538, +9539,9540,9541,9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397, +59398,59399,59400,59401,59402,59403,59404,59405,59406,59407,29404,29405,29407, +29410,29411,29412,29413,29414,29415,29418,29419,29429,29430,29433,29437,29438, +29439,29440,29442,29444,29445,29446,29447,29448,29449,29451,29452,29453,29455, +29456,29457,29458,29460,29464,29465,29466,29471,29472,29475,29476,29478,29479, +29480,29485,29487,29488,29490,29491,29493,29494,29498,29499,29500,29501,29504, +29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29518, +29519,29521,29523,29524,29525,29526,29528,29529,29530,29531,29532,29533,29534, +29535,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29550, +29552,29553,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,57354, +57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,57367, +57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,57380, +57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392, +57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405, +57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418, +57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431, +57432,57433,57434,57435,57436,57437,29554,29555,29556,29557,29558,29559,29560, +29561,29562,29563,29564,29565,29567,29568,29569,29570,29571,29573,29574,29576, +29578,29580,29581,29583,29584,29586,29587,29588,29589,29591,29592,29593,29594, +29596,29597,29598,29600,29601,29603,29604,29605,29606,29607,29608,29610,29612, +29613,29617,29620,29621,29622,29624,29625,29628,29629,29630,29631,29633,29635, +29636,29637,29638,29639,29643,29644,29646,29650,29651,29652,29653,29654,29655, +29656,29658,29659,29660,29661,29663,29665,29666,29667,29668,29670,29672,29674, +29675,29676,29678,29679,29680,29681,29683,29684,29685,29686,29687,57438,57439, +57440,57441,57442,57443,57444,57445,57446,57447,57448,57449,57450,57451,57452, +57453,57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465, +57466,57467,57468,57469,57470,57471,57472,57473,57474,57475,57476,57477,57478, +57479,57480,57481,57482,57483,57484,57485,57486,57487,57488,57489,57490,57491, +57492,57493,57494,57495,57496,57497,57498,57499,57500,57501,57502,57503,57504, +57505,57506,57507,57508,57509,57510,57511,57512,57513,57514,57515,57516,57517, +57518,57519,57520,57521,57522,57523,57524,57525,57526,57527,57528,57529,57530, +57531,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29700, +29703,29704,29707,29708,29709,29710,29713,29714,29715, +29716,29717,29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731, +29732,29735,29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755, +29757,29758,29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770, +29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789, +29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804, +29806,29807,29809,29810,29811,29812,29813,29816,29817,29818,57532,57533,57534, +57535,57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547, +57548,57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560, +57561,57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573, +57574,57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586, +57587,57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599, +57600,57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612, +57613,57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625, +29819,29820,29821,29823,29826,29828,29829,29830,29832,29833,29834,29836,29837, +29839,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29853, +29855,29856,29857,29858,29859,29860,29861,29862,29866,29867,29868,29869,29870, +29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29883,29884, +29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897, +29898,29899,29900,29901,29902,29903,29904,29905,29907,29908,29909,29910,29911, +29912,29913,29914,29915,29917,29919,29921,29925,29927, +29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,57629, +57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,57642, +57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,57655, +57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,57668, +57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,57681, +57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,57694, +57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,57707, +57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,29939, +29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,29957, +29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,29974, +29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,29998, +30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,30025, +30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,30047, +30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,30063, +30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,30081, +30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,57728, +57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741, +57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754, +57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767, +57768,57769,57770,57771,57772,57773,57774,57775,57776, +57777,57778,57779,57780,57781,57782,57783,57784,57785,57786,57787,57788,57789, +57790,57791,57792,57793,57794,57795,57796,57797,57798,57799,57800,57801,57802, +57803,57804,57805,57806,57807,57808,57809,57810,57811,57812,57813,30088,30089, +30090,30092,30093,30094,30096,30099,30101,30104,30107,30108,30110,30114,30118, +30119,30120,30121,30122,30125,30134,30135,30138,30139,30143,30144,30145,30150, +30155,30156,30158,30159,30160,30161,30163,30167,30169,30170,30172,30173,30175, +30176,30177,30181,30185,30188,30189,30190,30191,30194,30195,30197,30198,30199, +30200,30202,30203,30205,30206,30210,30212,30214,30215,30216,30217,30219,30221, +30222,30223,30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243, +30247,30248,30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269, +30273,30274,30276,57814,57815,57816,57817,57818,57819,57820,57821,57822,57823, +57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,57835,57836, +57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,57848,57849, +57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,57861,57862, +57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,57874,57875, +57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,57887,57888, +57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,57900,57901, +57902,57903,57904,57905,57906,57907,30277,30278,30279,30280,30281,30282,30283, +30286,30287,30288,30289,30290,30291,30293,30295,30296,30297,30298,30299,30301, +30303,30304,30305,30306,30308,30309,30310,30311,30312, +30313,30314,30316,30317,30318,30320,30321,30322,30323,30324,30325,30326,30327, +30329,30330,30332,30335,30336,30337,30339,30341,30345,30346,30348,30349,30351, +30352,30354,30356,30357,30359,30360,30362,30363,30364,30365,30366,30367,30368, +30369,30370,30371,30373,30374,30375,30376,30377,30378,30379,30380,30381,30383, +30384,30387,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30400, +30401,30403,21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702, +33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696, +32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453, +25420,25170,21485,21543,31494,20843,30116,24052,25300,36299,38774,25226,32793, +22365,38712,32610,29240,30333,26575,30334,25670,20336,36133,25308,31255,26001, +29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150, +32458,37030,24110,26758,27036,33152,32465,26834,30917,34444,38225,20621,35876, +33502,32990,21253,35090,21093,30404,30407,30409,30411,30412,30419,30421,30425, +30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,30440,30441, +30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,30461,30463, +30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,30482,30483, +30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,30500,30501, +30503,30506,30507,30508,30510,30512,30513,30514,30515,30516,30521,30523,30525, +30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,30540,30541,30542, +30543,30546,30547,30548,30549,30550,30551,30552,30553, +30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190, +26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811, +28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924, +40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199, +30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534, +36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920, +40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564, +19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,30570,30573, +30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30586,30587, +30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,30608,30611, +30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30625,30627, +30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,30647,30648, +30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,30663,30664, +30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,30677,30678, +30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,29627,33760, +25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046, +33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,27493,31807, +37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756, +34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,34255, +25805,31961,27133,26361,33609,21397,31574,20391,20876, +27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046, +35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416, +39076,26124,29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711, +30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734, +30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762, +30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787, +30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809, +30810,30811,30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823, +30824,30825,30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842, +30843,30845,30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607, +32928,21378,25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034, +21557,28818,36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216, +24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243, +24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831, +24347,39536,32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411, +23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985, +33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853, +30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878, +30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901, +30902,30903,30904,30906,30907,30908,30909,30911,30912, +30914,30915,30916,30918,30919,30920,30924,30925,30926,30927,30929,30930,30931, +30934,30935,30936,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947, +30948,30949,30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963, +30965,30966,30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980, +30982,30983,30984,30985,30986,30987,30988,30784,20648,30679,25616,35302,22788, +25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383, +21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,34850, +25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176, +27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479, +31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,23544, +30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,21574, +27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,30989,30990,30991, +30992,30993,30994,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005, +31007,31008,31009,31010,31011,31013,31014,31015,31016,31017,31018,31019,31020, +31021,31022,31023,31024,31025,31026,31027,31029,31030,31031,31032,31033,31037, +31039,31042,31043,31044,31045,31047,31050,31051,31052,31053,31054,31055,31056, +31057,31058,31060,31061,31064,31065,31073,31075,31076,31078,31081,31082,31083, +31084,31086,31088,31089,31090,31091,31092,31093,31094,31097,31099,31100,31101, +31102,31103,31106,31107,31110,31111,31112,31113,31115,31116,31117,31118,31120, +31121,31122,24608,32829,25285,20025,21333,37112,25528, +32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,25377,20826,33633, +26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423, +24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404, +36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093, +24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291, +30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514, +38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,31124,31125,31126, +31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140, +31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154, +31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,31176,31178, +31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,31196,31197, +31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,31218,31219,31220, +31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,31237,31239,31240, +31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,31256,31257,31259, +31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908, +33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910, +36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208, +32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431, +23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810, +22842,22427,36530,26421,36346,33333,21057,24816,22549, +34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295, +24681,32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268, +31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281, +31282,31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301, +31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316, +31317,31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330, +31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343, +31345,31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370, +31371,31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394, +36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763, +27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867, +22346,33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750, +21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545, +27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016, +23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857, +20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526, +20239,20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409, +31410,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424, +31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438, +31439,31440,31441,31442,31443,31444,31445,31447,31448, +31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,31466,31467,31468, +31470,31472,31473,31474,31475,31476,31477,31478,31479,31480,31483,31484,31486, +31488,31489,31490,31493,31495,31497,31500,31501,31502,31504,31506,31507,31510, +31511,31512,31514,31516,31517,31519,31521,31522,31523,31527,31529,31533,28014, +28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220, +33104,36212,21103,35206,36171,22797,20613,20184,38428,29238,33145,36127,23500, +35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297, +24178,29976,26438,26577,31487,32925,36214,24863,31174,25954,36195,20872,21018, +38050,32568,32923,32434,23703,28207,26464,31705,30347,39640,33167,32660,31957, +25630,38224,31295,21578,21733,27468,25601,25096,40509,33011,30105,21106,38761, +33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356, +24218,32697,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,31551, +31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,31575, +31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,31594, +31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,31615, +31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,31631, +31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,31651,31652, +31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,31675,31676, +31677,31678,31679,31680,31682,31683,31684,22466,32831,26775,24037,25915,21151, +24685,40858,20379,36524,20844,23467,24339,24041,27742, +25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764, +33735,21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929, +25925,39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618, +26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191, +36891,29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690, +26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807, +21704,31685,31688,31689,31690,31691,31693,31694,31695,31696,31698,31700,31701, +31702,31703,31704,31707,31708,31710,31711,31712,31714,31715,31716,31719,31720, +31721,31723,31724,31725,31727,31728,31730,31731,31732,31733,31734,31736,31737, +31738,31739,31741,31743,31744,31745,31746,31747,31748,31749,31750,31752,31753, +31754,31757,31758,31760,31761,31762,31763,31764,31765,31767,31768,31769,31770, +31771,31772,31773,31774,31776,31777,31778,31779,31780,31781,31784,31785,31787, +31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31801, +31802,31803,31804,31805,31806,31810,39608,23401,28023,27686,20133,23475,39559, +37219,25000,37039,38889,21547,28085,23506,20989,21898,32597,32752,25788,25421, +26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627, +37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,31166,21644,20309, +21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,40657,30165, +24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511, +27946,23439,24344,32418,21897,20399,29492,21564,21402, +20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246, +31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824, +31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837, +31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850, +31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865, +31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882, +31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904, +31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925, +31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457, +21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351, +27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462, +24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140, +24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321, +24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130, +39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096, +20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940, +31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963, +31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980, +31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996, +31997,31998,31999,32000,32001,32002,32003,32004,32005, +32006,32007,32008,32009,32011,32012,32013,32014,32015,32016,32017,32018,32019, +32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32033, +32035,32036,32037,32038,32040,32041,32042,32044,32045,32046,32048,32049,32050, +32051,32052,32053,32054,32908,39269,36857,28608,35749,40481,23020,32489,32521, +21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423, +25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,24760,27982, +23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841, +20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550, +23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,22904,32516, +33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099, +37492,36341,36145,35265,38190,31661,20214,32055,32056,32057,32058,32059,32060, +32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073, +32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086, +32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099, +32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32111,32112,32113, +32114,32115,32116,32117,32118,32120,32121,32122,32123,32124,32125,32126,32127, +32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140, +32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,20581, +33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086, +33931,26728,22870,35762,21280,37233,38477,34121,26898, +30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389, +33050,29409,35282,39290,32564,32478,21119,25945,37237,36735,36739,21483,31382, +25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,30571, +31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819, +23626,24062,31563,26020,37329,20170,27941,35167,32039,38182,20165,35880,36827, +38771,26187,31105,36817,28908,28024,32153,32154,32155,32156,32157,32158,32159, +32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,32173, +32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187, +32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200, +32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213, +32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226, +32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239, +32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,23613,21170, +33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686, +26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847, +31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,26087, +33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,23616, +21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465, +21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899, +25225,25496,20500,29237,35273,20915,35776,32477,22343, +33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,32258, +32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271, +32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284, +32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297, +32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310, +32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,32325, +32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339, +32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,27994, +37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570, +21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335, +28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,28212, +20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380, +25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,22840, +22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378, +26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608, +32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362, +32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375, +32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,32389, +32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402, +32403,32404,32405,32406,32407,32408,32409,32410,32412, +32413,32414,32430,32436,32443,32444,32470,32484,32492,32505,32522,32528,32542, +32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,32582,32583,32584, +32585,32586,32587,32588,32589,32590,32591,32594,32595,39304,24871,28291,22372, +26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771, +21862,33713,26469,36182,34013,23146,26639,25318,31726,38417,20848,28572,35888, +25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010, +25438,21171,29282,32769,20332,23013,37226,28889,28061,21202,20048,38647,38253, +34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400, +26792,29313,40654,31729,29432,31163,28435,29702,26446,37324,40100,31036,33673, +33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,32598, +32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620, +32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639, +32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656, +32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675, +32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,32691,32692,32693, +32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,32713, +32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,32732, +32733,32734,32738,32739,30178,31435,31890,27813,38582,21147,29827,21737,20457, +32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860, +32451,31918,20937,26753,31921,33391,20004,36742,37327, +26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730, +38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020, +37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278, +32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311, +30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,32740,32743, +32744,32746,32747,32748,32749,32751,32754,32756,32757,32758,32759,32760,32761, +32762,32765,32766,32767,32770,32775,32776,32777,32778,32782,32783,32785,32787, +32794,32795,32797,32798,32799,32801,32803,32804,32811,32812,32813,32814,32815, +32816,32818,32820,32825,32826,32828,32830,32832,32833,32836,32837,32839,32840, +32841,32846,32847,32848,32849,32851,32853,32854,32855,32857,32859,32860,32861, +32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32875,32876, +32877,32878,32879,32880,32882,32883,32884,32885,32886,32887,32888,32889,32890, +32891,32892,32893,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475, +33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335, +36162,40575,28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653, +23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365, +20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599, +36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,40635,29595,30721, +34434,39532,39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314, +34542,28385,34067,26364,24930,28459,32894,32897,32898, +32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,32921, +32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,32955, +32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,32981, +32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,33023, +33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,33049,33051, +33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065, +33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,33083,33084, +33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611, +30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238, +38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376, +38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753, +31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496, +32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218, +24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483, +38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,33095,33097, +33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121, +33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142, +33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166, +33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185, +33186,33188,33189,33191,33193,33195,33196,33197,33198, +33199,33200,33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214, +33215,33220,33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234, +33235,25721,34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664, +27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675, +26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048, +37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376, +33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877, +23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467, +24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744, +26592,29406,20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244, +33245,33246,33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262, +33263,33264,33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283, +33287,33288,33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304, +33305,33306,33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340, +33341,33343,33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358, +33360,33361,33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374, +33376,33377,33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197, +38062,32445,33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111, +25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866, +36276,29228,24085,24597,29750,25293,25490,29260,24472, +28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049, +32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060, +36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028, +26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259, +21128,29749,27607,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403, +33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429, +33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467, +33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501, +33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526, +33528,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,33555, +33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574, +33577,33578,33582,33584,33586,33591,33595,33597,21860,33086,30130,30382,21305, +30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,31080,25735, +30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,20973,29942, +35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138, +20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689, +26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855, +27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225, +21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,33598,33599, +33601,33602,33604,33605,33608,33610,33611,33612,33613, +33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,33649,33650,33651, +33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,33667,33668,33671, +33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,33686,33687,33689, +33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,33708,33709,33710, +33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,33737,33739,33741, +33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,33758,33762,33763, +33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,25190,38030,38085, +21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,28508,36963,27973, +35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,34103,24378,25250, +27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789, +20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220, +33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228, +27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234, +37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,33774,33775,33779, +33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,33794,33797,33799, +33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,33817,33818,33819, +33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,33837,33838,33839, +33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,33854,33855,33856, +33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,33868,33869,33870, +33871,33872,33874,33875,33876,33877,33878,33880,33885, +33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904, +33906,33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079, +26435,37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364, +40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880, +22199,35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219, +35748,20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076, +28342,23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785, +20083,27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369, +25746,27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920, +33921,33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940, +33941,33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957, +33958,33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973, +33974,33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995, +33996,33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014, +34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034, +34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049, +34050,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073, +26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194, +29642,33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892, +27733,25159,32558,22674,20260,21830,36175,26188,19978, +23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461, +22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,30775, +30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,32958, +24910,28183,22768,29983,29989,29298,21319,32499,34051,34052,34053,34054,34055, +34056,34057,34058,34059,34061,34062,34063,34064,34066,34068,34069,34070,34072, +34073,34075,34076,34077,34078,34080,34082,34083,34084,34085,34086,34087,34088, +34089,34090,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34110, +34111,34112,34113,34114,34116,34117,34118,34119,34123,34124,34125,34126,34127, +34128,34129,34130,34131,34132,34133,34135,34136,34138,34139,34140,34141,34143, +34144,34145,34146,34147,34149,34150,34151,34153,34154,34155,34156,34157,34158, +34159,34160,34161,34163,34165,34166,34167,34168,34172,34173,34175,34176,34177, +30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,23608,34417, +21313,30707,25342,26102,20160,39135,34432,23454,35782,21490,30690,20351,23630, +39542,22987,24335,31034,22763,19990,26623,20107,25325,35475,36893,21183,26159, +21980,22124,36866,20181,20365,37322,39280,27663,24066,24643,23460,35270,35797, +25910,25163,39318,23432,23551,25480,21806,21463,30246,20861,34092,26530,26803, +27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257, +26329,32626,34560,40653,40736,23646,26415,36848,26641,26463,25101,31446,22661, +24246,25968,28465,34178,34179,34182,34184,34185,34186,34187,34188,34189,34190, +34192,34193,34194,34195,34196,34197,34198,34199,34200, +34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217, +34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236, +34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251, +34252,34253,34254,34257,34258,34260,34262,34263,34264,34265,34266,34267,34269, +34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,34284, +34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,24661, +21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700, +30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070, +24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051, +26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487, +37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948, +31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385, +25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427, +22905,22612,34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310, +34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324, +34325,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338, +34339,34340,34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353, +34354,34355,34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368, +34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386, +34387,34389,34390,34391,34392,34393,34395,34396,34397, +34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374, +36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674, +36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899, +25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538, +28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752, +22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420, +21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980, +24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548, +28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436, +34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455, +34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477, +34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498, +34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525, +34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549, +34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572, +34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351, +36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171, +20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303, +21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216, +25302,25176,33073,40501,38464,39534,39548,26925,22949, +25299,21822,25366,21703,34521,27964,23043,29926,34972,27498,22806,35916,24367, +28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113, +19975,33109,27754,29579,20129,26505,32593,24448,26106,26395,24536,22916,23041, +34585,34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605, +34607,34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625, +34626,34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644, +34645,34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663, +34664,34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,34679,34680, +34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703, +34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718, +34720,34721,34722,34723,34724,24013,24494,21361,38886,36829,26693,22260,21807, +24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074, +21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201, +34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583, +28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820, +23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,21320,33310,20237, +20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512, +35199,30802,30717,26224,22075,21560,38177,29306,34725,34726,34727,34729,34730, +34734,34736,34737,34738,34740,34742,34743,34744,34745,34747,34748,34750,34751, +34753,34754,34755,34756,34757,34759,34760,34761,34764, +34765,34766,34767,34768,34772,34773,34774,34775,34776,34777,34778,34780,34781, +34782,34783,34785,34786,34787,34788,34790,34791,34792,34793,34795,34796,34797, +34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34810,34811,34812, +34813,34815,34816,34817,34818,34820,34821,34822,34823,34824,34825,34827,34828, +34829,34830,34831,34832,34833,34834,34836,34839,34840,34841,34842,34844,34845, +34846,34847,34848,34851,31232,24687,24076,24713,33181,22805,24796,29060,28911, +28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553, +25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414, +22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386, +28046,24358,23244,26174,38505,29616,29486,21439,33146,39301,32673,23466,38519, +38480,32447,30456,21410,38262,39321,31665,35140,28248,20065,32724,31077,35814, +24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066, +21742,22179,38144,28040,23477,28102,26195,34852,34853,34854,34855,34856,34857, +34858,34859,34860,34861,34862,34863,34864,34865,34867,34868,34869,34870,34871, +34872,34874,34875,34877,34878,34879,34881,34882,34883,34886,34887,34888,34889, +34890,34891,34894,34895,34896,34897,34898,34899,34901,34902,34904,34906,34907, +34908,34909,34910,34911,34912,34918,34919,34922,34925,34927,34929,34931,34932, +34933,34934,34936,34937,34938,34939,34940,34944,34947,34950,34951,34953,34954, +34956,34958,34959,34960,34961,34963,34964,34965,34967,34968,34969,34970,34971, +34973,34974,34975,34976,34977,34979,34981,34982,34983, +34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463, +34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809, +25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515, +20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266, +24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462, +32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035, +24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493, +36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,34996, +34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015, +35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035, +35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054, +35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076, +35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,35093, +35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111, +35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,30307, +30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,35810, +23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,40493, +21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,28937, +21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,38414, +28814,27839,22852,25513,30524,34893,28436,33395,22576, +29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495, +31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,20859,26679, +28478,36992,33136,22934,29814,35128,35129,35130,35131,35132,35133,35134,35135, +35136,35138,35139,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150, +35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163, +35164,35165,35168,35169,35170,35171,35172,35173,35175,35176,35177,35178,35179, +35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192, +35193,35194,35196,35197,35198,35200,35202,35204,35205,35207,35208,35209,35210, +35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223, +35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,25671,23591,36965, +31377,35875,23002,21676,33280,33647,35201,32768,26928,22094,32822,29239,37326, +20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,19968,22777,21307, +25558,38129,20381,20234,34915,39056,22839,36951,31227,20202,33008,30097,27778, +23452,23016,24413,26885,34433,20506,24050,20057,30691,20197,33402,25233,26131, +37009,23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518, +20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643, +22240,27575,38899,38452,23035,21535,38134,28139,23493,39278,23609,24341,38544, +35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246, +35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259, +35260,35261,35262,35263,35264,35267,35277,35283,35284, +35285,35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304, +35305,35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320, +35321,35322,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334, +35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348, +35349,35350,35351,35352,35353,35354,35355,35356,35357,21360,33521,27185,23156, +40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,39062, +30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891, +28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,38080, +29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,36802, +28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189, +28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,22495, +33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,35358, +35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371, +35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384, +35385,35386,35387,35388,35389,35391,35392,35393,35394,35395,35396,35397,35398, +35399,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412, +35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425, +35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438, +35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452, +35453,35454,35455,35456,28020,23507,35029,39044,35947, +39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278, +29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,36291,38053, +23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,36816,34164, +37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877, +22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531, +26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901, +36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,35457,35458, +35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,35472,35473, +35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487, +35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500, +35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513, +35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526, +35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539, +35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552, +35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688, +25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759, +23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467, +24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157, +25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761, +32773,38167,34071,36825,27993,29645,26015,30495,29956, +30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976, +25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558, +35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571, +35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584, +35585,35586,35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598, +35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611, +35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625, +35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638, +35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651, +35652,35653,24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930, +33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351, +27490,36286,21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769, +21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544, +38047,34935,32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788, +31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417, +29482,35832,35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609, +21161,34496,36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661, +35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674, +35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688, +35689,35690,35691,35693,35694,35695,35696,35697,35698, +35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711, +35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724, +35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737, +35738,35739,35740,35741,35742,35743,35756,35761,35771,35783,35792,35818,35849, +35870,20303,27880,31069,39547,25235,29226,25341,19987,30742,36716,25776,36186, +31686,26729,24196,35013,22918,25758,22766,29366,26894,38181,36861,36184,22368, +32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796, +27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,23376, +33258,28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,36208,22863, +25549,31199,36275,21330,26063,31062,35781,38459,32452,38075,32386,22068,37257, +26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,59408, +59409,59410,59411,59412,35896,35897,35898,35899,35900,35901,35902,35903,35904, +35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,35920,35921,35922, +35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,35935,35936,35939, +35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,35952,35953,35954, +35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,35969,35971,35972, +35974,35975,35976,35979,35981,35982,35983,35984,35985,35986,35987,35989,35990, +35991,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004, +36005,36006,36007,36008,36009,36010,36011,36012,36013,20109,19980,20800,19984, +24319,21317,19989,20120,19998,39730,23404,22121,20008, +31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,39319,27603,30590, +40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389, +21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,21310,36188,21350, +21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,21089,21084,33967, +21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,20162,20200,20193, +20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,20267,20318,20327, +25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023, +36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036, +36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049, +36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062, +36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075, +36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088, +36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101, +36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,20274,20285,20342, +20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456, +20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495, +20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588, +20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747, +20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,39320,20865, +22804,21241,21261,35335,21264,20971,22809,20821,20128, +20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913, +20925,20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120, +36121,36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202, +36204,36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223, +36224,36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242, +36243,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257, +36258,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271, +36272,36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296, +36297,36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750, +35751,35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796, +35798,35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830, +35833,35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861, +35862,35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886, +35887,35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461, +38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576, +37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313, +36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338, +36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360, +36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378, +36379,36380,36384,36385,36388,36389,36390,36391,36392, +36395,36397,36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,36415, +36419,36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439, +36440,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453, +36455,36456,36458,36459,36462,36465,37048,37040,37071,37061,37054,37072,37060, +37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150, +37155,37169,37167,37177,37187,37190,21005,22850,21154,21164,21165,21182,21759, +21200,21206,21232,21471,29166,30669,24308,20981,20988,39727,21430,24321,30042, +24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329, +22318,22319,22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381, +22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488, +22490,22489,22482,22456,22516,22511,22520,22500,22493,36467,36469,36471,36472, +36473,36474,36475,36477,36478,36480,36482,36483,36484,36486,36488,36489,36490, +36491,36492,36493,36494,36497,36498,36499,36501,36502,36503,36504,36505,36506, +36507,36509,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521, +36522,36525,36526,36528,36529,36531,36532,36533,36534,36535,36536,36537,36539, +36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552, +36553,36554,36555,36556,36557,36559,36560,36561,36562,36563,36564,36565,36566, +36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579, +36580,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657, +22665,22682,22656,39336,40729,25087,33401,33405,33407, +33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,33480, +33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,33439, +33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496, +33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,33627, +33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631, +33600,33559,33632,33581,33594,33587,33638,33637,36581,36582,36583,36584,36585, +36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598, +36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611, +36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624, +36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637, +36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650, +36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663, +36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676, +33640,33563,33641,33644,33642,33645,33646,33712,33656,33715,33716,33696,33706, +33683,33692,33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722, +33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848, +33809,33798,33748,33759,33807,33795,33784,33785,33770,33733,33728,33830,33776, +33761,33884,33873,33882,33881,33907,33927,33928,33914,33929,33912,33852,33862, +33897,33910,33932,33934,33841,33901,33985,33997,34000,34022,33981,34003,33994, +33983,33978,34016,33953,33977,33972,33943,34021,34019, +34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682, +36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695, +36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708, +36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775, +36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795, +36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822, +36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854, +36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134, +34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171, +34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241, +34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869, +22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306, +25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524, +25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550, +25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732, +25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908, +36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933, +36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956, +36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975, +36976,36977,36978,36979,36982,36983,36984,36985,36986, +36987,36988,36990,36993,36996,36997,36998,36999,37001,37002,37004,37005,37006, +37007,37008,37010,37012,37014,37016,37018,37020,37022,37023,37024,37028,37029, +37031,37032,37033,37035,37037,37042,37047,37052,37053,37055,37056,25722,25783, +25784,25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,24331,24530, +29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,21586, +21587,21588,21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617, +21604,21658,21659,21636,21622,21606,21661,21712,21677,21698,21684,21714,21671, +21670,21715,21716,21618,21667,21717,21691,21695,21708,21721,21722,21724,21673, +21674,21668,21725,21711,21726,21787,21735,21792,21757,21780,21747,21794,21795, +21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840, +21820,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,37077,37078, +37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,37100,37102, +37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,37119,37120, +37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135, +37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,37148,37149, +37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165, +37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,37179,37180,37181, +37182,37183,37184,37185,37186,37188,21815,21846,21877,21878,21879,21811,21808, +21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883, +21983,21949,21950,21908,21913,21994,22007,21961,22047, +21969,21995,21996,21972,21990,21981,21956,21999,21989,22002,22003,21964,21965, +21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055, +22061,22104,22073,22103,22060,22093,22114,22105,22108,22092,22100,22150,22116, +22129,22123,22139,22140,22149,22163,22191,22228,22231,22237,22241,22261,22251, +22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,24123,24124, +37189,37191,37192,37201,37203,37204,37205,37206,37208,37209,37211,37212,37215, +37216,37222,37223,37224,37227,37229,37235,37242,37243,37244,37248,37249,37250, +37251,37252,37254,37256,37258,37262,37263,37267,37268,37269,37270,37271,37272, +37273,37276,37277,37278,37279,37280,37281,37284,37285,37286,37287,37288,37289, +37291,37292,37296,37297,37298,37299,37302,37303,37304,37305,37307,37308,37309, +37310,37311,37312,37313,37314,37315,37316,37317,37318,37320,37323,37328,37330, +37331,37332,37333,37334,37335,37336,37337,37338,37339,37341,37342,37343,37344, +37345,37346,37347,37348,37349,24119,24132,24148,24155,24158,24161,23692,23674, +23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,23714,23741,23724, +23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,23810,23811,23847, +23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919, +23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,24435, +24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914, +24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,29394,29416,29423, +29417,29426,29428,29431,29441,29427,29443,29434,37350, +37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363, +37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376, +37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389, +37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402, +37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415, +37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428, +37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441, +37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,29474, +29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,33307, +22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,39287, +39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,24209, +24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296, +24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,24581, +24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586, +24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,37451, +37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464, +37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477, +37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490, +37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504, +37505,37506,37507,37508,37509,37510,37511,37512,37513, +37514,37515,37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527, +37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540, +37541,37542,37543,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731, +24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820, +24832,24846,24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579, +38377,38379,38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410, +38411,38412,38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109, +27701,27732,27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766, +27782,27817,27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898, +27883,27886,27825,27859,27887,27902,37544,37545,37546,37547,37548,37549,37551, +37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564, +37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37577,37578, +37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591, +37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604, +37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617, +37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630, +37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,27961,27943, +27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983, +27986,27988,27955,28049,28015,28062,28064,27998,28051,28052,27996,28000,28028, +28003,28186,28103,28101,28126,28174,28095,28128,28177, +28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255, +28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,28386,28325, +28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,28486,28487, +28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556, +28536,28530,28540,28538,28625,37642,37643,37644,37645,37646,37647,37648,37649, +37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662, +37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675, +37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688, +37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,37701,37702, +37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715, +37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728, +37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,28617,28583,28601, +28598,28610,28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751, +28766,23424,23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120, +23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840, +36869,36868,36875,36902,36881,36877,36886,36897,36917,36918,36909,36911,36932, +36945,36946,36944,36968,36952,36962,36955,26297,36980,36989,36994,37000,36995, +37003,24400,24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700, +24362,24361,24365,33396,24380,39739,23662,22913,22915,22925,22953,22954,22947, +37740,37741,37742,37743,37744,37745,37746,37747,37748, +37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761, +37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774, +37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788, +37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801, +37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814, +37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827, +37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,22955,22942, +22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,23033, +23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138, +23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264, +23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573, +23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,39549, +39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,39581, +39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,37838, +37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,37851,37852, +37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865, +37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878, +37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891, +37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904, +37905,37906,37907,37908,37909,37910,37911,37912,37913, +37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926, +37927,37928,37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449, +32450,32457,32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494, +32495,32497,32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520, +32523,32524,32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547, +32548,32549,32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563, +32565,24186,30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634, +29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662, +29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936, +37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949, +37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963, +37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976, +37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989, +37990,37991,37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003, +38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016, +38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118, +38139,38172,38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822, +29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882, +38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520, +26535,26485,26536,26526,26541,26507,26487,26492,26608, +26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,26563, +26552,26594,26638,26561,26621,26674,26675,26720,26721,26702,26722,26692,26724, +26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767, +26740,26743,26771,26731,26818,26990,26876,26911,26912,26873,38183,38195,38205, +38211,38216,38219,38229,38234,38240,38254,38260,38261,38263,38264,38265,38266, +38267,38268,38269,38270,38272,38273,38274,38275,38276,38277,38278,38279,38280, +38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293, +38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306, +38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319, +38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332, +38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345, +38346,38347,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946, +26973,27012,26987,27008,27032,27000,26932,27084,27015,27016,27086,27017,26982, +26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029, +27104,27021,27135,27183,27117,27159,27160,27237,27122,27204,27198,27296,27216, +27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307, +29495,29522,27521,27522,27527,27524,27538,27539,27533,27546,27547,27553,27562, +36715,36717,36721,36722,36723,36725,36726,36728,36727,36729,36730,36732,36734, +36737,36738,36740,36743,36747,38348,38349,38350,38351,38352,38353,38354,38355, +38356,38357,38358,38359,38360,38361,38362,38363,38364, +38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38380,38399, +38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,38440,38441, +38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,38467,38474, +38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,38492,38493,38494, +38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,38515,38520,38521, +38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38535,38537, +38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,25119,25122,25121, +25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,25908,26094,26095, +26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,26164,26161,26166, +26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279, +26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,36157,36160,36165, +36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,35276,35278,35279, +35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,29323,29325,29327, +29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,38550,38554,38555, +38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570, +38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587, +38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616, +38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630, +38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,38651, +38652,38653,38655,38658,38659,38661,38666,38667,38668, +38672,38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688, +25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669, +27672,27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266, +29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941, +32948,32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384, +32989,33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078, +33054,33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129, +33148,33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228, +26406,33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699, +38700,38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717, +38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731, +38732,38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749, +38751,38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768, +38769,38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785, +38786,38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803, +38805,38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449, +27459,27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315, +26000,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828, +28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975, +28977,29043,29020,29032,28997,29042,29002,29048,29050, +29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952, +29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,31049,31067,31068, +31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155, +24529,24528,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,38826, +38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,38844, +38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857, +38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870, +38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883, +38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,38905,38906, +38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919, +38920,38921,38922,38923,38924,38925,38926,24636,24669,24666,24679,24641,24665, +24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795, +27894,28156,30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749, +30777,30778,30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807, +30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898, +30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028, +40859,40697,40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489, +30509,30502,30517,30520,30544,30545,30535,30531,30554,30568,38927,38928,38929, +38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942, +38943,38944,38945,38946,38947,38948,38949,38950,38951, +38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964, +38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977, +38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990, +38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003, +39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016, +39017,39018,39019,39020,39021,39022,30562,30565,30591,30605,30589,30592,30604, +30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,30043,30066, +30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413, +30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,38036,38039, +38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,38064,38066, +38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,38089,38090, +38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,38104,38107, +38110,38111,38112,38114,38116,38117,38119,38120,38122,39023,39024,39025,39026, +39027,39028,39051,39054,39058,39061,39065,39075,39080,39081,39082,39083,39084, +39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097, +39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110, +39111,39112,39113,39114,39115,39116,39117,39119,39120,39124,39126,39127,39131, +39132,39133,39136,39137,39138,39139,39140,39141,39142,39145,39146,39147,39148, +39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161, +39162,39163,39164,39165,39166,39167,39168,39169,39170, +39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135, +38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159, +38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187, +38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197, +38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232, +38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249, +38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213, +31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180, +39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195, +39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208, +39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222, +39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235, +39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248, +39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263, +39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305, +31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920, +29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503, +40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526, +40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554, +40555,40556,40561,40557,40563,30098,30100,30102,30112, +30109,30124,30115,30131,30132,30136,30148,30129,30128,30147,30146,30166,30157, +30179,30184,30182,30180,30187,30183,30211,30193,30204,30207,30224,30208,30213, +30220,30231,30218,30245,30232,30229,30233,39308,39310,39322,39323,39324,39325, +39326,39327,39328,39329,39330,39331,39332,39334,39335,39337,39338,39339,39340, +39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353, +39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366, +39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379, +39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392, +39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405, +39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,30235, +30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302, +30292,30300,30294,30315,30319,32714,31462,31352,31353,31360,31366,31368,31381, +31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978, +35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070, +35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,30091, +32997,30386,30388,30684,32786,32788,32790,32796,32800,32802,32805,32806,32807, +32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032, +39040,39043,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428, +39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441, +39442,39443,39444,39445,39446,39447,39448,39449,39450, +39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463, +39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476, +39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489, +39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502, +39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39049,39052, +39053,39055,39060,39066,39067,39070,39071,39073,39074,39077,39078,34381,34388, +34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467, +34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511, +34484,34537,34545,34546,34541,34547,34512,34579,34526,34548,34527,34520,34513, +34563,34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586, +34622,34632,34612,34609,34601,34615,34623,34690,34594,34685,34686,34683,34656, +34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728, +34770,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525, +39526,39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573, +39577,39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605, +39609,39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629, +39630,39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,39645, +39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664, +39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679, +39680,39681,39682,39684,39685,39686,34758,34696,34693, +34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752, +34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876, +32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531, +31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518, +31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632, +31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697, +31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755, +39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,39702, +39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,39717, +39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,39732, +39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,39755, +39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,39772, +39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785, +39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798, +39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,33281, +33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,33339, +33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,34952, +35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,31901, +31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,31959, +31976,33390,26280,32703,32718,32725,32741,32737,32742, +32745,32750,32755,31992,32119,32166,32174,32327,32411,40632,40628,36211,36228, +36244,36241,36273,36199,36205,35911,35913,37194,37200,37198,37199,37220,39804, +39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817, +39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830, +39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843, +39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856, +39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869, +39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882, +39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895, +39896,39897,39898,39899,37218,37217,37232,37225,37231,37245,37246,37234,37236, +37241,37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301, +37300,37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282, +36292,36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323, +36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410, +36416,36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470, +36476,36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973, +35992,35988,26011,35286,35294,35290,35292,39900,39901,39902,39903,39904,39905, +39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918, +39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931, +39932,39933,39934,39935,39936,39937,39938,39939,39940, +39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953, +39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966, +39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979, +39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992, +39993,39994,39995,35301,35307,35311,35390,35622,38739,38633,38643,38639,38662, +38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,40837,40838,40839, +40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,38606,38610,30655, +38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,40069, +40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,40085,40090,40091, +40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,40105,40107,40109, +40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,40123,40124,40125, +40132,40133,40134,40135,40138,40139,39996,39997,39998,39999,40000,40001,40002, +40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015, +40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028, +40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041, +40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054, +40055,40056,40057,40058,40059,40061,40062,40064,40067,40068,40073,40074,40076, +40079,40083,40086,40087,40088,40089,40093,40106,40108,40111,40121,40126,40127, +40128,40129,40130,40136,40137,40145,40146,40154,40155,40160,40161,40140,40141, +40142,40143,40144,40147,40148,40149,40151,40152,40153, +40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,38819,38834, +38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,39627, +39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253, +39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711, +39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,40607,40667, +40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751, +40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,40169,40170, +40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183, +40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196, +40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209, +40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222, +40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235, +40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248, +40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,57909,57910, +57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,57922,57923, +57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,57935,57936, +57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,57948,57949, +57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,57961,57962, +57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,57974,57975, +57976,57977,57978,57979,57980,57981,57982,57983,57984, +57985,57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997, +57998,57999,58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267, +40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280, +40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293, +40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306, +40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319, +40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332, +40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345, +40346,40347,40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005, +58006,58007,58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018, +58019,58020,58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031, +58032,58033,58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044, +58045,58046,58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057, +58058,58059,58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070, +58071,58072,58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083, +58084,58085,58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355, +40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368, +40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381, +40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394, +40395,40396,40397,40398,40399,40400,40401,40402,40403, +40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416, +40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429, +40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442, +40443,40444,40445,40446,40447,40448,40449,40450,58096,58097,58098,58099,58100, +58101,58102,58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113, +58114,58115,58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126, +58127,58128,58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139, +58140,58141,58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152, +58153,58154,58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165, +58166,58167,58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178, +58179,58180,58181,58182,58183,58184,58185,58186,58187,58188,58189,40451,40452, +40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465, +40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478, +40484,40487,40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532, +40534,40537,40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565, +40566,40567,40568,40569,40570,40571,40572,40573,40576,40577,40579,40580,40581, +40582,40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599, +40600,40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615, +40616,40617,40618,58190,58191,58192,58193,58194,58195,58196,58197,58198,58199, +58200,58201,58202,58203,58204,58205,58206,58207,58208, +58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,58220,58221, +58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234, +58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,58246,58247, +58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260, +58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58273, +58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,40619,40620,40621, +40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,40634,40636,40639, +40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,40652,40656,40658, +40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,40678,40680,40683, +40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,40695,40696,40698, +40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714, +40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,40732,40733,40734, +40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,40747,40749,40750, +40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,58292,58293,58294, +58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,58305,58306,58307, +58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,58318,58319,58320, +58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,58331,58332,58333, +58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,58344,58345,58346, +58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,58357,58358,58359, +58360,58361,58362,58363,58364,58365,58366,58367,58368, +58369,58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757, +40758,40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776, +40777,40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791, +40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804, +40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817, +40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830, +40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855, +40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975, +63985,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389, +58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402, +58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415, +58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428, +58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441, +58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454, +58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467, +58468,58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031, +64032,64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427, +13383,11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799, +14815,14963,14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470, +16735,11950,17207,11955,11958,11959,59451,17329,17324, +11963,17373,17622,18017,17996,59459,18211,18217,18300,18317,11978,18759,18810, +18813,18818,18819,18821,18822,18847,18843,18871,18870,59476,59477,19619,19615, +19616,19617,19575,19618,19731,19732,19733,19734,19735,19736,19737,19886,59492, +58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484, +58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58495,58496,58497, +58498,58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510, +58511,58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523, +58524,58525,58526,58527,58528,58529,58530,58531,58532,58533,58534,58535,58536, +58537,58538,58539,58540,58541,58542,58543,58544,58545,58546,58547,58548,58549, +58550,58551,58552,58553,58554,58555,58556,58557,58558,58559,58560,58561,58562, +58563,58564,58565, diff --git a/vendor/modernc.org/libc/musl/src/locale/hkscs.h b/vendor/modernc.org/libc/musl/src/locale/hkscs.h new file mode 100644 index 000000000..d3565174d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/hkscs.h @@ -0,0 +1,390 @@ +17392,19506,17923,17830,17784,29287,19831,17843,31921,19682,31941,15253,18230, +18244,19527,19520,17087,13847,29522,28299,28882,19543,41809,18255,17882,19589, +31852,19719,19108,18081,27427,29221,23124,6755,15878,16225,26189,22267,0, +32149,22813,35769,15860,38708,31727,23515,7518,23204,13861,40624,23249,23479, +23804,26478,34195,39237,29793,29853,14453,7507,13982,24609,16108,22750,15093, +31484,40855,16737,35085,12778,2698,12894,17162,33924,40854,37935,18736,34323, +22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071, +36934,13542,29636,23993,29894,40903,22451,18735,21580,16689,13966,22552,31346, +31589,35727,18094,28296,16769,23961,31662,9404,40904,9409,9417,9420,40905, +34052,13755,16564,40906,17633,44543,25281,28782,40907,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12736,12737,12738,12739,12740,268,12741, +209,205,12742,12743,203,8168,12744,202,12745,12746,12747,12748,270,12749, +12750,256,193,461,192,274,201,282,200,332,211,465,210,56320,7870,56324,7872, +202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363, +250,468,249,470,472,474,476,252,56328,7871,56332,7873,234,609,9178,9179,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41897,4421,0,25866,0,0,20029,28381, +40270,37343,0,0,30517,25745,20250,20264,20392,20822,20852,20892,20964,21153, +21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454, +23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428, +32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710, +36711,36718,29713,31996,32205,26950,31433,21031,0,0,0,0,37260,30904,37214, +32956,0,36107,33014,2535,0,0,32927,40647,19661,40393,40460,19518,40438,28686, +40458,41267,13761,0,28314,33342,29977,0,18705,39532,39567,40857,31111,33900, +7626,1488,10982,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944, +20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136, +21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667, +21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765, +32132,21797,0,3138,3349,20779,21904,11462,14828,833,36422,19896,38117,16467, +32958,30586,11320,14900,18389,33117,27122,19946,25821,3452,4020,3285,4340, +25741,36478,3734,3083,3940,11433,33366,17619,0,3398,39501,33001,18420, +20135,11458,39602,14951,38388,16365,13574,21191,38868,30920,11588,40302,38933, +0,17369,24741,25780,21731,11596,11210,4215,14843,4207,26330,26390,31136,25834, +20562,3139,36456,8609,35660,1841,0,18443,425,16378,22643,11661,0,17864,1276, +24727,3916,3478,21881,16571,17338,0,19124,10854,4253,33194,39157,3484,25465, +14846,10101,36288,22177,25724,15939,0,42497,3593,10959,11465,0,4296,14786, +14738,14854,33435,13688,24137,8391,22098,3889,11442,38688,13500,27709,20027,0, +0,30068,11915,8712,42587,36045,3706,3124,26652,32659,4303,10243,10553,13819, +20963,3724,3981,3754,16275,3888,3399,4431,3660,0,3755,2985,3400,4288,4413, +16377,9878,25650,4013,13300,30265,11214,3454,3455,11345,11349,14872,3736,4295, +3886,42546,27472,36050,36249,36042,38314,21708,33476,21945,0,40643,39974, +39606,30558,11758,28992,33133,33004,23580,25970,33076,14231,21343,32957,37302, +3834,3599,3703,3835,13789,19947,13833,3286,22191,10165,4297,3600,3704,4216, +4424,33287,5205,3705,20048,11684,23124,4125,4126,4341,4342,22428,3601,30356, +33485,4021,3707,20862,14083,4022,4480,21208,41661,18906,6202,16759,33404, +22681,21096,13850,22333,31666,23400,18432,19244,40743,18919,39967,39821,23412, +12605,22011,13810,22153,20008,22786,7105,63608,38737,134,20059,20155,13630, +23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357, +18665,32594,31035,31993,32595,25194,13505,0,25419,32770,32896,26130,26961, +21341,34916,35265,30898,35744,36125,38021,38264,38271,38376, +36367,38886,39029,39118,39134,39267,38928,40060,40479,40644,27503,63751,20023, +135,38429,25143,38050,0,20539,28158,40051,40870,15817,34959,16718,28791,23797, +19232,20941,13657,23856,24866,35378,36775,37366,29073,26393,29626,12929,41223, +15499,6528,19216,30948,29698,20910,34575,16393,27235,41658,16931,34319,2671, +31274,39239,35562,38741,28749,21284,8318,37876,30425,35299,40871,30685,20131, +20464,20668,20015,20247,40872,21556,32139,22674,22736,7606,24210,24217,24514, +10002,25995,13305,26905,27203,15459,27903,0,29184,17669,29580,16091,18963, +23317,29881,35715,23716,22165,31379,31724,31939,32364,33528,34199,40873,34960, +40874,36537,40875,36815,34143,39392,37409,40876,36281,5183,16497,17058,23066, +0,0,0,39016,26475,17014,22333,0,34262,18811,33471,28941,19585,28020,23931, +27413,28606,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,12886, +10134,17306,17718,0,23765,15130,35577,23672,15634,13649,23928,40882,29015, +17752,16620,7715,19575,14712,13386,420,27713,35532,20404,569,22975,33132, +38998,39162,24379,2975,0,8641,35181,16642,18107,36985,16135,40883,41397,16632, +14294,18167,27718,16764,34482,29695,17773,14548,21658,17761,17691,19849,19579, +19830,17898,16328,19215,13921,17630,17597,16877,23870,23880,23894,15868,14351, +23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791, +24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193, +14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037, +26111,26195,15090,26258,15138, +26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276, +26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346, +27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942, +28033,15599,28068,28081,28181,28184,28201,28294,35264,28347,28386,28378,40831, +28392,28393,28452,28468,15686,16193,28545,28606,15722,15733,29111,23705,15754, +28716,15761,28752,28756,28783,28799,28809,805,17345,13809,3800,16087,22462, +28371,28990,22496,13902,27042,35817,23412,31305,22753,38105,31333,31357,22956, +31419,31408,31426,31427,29137,25741,16842,31450,31453,31466,16879,21682,23553, +31499,31573,31529,21262,23806,31650,31599,33692,23476,27775,31696,33825,31634, +0,23840,15789,23653,33938,31738,0,31797,23745,31812,31875,18562,31910,26237, +17784,31945,31943,31974,31860,31987,31989,0,32359,17693,28228,32093,28374, +29837,32137,32171,28981,32179,0,16471,24617,32228,15635,32245,6137,32229, +33645,0,24865,24922,32366,32402,17195,37996,32295,32576,32577,32583,31030, +25296,39393,32663,25425,32675,5729,104,17756,14182,17667,33594,32762,25737,0, +32776,32797,0,32815,41095,27843,32827,32828,32865,10004,18825,26150,15843, +26344,26405,32935,35400,33031,33050,22704,9974,27775,25752,20408,25831,5258, +33304,6238,27219,19045,19093,17530,33321,2829,27218,15742,20473,5373,34018, +33634,27402,18855,13616,6003,15864,33450,26907,63892,16859,34123,33488,33562, +3606,6068,14017,12669,13658,33403,33506,33560,16011,28067,27397,27543,13774, +15807,33565,21996,33669,17675,28069,33708, +0,33747,13438,28372,27223,34138,13462,28226,12015,33880,23524,33905,15827, +17636,27303,33866,15541,31064,0,27542,28279,28227,34014,0,33681,17568,33939, +34020,23697,16960,23744,17731,34100,23282,28313,17703,34163,17686,26559,34326, +34341,34363,34241,28808,34306,5506,28877,63922,17770,34344,13896,6306,21495, +29594,34430,34673,41208,34798,11303,34737,34778,34831,22113,34412,26710,17935, +34885,34886,30176,15801,30180,34910,34972,18011,34996,34997,25537,35013,30583, +30479,35207,35210,0,0,35239,35260,35365,35303,31012,31421,35484,30611,37374, +35472,31321,31465,31546,16271,18195,31544,29052,35596,35615,21552,21861,35647, +35660,35661,35497,19066,35728,35739,35503,5855,17941,34895,35995,32084,32143, +63956,14117,32083,36054,32152,32189,36114,36099,6416,36059,28764,36113,19657, +16080,0,36265,32770,4116,18826,15228,33212,28940,31463,36525,36534,36547, +37588,36633,36653,33637,33810,36773,37635,41631,2640,36787,18730,35294,34109, +15803,24312,12898,36857,40980,34492,34049,8997,14720,28375,36919,34108,31422, +36961,34156,34315,37032,34579,37060,34534,37038,0,37223,15088,37289,37316, +31916,35123,7817,37390,27807,37441,37474,21945,0,35526,15515,35596,21979,3377, +37676,37739,35553,35819,28815,23235,35554,35557,18789,37444,35820,35897,35839, +37747,37979,36540,38277,38310,37926,38304,28662,17081,9850,34520,4732,15918, +18911,27676,38523,38550,16748,38563,28373,25050,38582,30965,35552,38589,21452, +18849,27832,628,25616,37039,37093,19153,6421,13066,38705,34370,38710,18959, +17725,17797,19177,28789,23361,38683, +0,37333,38743,23370,37355,38751,37925,20688,12471,12476,38793,38815,38833, +38846,38848,38866,38880,21612,38894,29724,37939,0,38901,37917,31098,19153, +38964,38963,38987,39014,15118,29045,15697,1584,16732,22278,39114,39095,39112, +39111,19199,27943,5843,21936,39137,39142,39148,37752,39225,18985,19314,38999, +39173,39413,39436,39483,39440,39512,22309,14020,37041,39893,39648,39650,39685, +39668,19470,39700,39725,34304,20532,39732,27048,14531,12413,39760,39744,40254, +23109,6243,39822,16971,39938,39935,39948,40552,40404,40887,41362,41387,41185, +41251,41439,40318,40323,41268,40462,26760,40388,8539,41363,41504,6459,41523, +40249,41145,41652,40592,40597,40606,40610,19764,40618,40623,17252,40641,15200, +14821,15645,20274,14270,35883,40706,40712,19350,37924,28066,40727,0,40761, +22175,22154,40773,39352,37003,38898,33919,40802,40809,31452,40846,29206,19390, +18805,18875,29047,18936,17224,19025,29598,35802,6394,31135,35198,36406,37737, +37875,35396,37612,37761,37835,35180,17593,29207,16107,30578,31299,28880,17523, +17400,29054,6127,28835,6334,13721,16071,6277,21551,6136,14114,5883,6201,14049, +6004,6353,24395,14115,5824,22363,18981,5118,4776,5062,5302,34051,13990,0, +33877,18836,29029,15921,21852,16123,28754,17652,14062,39325,28454,26617,14131, +15381,15847,22636,6434,26640,16471,14143,16609,16523,16655,27681,21707,22174, +26289,22162,4063,2984,3597,37830,35603,37788,20216,20779,14361,17462,20156, +1125,895,20299,20362,22097,23144,427,971,14745,778,1044,13365,20265,704,36531, +629,35546,524,20120,20685, +20749,20386,20227,18958,16010,20290,20526,20588,20609,20428,20453,20568,20732, +0,0,0,0,28278,13717,15929,16063,28018,6276,16009,20904,20931,1504,17629,1187, +1170,1169,36218,35484,1806,21081,21156,2163,21217,0,18042,29068,17292,3104, +18860,4324,27089,3613,0,16094,29849,29716,29782,29592,19342,19132,16525,21456, +13700,29199,16585,21940,837,21709,3014,22301,37469,38644,37734,22493,22413, +22399,13886,22731,23193,35398,5882,5999,5904,23084,22968,37519,23166,23247, +23058,22854,6643,6241,17045,14069,27909,29763,23073,24195,23169,35799,1043, +37856,29836,4867,28933,18802,37896,35323,37821,14240,23582,23710,24158,24136, +6550,6524,15086,24269,23375,6403,6404,14081,6304,14045,5886,14035,33066,35399, +7610,13426,35240,24332,24334,6439,6059,23147,5947,23364,34324,30205,34912, +24702,10336,9771,24539,16056,9647,9662,37000,28531,25024,62,70,9755,24985, +24984,24693,11419,11527,18132,37197,25713,18021,11114,14889,11042,13392,39146, +11896,25399,42075,25782,25393,25553,18915,11623,25252,11425,25659,25963,26994, +15348,12430,12973,18825,12971,21773,13024,6361,37951,26318,12937,12723,15072, +16784,21892,35618,21903,5884,21851,21541,30958,12547,6186,12852,13412,12815, +12674,17097,26254,27940,26219,19347,26160,30832,7659,26211,13010,13025,26142, +22642,14545,14394,14268,15257,14242,13310,29904,15254,26511,17962,26806,26654, +15300,27326,14435,14293,17543,27187,27218,27337,27397,6418,25873,26776,27212, +15319,27258,27479,16320,15514,37792,37618,35818,35531,37513,32798,35292,37991, +28069,28427, +18924,0,16255,15759,28164,16444,23101,28170,22599,27940,30786,28987,17178, +17014,28913,29264,29319,29332,18319,18213,20857,19108,1515,29818,16120,13919, +19018,18711,24545,16134,16049,19167,35875,16181,24743,16115,29900,29756,37767, +29751,17567,28138,17745,30083,16227,19673,19718,16216,30037,30323,42438,15129, +29800,35532,18859,18830,15099,15821,19022,16127,18885,18675,37370,22322,37698, +35555,6244,20703,21025,20967,30584,12850,30478,30479,30587,18071,14209,14942, +18672,29752,29851,16063,19130,19143,16584,19094,25006,37639,21889,30750,30861, +30856,30930,29648,31065,30529,22243,16654,0,33942,31141,27181,16122,31290, +31220,16750,5862,16690,37429,31217,3404,18828,665,15802,5998,13719,21867, +13680,13994,468,3085,31458,23129,9973,23215,23196,23053,603,30960,23082,23494, +31486,16889,31837,31853,16913,23475,24252,24230,31949,18937,6064,31886,31868, +31918,27314,32220,32263,32211,32590,25185,24924,31560,32151,24194,17002,27509, +2326,26582,78,13775,22468,25618,25592,18786,32733,31527,2092,23273,23875, +31500,24078,39398,34373,39523,27164,13375,14818,18935,26029,39455,26016,33920, +28967,27857,17642,33079,17410,32966,33033,33090,26548,39107,27202,33378,33381, +27217,33875,28071,34320,29211,23174,16767,6208,23339,6305,23268,6360,34464, +63932,15759,34861,29730,23042,34926,20293,34951,35007,35046,35173,35149,22147, +35156,30597,30596,35829,35801,35740,35321,16045,33955,18165,18127,14322,35389, +35356,37960,24397,37419,17028,26068,28969,28868,6213,40301,35999,36073,32220, +22938,30659,23024,17262,14036,36394,36519,19465, +36656,36682,17140,27736,28603,8993,18587,28537,28299,6106,39913,14005,18735, +37051,0,21873,18694,37307,37892,35403,16482,35580,37927,35869,35899,34021, +35371,38297,38311,38295,38294,36148,29765,16066,18687,19010,17386,16103,12837, +38543,36583,36454,36453,16076,18925,19064,16366,29714,29803,16124,38721,37040, +26695,18973,37011,22495,0,37736,35209,35878,35631,25534,37562,23313,35689, +18748,29689,16923,38811,38769,39224,3878,24001,35781,19122,38943,38106,37622, +38359,37349,17600,35664,19047,35684,39132,35397,16128,37418,18725,33812,39227, +39245,31494,15869,39323,19311,39338,39516,35685,22728,27279,39457,23294,39471, +39153,19344,39240,39356,19389,19351,37757,22642,4866,22562,18872,5352,30788, +10015,15800,26821,15741,37976,14631,24912,10113,10603,24839,40015,40019,40059, +39989,39952,39807,39887,40493,39839,41461,41214,40225,19630,16644,40472,19632, +40204,41396,41197,41203,39215,40357,33981,28178,28639,27522,34300,17715,28068, +28292,28144,33824,34286,28160,14295,24676,31202,13724,13888,18733,18910,15714, +37851,37566,37704,703,30905,37495,37965,20452,13376,36964,21853,30781,30804, +30902,30795,5975,12745,18753,13978,20338,28634,28633,0,28702,21524,16821, +22459,22771,22410,40214,22487,28980,13487,16812,29163,27712,20375,0,6069, +35401,24844,23246,23051,17084,17544,14124,19323,35324,37819,37816,6358,3869, +33906,27840,5139,17146,11302,17345,22932,15799,26433,32168,24923,24740,18873, +18827,35322,37605,29666,16105,29876,35683,6303,16097,19123,27352,29683,29691, +16086,19006,19092,6105,19046,935,5156,18917,29768, +18710,28837,18806,37508,29670,37727,1278,37681,35534,35350,37766,35815,21973, +18741,35458,29035,18755,3327,22180,1562,3051,3256,21762,31172,6138,32254,5826, +19024,6226,17710,37889,14090,35520,18861,22960,6335,6275,29828,23201,14050, +15707,14000,37471,23161,35457,6242,37748,15565,2740,19094,14730,20724,15721, +15692,5020,29045,17147,33304,28175,37092,17643,27991,32335,28775,27823,15574, +16365,15917,28162,28428,15727,1013,30033,14012,13512,18048,16090,18545,22980, +37486,18750,36673,35868,27584,22546,22472,14038,5202,28926,17250,19057,12259, +4784,9149,26809,26983,5016,13541,31732,14047,35459,14294,13306,19615,27162, +13997,27831,33854,17631,17614,27942,27985,27778,28638,28439,28937,33597,5946, +33773,27776,28755,6107,22921,23170,6067,23137,23153,6405,16892,14125,23023, +5948,14023,29070,37776,26266,17061,23150,23083,17043,27179,16121,30518,17499, +17098,28957,16985,35297,20400,27944,23746,17614,32333,17341,27148,16982,4868, +28838,28979,17385,15781,27871,63525,19023,32357,23019,23855,15859,24412,19037, +6111,32164,33830,21637,15098,13056,532,22398,2261,1561,16357,8094,41654,28675, +37211,23920,29583,31955,35417,37920,20424,32743,29389,29456,31476,29496,29497, +22262,29505,29512,16041,31512,36972,29173,18674,29665,33270,16074,30476,16081, +27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018, +30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,20316, +29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495, +23646,30654,30667,22770,30744,28857,30748, +16552,30777,30791,30801,30822,33864,21813,31027,26627,31026,16643,16649,31121, +31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847, +20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044, +31981,36755,28864,3279,32207,32212,32208,32253,32686,32692,29343,17303,32800, +32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482, +33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156, +17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496, +33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017, +34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543, +38469,34699,17926,17943,34990,35071,35108,35143,35217,31079,35369,35384,35476, +35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356, +36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812, +36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603, +37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917, +37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980, +38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193, +20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785, +39809,39901,39921,39924,19565,39968,14191,7106,40265,39994,40702,22096,40339, +40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689, +40696,31432,40772,148,695,928,26906,38083,22956, +1239,22592,38081,14265,1493,1557,1654,5818,22359,29043,2754,2765,3007,21610, +63547,3019,21662,3067,3131,3155,3173,3196,24807,3213,22138,3253,3293,3309, +3439,3506,3528,26965,39983,34725,3588,3598,3799,3984,3885,3699,23584,4028, +24075,4188,4175,4214,26398,4219,4232,4246,13895,4287,4307,4399,4411,21348, +33965,4835,4981,4918,35713,5495,5657,6083,6087,20088,28859,6189,6506,6701, +6725,7210,7280,7340,7880,25283,7893,7957,29080,26709,8261,27113,14024,8828, +9175,9210,10026,10353,10575,33533,10599,10643,10965,35237,10984,36768,11022, +38840,11071,38983,39613,11340,0,11400,11447,23528,11528,11538,11703,11669, +11842,12148,12236,12339,12390,13087,13278,24497,26184,26303,31353,13671,13811, +0,18874,0,13850,14102,0,838,22709,26382,26904,15015,30295,24546,15889,16057, +30206,8346,18640,19128,16665,35482,17134,17165,16443,17204,17302,19013,1482, +20946,1553,22943,7848,15294,15615,17412,17622,22408,18036,14747,18223,34280, +39369,14178,8643,35678,35662,0,18450,18683,18965,29193,19136,3192,22885,20133, +20358,1913,36570,20524,21135,22335,29041,21145,21529,16202,19111,21948,21574, +21614,27474,0,13427,21823,30258,21854,18200,21858,21862,22471,18751,22621, +20582,13563,13260,0,22787,18300,35144,23214,23433,23558,7568,22433,29009,0, +24834,31762,36950,25010,20378,35682,25602,25674,23899,27639,0,25732,6428, +35562,18934,25736,16367,25874,19392,26047,26293,10011,37989,22497,24981,23079, +63693,0,22201,17697,26364,20074,18740,38486,28047,27837,13848,35191, +26521,26734,25617,26718,0,26823,31554,37056,2577,26918,0,26937,31301,0,27130, +39462,27181,13919,25705,33,31107,27188,27483,23852,13593,0,27549,18128,27812, +30011,34917,28078,22710,14108,9613,28747,29133,15444,29312,29317,37505,8570, +29323,37680,29414,18896,27705,38047,29776,3832,34855,35061,10534,33907,6065, +28344,18986,6176,14756,14009,0,0,17727,26294,40109,39076,35139,30668,30808, +22230,16607,5642,14753,14127,33000,5061,29101,33638,31197,37288,0,19639,28847, +35243,31229,31242,31499,32102,16762,31555,31102,32777,28597,41695,27139,33560, +21410,28167,37823,26678,38749,33135,32803,27061,5101,12847,32840,23941,35888, +32899,22293,38947,35145,23979,18824,26046,27093,21458,19109,16257,15377,26422, +32912,33012,33070,8097,33103,33161,33199,33306,33542,33583,33674,13770,33896, +34474,18682,25574,35158,30728,37461,35256,17394,35303,17375,35304,35654,35796, +23032,35849,0,36805,37100,0,37136,37180,15863,37214,19146,36816,29327,22155, +38119,38377,38320,38328,38706,39121,39241,39274,39363,39464,39694,40282,40347, +32415,40696,40739,19620,38215,41619,29090,41727,19857,36882,42443,19868,3228, +36798,21953,36794,9392,36793,19091,17673,32383,28502,27313,20202,13540,35628, +30877,14138,36480,6133,32804,35692,35737,31294,26287,15851,30293,15543,22069, +22870,20122,24193,25176,22207,3693,36366,23405,16008,19614,25566,0,6134,6267, +25904,22061,23626,21530,21265,15814,40344,19581,22050,22046,32585,24280,22901, +15680,34672,19996,4074,3401,14010,33047,40286,36120,30267,40005,30286,30649, +37701,21554, +33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,3741,13774,22021, +22001,26353,33506,13869,30004,22000,21946,21655,21874,3137,3222,24272,20808, +3702,11362,3746,40619,32090,21982,4213,25245,38765,21652,36045,29174,37238, +25596,25529,25598,21865,11075,40050,11955,20890,13535,3495,20903,21581,21790, +21779,30310,36397,26762,30129,32950,34820,34694,35015,33206,33820,4289,17644, +29444,18182,23440,33547,26771,22139,9972,32047,16803,32115,28368,29366,37232, +4569,37384,15612,42665,3756,3833,29286,7330,18254,20418,32761,4075,16634, +40029,25887,11680,18675,18400,40316,4076,3594,0,30115,4077,0,24648,4487,29091, +32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,17944, +22682,19310,33325,21579,22442,23189,2425,0,14930,9317,29556,40620,19721,39917, +15614,40752,19547,20393,38302,40926,33884,15798,29362,26547,14112,25390,32037, +16119,15916,14890,36872,21196,15988,13946,17897,1166,30272,23280,3766,30842, +32558,22695,16575,22140,39819,23924,30292,42036,40581,19681,0,14331,24857, +12506,17394,0,22109,4777,22439,18787,40454,21044,28846,13741,0,40316,31830, +39737,22494,5996,23635,25811,38096,25397,29028,34477,3368,27938,19170,3441,0, +20990,7951,23950,38659,7633,40577,36940,31519,39682,23761,31651,25192,25397, +39679,31695,39722,31870,0,31810,31878,39957,31740,39689,0,39963,18750,40794, +21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856, +40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515, +38465,27008,20646, +30022,5997,39386,21107,0,37209,38529,37212,0,37201,36503,25471,27939,27338, +22033,37262,30074,25221,1020,29519,31856,23585,15613,0,18713,30422,39837, +20010,3284,33726,34882,0,23626,27072,0,22394,21023,24053,20174,27697,498, +20281,21660,21722,21146,36226,13822,0,13811,0,27474,37244,40869,39831,38958, +39092,39610,40616,40580,29050,31508,0,27642,34840,32632,0,22048,42570,36471, +40787,0,36308,36431,40476,36353,25218,33661,36392,36469,31443,19063,31294, +30936,27882,35431,30215,35418,40742,27854,34774,30147,41650,30803,63552,36108, +29410,29553,35629,29442,29937,36075,19131,34351,24506,34976,17591,0,6203, +28165,0,35454,9499,0,24829,30311,39639,40260,37742,39823,34805,0,0,36087, +29484,38689,39856,13782,29362,19463,31825,39242,24921,24921,19460,40598,24957, +0,22367,24943,25254,25145,0,14940,25058,21418,13301,25444,26626,13778,23895, +35778,36826,36409,0,20697,7494,30982,21298,38456,3899,16485,0,30718,0,31938, +24346,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,29830, +32859,29936,33027,30500,35209,26572,30035,28369,34729,34766,33224,34700,35401, +36013,35651,30507,29944,34010,13877,27058,36262,0,35241,0,28089,34753,16401, +29927,15835,29046,24740,24988,15569,0,24695,0,32625,35629,0,24809,19326,21024, +15384,15559,24279,30294,21809,6468,4862,39171,28124,28845,23745,25005,35343, +13943,238,26694,20238,17762,23327,25420,40784,40614,25195,1351,37595,1503, +16325,34124,17077,29679,20917,13897,18754,35300,37700,6619, +33518,15560,30780,26436,25311,18739,35242,672,27571,4869,20395,9453,20488, +27945,31364,13824,19121,9491,0,894,24484,896,839,28379,1055,0,20737,13434, +20750,39020,14147,33814,18852,1159,20832,13236,20842,3071,8444,741,9520,1422, +12851,6531,23426,34685,1459,15513,20914,20920,40244,20937,20943,20945,15580, +20947,19110,20915,20962,21314,20973,33741,26942,14125,24443,21003,21030,21052, +21173,21079,21140,21177,21189,31765,34114,21216,34317,27411,0,35550,21833, +28377,16256,2388,16364,21299,0,3042,27851,5926,26651,29653,24650,16042,14540, +5864,29149,17570,21357,21364,34475,21374,0,5526,5651,30694,21395,35483,21408, +21419,21422,29607,22386,16217,29596,21441,21445,27721,20041,22526,21465,15019, +2959,21472,16363,11683,21494,3191,21523,28793,21803,26199,27995,21613,27475, +3444,21853,21647,21668,18342,5901,3805,15796,3405,35260,9880,21831,19693, +21551,29719,21894,21929,0,6359,16442,17746,17461,26291,4276,22071,26317,12938, +26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,35686,13859, +4687,22342,16805,27758,28811,22338,14001,27774,22502,5142,22531,5204,17251, +22566,19445,22620,22698,13665,22752,22748,4668,22779,23551,22339,41296,17016, +37843,13729,22815,26790,14019,28249,5694,23076,21843,5778,34053,22985,3406, +27777,27946,6108,23001,6139,6066,28070,28017,6184,5845,23033,28229,23211, +23139,14054,18857,0,14088,23190,29797,23251,28577,9556,15749,6417,14130,5816, +24195,21200,23414,25992,23420,31246,16388,18525,516,23509,24928,6708,22988, +1445,23539, +23453,19728,23557,6980,23571,29646,23572,7333,27432,23625,18653,23685,23785, +23791,23947,7673,7735,23824,23832,23878,7844,23738,24023,33532,14381,18689, +8265,8563,33415,14390,15298,24110,27274,0,24186,17596,3283,21414,20151,0, +21416,6001,24073,24308,33922,24313,24315,14496,24316,26686,37915,24333,449, +63636,15070,18606,4922,24378,26760,9168,0,9329,24419,38845,28270,24434,37696, +35382,24487,23990,15711,21072,8042,28920,9832,37334,670,35369,24625,26245, +6263,14691,15815,13881,22416,10164,31089,15936,24734,0,24755,18818,18831, +31315,29860,20705,23200,24932,33828,24898,63654,28370,24961,20980,1622,24967, +23466,16311,10335,25043,35741,39261,25040,14642,10624,10433,24611,24924,25886, +25483,280,25285,6000,25301,11789,25452,18911,14871,25656,25592,5006,6140,0, +28554,11830,38932,16524,22301,25825,25829,38011,14950,25658,14935,25933,28438, +18984,18979,25989,25965,25951,12414,26037,18752,19255,26065,16600,6185,26080, +26083,24543,13312,26136,12791,12792,26180,12708,12709,26187,3701,26215,20966, +26227,0,7741,12849,34292,12744,21267,30661,10487,39332,26370,17308,18977, +15147,27130,14274,0,26471,26466,16845,37101,26583,17641,26658,28240,37436, +26625,13286,28064,26717,13423,27105,27147,35551,26995,26819,13773,26881,26880, +15666,14849,13884,15232,26540,26977,35402,17148,26934,27032,15265,969,33635, +20624,27129,13913,8490,27205,14083,27293,15347,26545,27336,37276,15373,27421, +2339,24798,27445,27508,10189,28341,15067,949,6488,14144,21537,15194,27617, +16124,27612,27703,9355,18673,27473, +27738,33318,27769,15804,17605,15805,16804,18700,18688,15561,14053,15595,3378, +39811,12793,9361,32655,26679,27941,28065,28139,28054,27996,28284,28420,18815, +16517,28274,34099,28532,20935,0,0,33838,35617,0,15919,29779,16258,31180,28239, +23185,12363,28664,14093,28573,15920,28410,5271,16445,17749,37872,28484,28508, +15694,28532,37232,15675,28575,16708,28627,16529,16725,16441,16368,16308,16703, +20959,16726,16727,16704,25053,28747,28798,28839,28801,28876,28885,28886,28895, +16644,15848,29108,29078,17015,28971,28997,23176,29002,0,23708,17253,29007, +37730,17089,28972,17498,18983,18978,29114,35816,28861,29198,37954,29205,22801, +37955,29220,37697,22021,29230,29248,18804,26813,29269,29271,15957,12356,26637, +28477,29314,0,29483,18467,34859,18669,34820,29480,29486,29647,29610,3130, +27182,29641,29769,16866,5863,18980,26147,14021,18871,18829,18939,29687,29717, +26883,18982,29753,1475,16087,0,10413,29792,36530,29767,29668,29814,33721, +29804,14128,29812,37873,27180,29826,18771,19084,16735,19065,35727,23366,35843, +6302,29896,6536,29966,0,29982,36569,6731,23511,36524,37765,30029,30026,30055, +30062,20354,16132,19731,30094,29789,30110,30132,30210,30252,30289,30287,30319, +30326,25589,30352,33263,14328,26897,26894,30369,30373,30391,30412,28575,33890, +20637,20861,7708,30494,30502,30528,25775,21024,30552,12972,30639,35172,35176, +5825,30708,0,4982,18962,26826,30895,30919,30931,38565,31022,21984,30935,31028, +30897,30220,36792,34948,35627,24707,9756,31110,35072,26882,31104,22615,31133, +31545,31036,31145,28202,28966, +16040,31174,37133,31188,1312,17503,21007,47234,248,16384,43296,1102,0,0,2868, +1,0,0,0,0,0,0,0,3072,64,0,0,0,1024,88,60,0,0,23680,56493,48115,17353,60910, +4004,49446,30363,61426,64478,63482,12815,44868,61438,65277,24593,176,8448, +33049,4128,43144,8544,9321,17408,50313,0,16387,53,33859,20785,26771,514,0,0,0, +0,0,16384,256,44160,33380,35904,37025,20484,54368,53760,6186,26781,38709, +55375,8440,33476,10268,30082,660,16440,41376,4293,19825,3524,47512,23390, +17153,39327,30723,57888,2079,393,16585,775,39437,21136,20433,892,8450,49184, +4974,46467,62939,30693,20368,39447,5942,12,47726,12041,21600,7680,26744,28706, +40534,62245,46990,2839,59119,6007,7003,4289,36248,6162,53174,12545,6770,11355, +49334,57888,23747,7042,56032,34254,16598,21673,53259,18447,16452,2320,16596, +15278,7780,11076,2071,33414,6198,35232,40167,2139,900,55810,60560,34779,49029, +44450,36509,39069,9504,70,40774,58239,51669,62596,19926,58118,6326,2322,0, +1024,0,32,0,512,0,0,0,0,8192,0,0,0,0,0,0,8,36352,28280,16223,56702,63293, +39932,44796,65490,27535,59377,47807,28334,61207,42972,46654,30645,37577,42455, +19126,39790,33209,26445,21758,39921,65122,21103,14039,49150,17705,63873,26045, +17062,57,16896,36704,37888,16448,45010,53719,219,39072,31666,20998,38944, +51222,2365,0,1,0,2561,2226,128,0,34820,5152,19472,0,4,17569,16,321, +2048,61504,20447,22582,62961,32949,26613,16512,20480,16718,33992,23040,55392, +11009,20481,5793,16580,28402,44049,14624,49348,1800,2316,38552,39876,7184, +27800,10886,422,4422,58733,50379,37568,8464,4630,29341,27124,5902,41514,62593, +123,41992,36875,11280,14796,330,5872,2571,3136,59933,17420,17678,2, diff --git a/vendor/modernc.org/libc/musl/src/locale/iconv.c b/vendor/modernc.org/libc/musl/src/locale/iconv.c new file mode 100644 index 000000000..3047c27b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/iconv.c @@ -0,0 +1,685 @@ +#include +#include +#include +#include +#include +#include +#include +#include "locale_impl.h" + +#define UTF_32BE 0300 +#define UTF_16LE 0301 +#define UTF_16BE 0302 +#define UTF_32LE 0303 +#define UCS2BE 0304 +#define UCS2LE 0305 +#define WCHAR_T 0306 +#define US_ASCII 0307 +#define UTF_8 0310 +#define UTF_16 0312 +#define UTF_32 0313 +#define UCS2 0314 +#define EUC_JP 0320 +#define SHIFT_JIS 0321 +#define ISO2022_JP 0322 +#define GB18030 0330 +#define GBK 0331 +#define GB2312 0332 +#define BIG5 0340 +#define EUC_KR 0350 + +/* Definitions of charmaps. Each charmap consists of: + * 1. Empty-string-terminated list of null-terminated aliases. + * 2. Special type code or number of elided quads of entries. + * 3. Character table (size determined by field 2), consisting + * of 5 bytes for every 4 characters, interpreted as 10-bit + * indices into the legacy_chars table. */ + +static const unsigned char charmaps[] = +"utf8\0char\0\0\310" +"wchart\0\0\306" +"ucs2be\0\0\304" +"ucs2le\0\0\305" +"utf16be\0\0\302" +"utf16le\0\0\301" +"ucs4be\0utf32be\0\0\300" +"ucs4le\0utf32le\0\0\303" +"ascii\0usascii\0iso646\0iso646us\0\0\307" +"utf16\0\0\312" +"ucs4\0utf32\0\0\313" +"ucs2\0\0\314" +"eucjp\0\0\320" +"shiftjis\0sjis\0\0\321" +"iso2022jp\0\0\322" +"gb18030\0\0\330" +"gbk\0\0\331" +"gb2312\0\0\332" +"big5\0bigfive\0cp950\0big5hkscs\0\0\340" +"euckr\0ksc5601\0ksx1001\0cp949\0\0\350" +#include "codepages.h" +; + +/* Table of characters that appear in legacy 8-bit codepages, + * limited to 1024 slots (10 bit indices). The first 256 entries + * are elided since those characters are obviously all included. */ +static const unsigned short legacy_chars[] = { +#include "legacychars.h" +}; + +static const unsigned short jis0208[84][94] = { +#include "jis0208.h" +}; + +static const unsigned short gb18030[126][190] = { +#include "gb18030.h" +}; + +static const unsigned short big5[89][157] = { +#include "big5.h" +}; + +static const unsigned short hkscs[] = { +#include "hkscs.h" +}; + +static const unsigned short ksc[93][94] = { +#include "ksc.h" +}; + +static const unsigned short rev_jis[] = { +#include "revjis.h" +}; + +static int fuzzycmp(const unsigned char *a, const unsigned char *b) +{ + for (; *a && *b; a++, b++) { + while (*a && (*a|32U)-'a'>26 && *a-'0'>10U) a++; + if ((*a|32U) != *b) return 1; + } + return *a != *b; +} + +static size_t find_charmap(const void *name) +{ + const unsigned char *s; + if (!*(char *)name) name=charmaps; /* "utf8" */ + for (s=charmaps; *s; ) { + if (!fuzzycmp(name, s)) { + for (; *s; s+=strlen((void *)s)+1); + return s+1-charmaps; + } + s += strlen((void *)s)+1; + if (!*s) { + if (s[1] > 0200) s+=2; + else s+=2+(64U-s[1])*5; + } + } + return -1; +} + +struct stateful_cd { + iconv_t base_cd; + unsigned state; +}; + +static iconv_t combine_to_from(size_t t, size_t f) +{ + return (void *)(f<<16 | t<<1 | 1); +} + +static size_t extract_from(iconv_t cd) +{ + return (size_t)cd >> 16; +} + +static size_t extract_to(iconv_t cd) +{ + return (size_t)cd >> 1 & 0x7fff; +} + +iconv_t iconv_open(const char *to, const char *from) +{ + size_t f, t; + struct stateful_cd *scd; + + if ((t = find_charmap(to))==-1 + || (f = find_charmap(from))==-1 + || (charmaps[t] >= 0330)) { + errno = EINVAL; + return (iconv_t)-1; + } + iconv_t cd = combine_to_from(t, f); + + switch (charmaps[f]) { + case UTF_16: + case UTF_32: + case UCS2: + case ISO2022_JP: + scd = malloc(sizeof *scd); + if (!scd) return (iconv_t)-1; + scd->base_cd = cd; + scd->state = 0; + cd = (iconv_t)scd; + } + + return cd; +} + +static unsigned get_16(const unsigned char *s, int e) +{ + e &= 1; + return s[e]<<8 | s[1-e]; +} + +static void put_16(unsigned char *s, unsigned c, int e) +{ + e &= 1; + s[e] = c>>8; + s[1-e] = c; +} + +static unsigned get_32(const unsigned char *s, int e) +{ + e &= 3; + return s[e]+0U<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3]; +} + +static void put_32(unsigned char *s, unsigned c, int e) +{ + e &= 3; + s[e^0] = c>>24; + s[e^1] = c>>16; + s[e^2] = c>>8; + s[e^3] = c; +} + +/* Adapt as needed */ +#define mbrtowc_utf8 mbrtowc +#define wctomb_utf8 wctomb + +static unsigned legacy_map(const unsigned char *map, unsigned c) +{ + if (c < 4*map[-1]) return c; + unsigned x = c - 4*map[-1]; + x = map[x*5/4]>>2*x%8 | map[x*5/4+1]<<8-2*x%8 & 1023; + return x < 256 ? x : legacy_chars[x-256]; +} + +static unsigned uni_to_jis(unsigned c) +{ + unsigned nel = sizeof rev_jis / sizeof *rev_jis; + unsigned d, j, i, b = 0; + for (;;) { + i = nel/2; + j = rev_jis[b+i]; + d = jis0208[j/256][j%256]; + if (d==c) return j + 0x2121; + else if (nel == 1) return 0; + else if (c < d) + nel /= 2; + else { + b += i; + nel -= nel/2; + } + } +} + +size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb) +{ + size_t x=0; + struct stateful_cd *scd=0; + if (!((size_t)cd & 1)) { + scd = (void *)cd; + cd = scd->base_cd; + } + unsigned to = extract_to(cd); + unsigned from = extract_from(cd); + const unsigned char *map = charmaps+from+1; + const unsigned char *tomap = charmaps+to+1; + mbstate_t st = {0}; + wchar_t wc; + unsigned c, d; + size_t k, l; + int err; + unsigned char type = map[-1]; + unsigned char totype = tomap[-1]; + locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; + + if (!in || !*in || !*inb) return 0; + + *ploc = UTF8_LOCALE; + + for (; *inb; *in+=l, *inb-=l) { + c = *(unsigned char *)*in; + l = 1; + + switch (type) { + case UTF_8: + if (c < 128) break; + l = mbrtowc_utf8(&wc, *in, *inb, &st); + if (l == (size_t)-1) goto ilseq; + if (l == (size_t)-2) goto starved; + c = wc; + break; + case US_ASCII: + if (c >= 128) goto ilseq; + break; + case WCHAR_T: + l = sizeof(wchar_t); + if (*inb < l) goto starved; + c = *(wchar_t *)*in; + if (0) { + case UTF_32BE: + case UTF_32LE: + l = 4; + if (*inb < 4) goto starved; + c = get_32((void *)*in, type); + } + if (c-0xd800u < 0x800u || c >= 0x110000u) goto ilseq; + break; + case UCS2BE: + case UCS2LE: + case UTF_16BE: + case UTF_16LE: + l = 2; + if (*inb < 2) goto starved; + c = get_16((void *)*in, type); + if ((unsigned)(c-0xdc00) < 0x400) goto ilseq; + if ((unsigned)(c-0xd800) < 0x400) { + if (type-UCS2BE < 2U) goto ilseq; + l = 4; + if (*inb < 4) goto starved; + d = get_16((void *)(*in + 2), type); + if ((unsigned)(d-0xdc00) >= 0x400) goto ilseq; + c = ((c-0xd7c0)<<10) + (d-0xdc00); + } + break; + case UCS2: + case UTF_16: + l = 0; + if (!scd->state) { + if (*inb < 2) goto starved; + c = get_16((void *)*in, 0); + scd->state = type==UCS2 + ? c==0xfffe ? UCS2LE : UCS2BE + : c==0xfffe ? UTF_16LE : UTF_16BE; + if (c == 0xfffe || c == 0xfeff) + l = 2; + } + type = scd->state; + continue; + case UTF_32: + l = 0; + if (!scd->state) { + if (*inb < 4) goto starved; + c = get_32((void *)*in, 0); + scd->state = c==0xfffe0000 ? UTF_32LE : UTF_32BE; + if (c == 0xfffe0000 || c == 0xfeff) + l = 4; + } + type = scd->state; + continue; + case SHIFT_JIS: + if (c < 128) break; + if (c-0xa1 <= 0xdf-0xa1) { + c += 0xff61-0xa1; + break; + } + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + if (c-129 <= 159-129) c -= 129; + else if (c-224 <= 239-224) c -= 193; + else goto ilseq; + c *= 2; + if (d-64 <= 158-64) { + if (d==127) goto ilseq; + if (d>127) d--; + d -= 64; + } else if (d-159 <= 252-159) { + c++; + d -= 159; + } + c = jis0208[c][d]; + if (!c) goto ilseq; + break; + case EUC_JP: + if (c < 128) break; + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + if (c==0x8e) { + c = d; + if (c-0xa1 > 0xdf-0xa1) goto ilseq; + c += 0xff61 - 0xa1; + break; + } + c -= 0xa1; + d -= 0xa1; + if (c >= 84 || d >= 94) goto ilseq; + c = jis0208[c][d]; + if (!c) goto ilseq; + break; + case ISO2022_JP: + if (c >= 128) goto ilseq; + if (c == '\033') { + l = 3; + if (*inb < 3) goto starved; + c = *((unsigned char *)*in + 1); + d = *((unsigned char *)*in + 2); + if (c != '(' && c != '$') goto ilseq; + switch (128*(c=='$') + d) { + case 'B': scd->state=0; continue; + case 'J': scd->state=1; continue; + case 'I': scd->state=4; continue; + case 128+'@': scd->state=2; continue; + case 128+'B': scd->state=3; continue; + } + goto ilseq; + } + switch (scd->state) { + case 1: + if (c=='\\') c = 0xa5; + if (c=='~') c = 0x203e; + break; + case 2: + case 3: + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + c -= 0x21; + d -= 0x21; + if (c >= 84 || d >= 94) goto ilseq; + c = jis0208[c][d]; + if (!c) goto ilseq; + break; + case 4: + if (c-0x60 < 0x1f) goto ilseq; + if (c-0x21 < 0x5e) c += 0xff61-0x21; + break; + } + break; + case GB2312: + if (c < 128) break; + if (c < 0xa1) goto ilseq; + case GBK: + case GB18030: + if (c < 128) break; + c -= 0x81; + if (c >= 126) goto ilseq; + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + if (d < 0xa1 && type == GB2312) goto ilseq; + if (d-0x40>=191 || d==127) { + if (d-'0'>9 || type != GB18030) + goto ilseq; + l = 4; + if (*inb < 4) goto starved; + c = (10*c + d-'0') * 1260; + d = *((unsigned char *)*in + 2); + if (d-0x81>126) goto ilseq; + c += 10*(d-0x81); + d = *((unsigned char *)*in + 3); + if (d-'0'>9) goto ilseq; + c += d-'0'; + c += 128; + for (d=0; d<=c; ) { + k = 0; + for (int i=0; i<126; i++) + for (int j=0; j<190; j++) + if (gb18030[i][j]-d <= c-d) + k++; + d = c+1; + c += k; + } + break; + } + d -= 0x40; + if (d>63) d--; + c = gb18030[c][d]; + break; + case BIG5: + if (c < 128) break; + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + if (d-0x40>=0xff-0x40 || d-0x7f<0xa1-0x7f) goto ilseq; + d -= 0x40; + if (d > 0x3e) d -= 0x22; + if (c-0xa1>=0xfa-0xa1) { + if (c-0x87>=0xff-0x87) goto ilseq; + if (c < 0xa1) c -= 0x87; + else c -= 0x87 + (0xfa-0xa1); + c = (hkscs[4867+(c*157+d)/16]>>(c*157+d)%16)%2<<17 + | hkscs[c*157+d]; + /* A few HKSCS characters map to pairs of UCS + * characters. These are mapped to surrogate + * range in the hkscs table then hard-coded + * here. Ugly, yes. */ + if (c/256 == 0xdc) { + union { + char c[8]; + wchar_t wc[2]; + } tmp; + char *ptmp = tmp.c; + size_t tmpx = iconv(combine_to_from(to, find_charmap("utf8")), + &(char *){"\303\212\314\204" + "\303\212\314\214" + "\303\252\314\204" + "\303\252\314\214" + +c%256}, &(size_t){4}, + &ptmp, &(size_t){sizeof tmp}); + size_t tmplen = ptmp - tmp.c; + if (tmplen > *outb) goto toobig; + if (tmpx) x++; + memcpy(*out, &tmp, tmplen); + *out += tmplen; + *outb -= tmplen; + continue; + } + if (!c) goto ilseq; + break; + } + c -= 0xa1; + c = big5[c][d]|(c==0x27&&(d==0x3a||d==0x3c||d==0x42))<<17; + if (!c) goto ilseq; + break; + case EUC_KR: + if (c < 128) break; + l = 2; + if (*inb < 2) goto starved; + d = *((unsigned char *)*in + 1); + c -= 0xa1; + d -= 0xa1; + if (c >= 93 || d >= 94) { + c += (0xa1-0x81); + d += 0xa1; + if (c >= 93 || c>=0xc6-0x81 && d>0x52) + goto ilseq; + if (d-'A'<26) d = d-'A'; + else if (d-'a'<26) d = d-'a'+26; + else if (d-0x81<0xff-0x81) d = d-0x81+52; + else goto ilseq; + if (c < 0x20) c = 178*c + d; + else c = 178*0x20 + 84*(c-0x20) + d; + c += 0xac00; + for (d=0xac00; d<=c; ) { + k = 0; + for (int i=0; i<93; i++) + for (int j=0; j<94; j++) + if (ksc[i][j]-d <= c-d) + k++; + d = c+1; + c += k; + } + break; + } + c = ksc[c][d]; + if (!c) goto ilseq; + break; + default: + if (!c) break; + c = legacy_map(map, c); + if (!c) goto ilseq; + } + + switch (totype) { + case WCHAR_T: + if (*outb < sizeof(wchar_t)) goto toobig; + *(wchar_t *)*out = c; + *out += sizeof(wchar_t); + *outb -= sizeof(wchar_t); + break; + case UTF_8: + if (*outb < 4) { + char tmp[4]; + k = wctomb_utf8(tmp, c); + if (*outb < k) goto toobig; + memcpy(*out, tmp, k); + } else k = wctomb_utf8(*out, c); + *out += k; + *outb -= k; + break; + case US_ASCII: + if (c > 0x7f) subst: x++, c='*'; + default: + if (*outb < 1) goto toobig; + if (c<256 && c==legacy_map(tomap, c)) { + revout: + if (*outb < 1) goto toobig; + *(*out)++ = c; + *outb -= 1; + break; + } + d = c; + for (c=4*totype; c<256; c++) { + if (d == legacy_map(tomap, c)) { + goto revout; + } + } + goto subst; + case SHIFT_JIS: + if (c < 128) goto revout; + if (c == 0xa5) { + x++; + c = '\\'; + goto revout; + } + if (c == 0x203e) { + x++; + c = '~'; + goto revout; + } + if (c-0xff61 <= 0xdf-0xa1) { + c += 0xa1 - 0xff61; + goto revout; + } + c = uni_to_jis(c); + if (!c) goto subst; + if (*outb < 2) goto toobig; + d = c%256; + c = c/256; + *(*out)++ = (c+1)/2 + (c<95 ? 112 : 176); + *(*out)++ = c%2 ? d + 31 + d/96 : d + 126; + *outb -= 2; + break; + case EUC_JP: + if (c < 128) goto revout; + if (c-0xff61 <= 0xdf-0xa1) { + c += 0x0e00 + 0x21 - 0xff61; + } else { + c = uni_to_jis(c); + } + if (!c) goto subst; + if (*outb < 2) goto toobig; + *(*out)++ = c/256 + 0x80; + *(*out)++ = c%256 + 0x80; + *outb -= 2; + break; + case ISO2022_JP: + if (c < 128) goto revout; + if (c-0xff61 <= 0xdf-0xa1 || c==0xa5 || c==0x203e) { + if (*outb < 7) goto toobig; + *(*out)++ = '\033'; + *(*out)++ = '('; + if (c==0xa5) { + *(*out)++ = 'J'; + *(*out)++ = '\\'; + } else if (c==0x203e) { + *(*out)++ = 'J'; + *(*out)++ = '~'; + } else { + *(*out)++ = 'I'; + *(*out)++ = c-0xff61+0x21; + } + *(*out)++ = '\033'; + *(*out)++ = '('; + *(*out)++ = 'B'; + *outb -= 7; + break; + } + c = uni_to_jis(c); + if (!c) goto subst; + if (*outb < 8) goto toobig; + *(*out)++ = '\033'; + *(*out)++ = '$'; + *(*out)++ = 'B'; + *(*out)++ = c/256; + *(*out)++ = c%256; + *(*out)++ = '\033'; + *(*out)++ = '('; + *(*out)++ = 'B'; + *outb -= 8; + break; + case UCS2: + totype = UCS2BE; + case UCS2BE: + case UCS2LE: + case UTF_16: + case UTF_16BE: + case UTF_16LE: + if (c < 0x10000 || totype-UCS2BE < 2U) { + if (c >= 0x10000) c = 0xFFFD; + if (*outb < 2) goto toobig; + put_16((void *)*out, c, totype); + *out += 2; + *outb -= 2; + break; + } + if (*outb < 4) goto toobig; + c -= 0x10000; + put_16((void *)*out, (c>>10)|0xd800, totype); + put_16((void *)(*out + 2), (c&0x3ff)|0xdc00, totype); + *out += 4; + *outb -= 4; + break; + case UTF_32: + totype = UTF_32BE; + case UTF_32BE: + case UTF_32LE: + if (*outb < 4) goto toobig; + put_32((void *)*out, c, totype); + *out += 4; + *outb -= 4; + break; + } + } + *ploc = loc; + return x; +ilseq: + err = EILSEQ; + x = -1; + goto end; +toobig: + err = E2BIG; + x = -1; + goto end; +starved: + err = EINVAL; + x = -1; +end: + errno = err; + *ploc = loc; + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/iconv_close.c b/vendor/modernc.org/libc/musl/src/locale/iconv_close.c new file mode 100644 index 000000000..28b295659 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/iconv_close.c @@ -0,0 +1,8 @@ +#include +#include + +int iconv_close(iconv_t cd) +{ + if (!((size_t)cd & 1)) free((void *)cd); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/jis0208.h b/vendor/modernc.org/libc/musl/src/locale/jis0208.h new file mode 100644 index 000000000..de9c5f26a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/jis0208.h @@ -0,0 +1,563 @@ +12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180, +65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294, +12295,12540,8213,8208,65295,92,12316,8214,65372,8230,8229,8216,8217,8220,8221, +65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300, +12301,12302,12303,12304,12305,65291,8722,177,215,247,65309,8800,65308,65310, +8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,162,163,65285, +65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651, +9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,0,0,0,0,0,0,0,0,0,0,0, +8712,8715,8838,8839,8834,8835,8746,8745,0,0,0,0,0,0,0,0,8743,8744,172,8658, +8660,8704,8707,0,0,0,0,0,0,0,0,0,0,0,8736,8869,8978,8706,8711,8801,8786,8810, +8811,8730,8765,8733,8757,8747,8748,0,0,0,0,0,0,0,8491,8240,9839,9837,9834, +8224,8225,182,0,0,0,0,9711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65296,65297,65298, +65299,65300,65301,65302,65303,65304,65305,0,0,0,0,0,0,0,65313,65314,65315, +65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328, +65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,0,0,0,0,0,0,65345, +65346,65347, +65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360, +65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,0,0,0,0,12353, +12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366, +12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379, +12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392, +12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405, +12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418, +12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431, +12432,12433,12434,12435,0,0,0,0,0,0,0,0,0,0,0,12449,12450,12451,12452,12453, +12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466, +12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479, +12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492, +12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505, +12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518, +12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531, +12532,12533,12534,0,0,0,0,0,0,0,0,913,914,915,916,917,918,919,920,921,922,923, +924,925,926,927,928,929,931,932,933,934,935,936,937,0,0,0,0,0,0,0,0,945,946, +947,948,949,950,951,952,953, +954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1040,1041,1042,1043, +1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057, +1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081, +1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096, +1097,1098,1099,1100,1101,1102,1103,0,0,0,0,0,0,0,0,0,0,0,0,0,9472,9474,9484, +9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507, +9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,20124,21782,23043,38463,21696,24859,25384,23030, +36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311, +26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433, +24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258, +22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227, +32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946, +37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693, +21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515, +21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198, +22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939, +38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945, +29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742, +35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513, +25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960, +37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106, +27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740, +23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979, +21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521, +31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457, +33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442, +20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171, +20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296, +25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542, +35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903, +35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508, +24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611, +37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263, +26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676, +19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107, +40232,26658,33541,33841,31909,21000,33477,29926,20094, +20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515, +24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475, +27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566, +32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501, +38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107, +38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,22855,23305,23492, +23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112, +27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,35352,36020,36215, +36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836, +27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507, +21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992, +20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875, +28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040, +25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139, +20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932, +22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421, +30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597, +26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670, +26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641, +36817,37329,21535,37504,20061,20534,21477,21306,29399, +29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598, +23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705, +31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676, +36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411, +22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179, +30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686, +36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625, +27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860, +21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177, +29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963, +37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572, +29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396, +24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776, +34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566, +23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062, +39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475, +21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184, +24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356, +26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295, +31968,32005,32024,32094,32177,32789,32771,32943,32945, +33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783, +37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335, +28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508, +28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372, +22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746, +20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782, +35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425, +25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048, +33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586, +27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388, +26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334, +25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194, +19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386, +34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050, +21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535, +24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049, +31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566, +36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345, +26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940, +36766,27728,40575,24335,35672,40235,31482,36600,23437, +38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455, +34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198, +26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610, +26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432, +25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610, +23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833, +25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728, +36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102, +26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302, +31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423, +20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255, +38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295, +35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280, +21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569, +23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157, +26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151, +30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121, +34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556, +38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773, +25854,26465,26454,27972,29366,30067,31331,33976,35698, +37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302, +39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910, +25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051, +33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995, +22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920, +37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736, +34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264, +38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716, +30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228, +26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488, +35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114, +26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889, +20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633, +20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676, +27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680, +33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854, +21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514, +26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311, +35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245, +23435,23652,21277,24803,24819,25436,25475,25407,25531, +25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967, +32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783, +38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363, +24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966, +20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409, +21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534, +23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151, +33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261, +38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730, +35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890, +33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022, +22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829, +32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527, +20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933, +39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013, +20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376, +27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115, +24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522, +32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189, +25431,30452,26389,27784,29645,36035,37806,38515,27941, +22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460, +26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514, +37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213, +24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224, +33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973, +28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856, +22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583, +28593,30000,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193, +30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594, +20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764, +25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403, +30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588, +35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530, +23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311, +24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984, +31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788, +35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598, +28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108, +23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615, +38894,20219,22922,24525,35469,28641,31152,31074,23527, +33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492, +22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773, +35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309, +25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757, +26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271, +21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448, +29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161, +32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567, +38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644, +26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684, +37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329, +21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,30382, +30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800, +20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091, +39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195, +32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961, +24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996, +27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500, +20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178, +33433,35676,36000,36070,36212,38428,38468,20398,25771, +27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489, +24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826, +20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991, +32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491, +31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255, +31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610, +22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597, +31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214, +25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804, +34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621, +21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033, +32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696, +25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412, +32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737, +27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411, +27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749, +24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496, +21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629, +26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754, +40634,25720,27169,33538,22916,23391,27611,29467,30450, +32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870, +36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357, +30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840, +27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962, +25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009, +37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934, +23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407, +32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442, +27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931, +32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519, +23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575, +31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452, +40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753, +28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147, +32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792, +22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036, +33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010, +24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791, +27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010, +28431,29282,29436,31725,32769,32894,34635,37070,20845, +40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528, +40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101, +35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174, +20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315, +20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358, +20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506, +20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497, +20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634, +20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718, +20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796, +20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866, +22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906, +20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969, +20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049, +21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133, +21140,21138,21105,21128,21137,36776,36775, +21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235, +21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295, +21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358, +22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762, +38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549, +21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616, +21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700, +21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757, +21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847, +21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934, +21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036, +22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072, +22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190, +22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254, +22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300, +22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409, +22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486, +22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649, +22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743, +22745,22744,22757,22748,22756,22751,22767,22778,22777, +22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840, +22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904, +22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077, +23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194, +23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308, +23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386, +23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480, +23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542, +23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622, +23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700, +22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802, +23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834, +23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970, +23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027, +24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128, +24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224, +24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296, +24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331, +24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407, +24409,24417,24429,24435,24439,24451,24450,24447,24458, +24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548, +24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603, +24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653, +24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708, +24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765, +24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865, +24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884, +24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945, +24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003, +25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062, +25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100, +25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187, +25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236, +25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287, +25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421, +25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451, +25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606, +25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749, +25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841, +25831,33289,25824,25825,25260,25827,25839,25900,25846, +25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909, +25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976, +25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066, +26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164, +26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224, +26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308, +26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398, +26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457, +26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551, +26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574, +26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713, +26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740, +26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849, +26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848, +26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964, +27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058, +27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047, +27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129, +27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155, +27204,27148,27250,27190,27256,27207,27234,27225,27238, +27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331, +27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326, +27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465, +27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533, +27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590, +27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684, +27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763, +27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834, +27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955, +27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153, +28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101, +28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222, +28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216, +28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303, +28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399, +28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659, +28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601, +28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666, +28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722, +28753,28771,28825,28818,28847,28913,28844,28856,28851, +28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030, +29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118, +29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200, +29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272, +29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382, +29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462, +29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552, +29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858, +29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801, +29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920, +29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964, +29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043, +30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090, +30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136, +30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192, +30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260, +30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311, +30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355, +30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433, +30437,30439,30442,34351,30459,30472,30471,30468,30505, +30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565, +30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652, +30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014, +30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895, +30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964, +30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059, +31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189, +31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291, +31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368, +31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431, +31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472, +31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610, +31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598, +31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681, +31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751, +31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805, +31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861, +31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929, +31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990, +31994,32006,32002,32028,32021,32010,32069,32075,32046, +32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147, +32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317, +32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225, +32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315, +32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377, +32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402, +32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590, +32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646, +32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686, +32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761, +39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842, +32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893, +32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985, +32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539, +33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162, +33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208, +33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248, +33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321, +33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386, +33387,33326,33393,33399,33400,33406,33421,33426,33451, +33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531, +33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593, +33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571, +33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771, +33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824, +33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902, +33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009, +33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,34036,34071,34072, +34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133, +34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167, +34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314, +34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399, +34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480, +34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568, +34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597, +34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643, +34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731, +34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807, +34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884, +34882,34898,34905,34910,34914,34923,34945,34942,34974, +34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992, +35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048, +35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131, +35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191, +35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258, +35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340, +35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426, +35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522, +35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596, +35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624, +35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700, +35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912, +35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981, +35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040, +36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109, +36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290, +36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348, +36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423, +36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476, +36481,36487,36485,36484,36491,36490,36499,36497,36500, +36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579, +36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635, +36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695, +36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834, +36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886, +36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926, +36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002, +37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145, +37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250, +37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334, +37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470, +37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531, +37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667, +37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817, +37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907, +37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984, +37986,37982,37994,37417,38000,38005,38007,38013,37978,38012,38014,38017,38015, +38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331, +38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373, +38370,38433,38440,38446,38447,38466,38476,38479,38475, +38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570, +38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149, +38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681, +38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752, +38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795, +38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876, +38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973, +38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094, +39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198, +39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250, +39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377, +39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479, +39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524, +39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647, +39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706, +39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747, +39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840, +39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892, +39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954, +39946,39940,39982,39963,39973,39972,39969,39984,40007, +39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200, +40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255, +40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363, +40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399, +40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569, +40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618, +40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680, +40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737, +40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810, +40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0, diff --git a/vendor/modernc.org/libc/musl/src/locale/ksc.h b/vendor/modernc.org/libc/musl/src/locale/ksc.h new file mode 100644 index 000000000..cf2ec6890 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/ksc.h @@ -0,0 +1,650 @@ +12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217, +8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304, +12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504, +65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733, +9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595, +8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834, +8835,8746,8745,8743,8744,65506,8658,8660,8704,8707,180,65374,711,728,733,730, +729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828, +9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639, +9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600, +9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65281,65282,65283,65284,65285,65286, +65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299, +65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312, +65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325, +65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338, +65339,65510,65341,65342,65343,65344,65345,65346,65347, +65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360, +65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373, +65507,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604, +12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617, +12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630, +12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643, +12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656, +12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669, +12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682, +12683,12684,12685,12686,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,0,0, +0,0,0,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,0,0,0,0,0,0,0,913,914, +915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934, +935,936,937,0,0,0,0,0,0,0,0,945,946,947,948,949,950,951,952,953,954,955,956, +957,958,959,960,961,963,964,965,966,967,968,969,0,0,0,0,0,0,9472,9474,9484, +9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507, +9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490, +9489,9498,9497,9494,9493,9486,9485,9502, +9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,9526,9529,9530, +9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13205,13206,13207,8467,13208,13252,13219, +13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218, +13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234, +13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242, +13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249, +13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228, +13277,13264,13267,13251,13257,13276,13254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198, +208,170,294,0,306,0,319,321,216,338,186,222,358,330,0,12896,12897,12898,12899, +12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912, +12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,9424,9425, +9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440, +9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,9315,9316,9317, +9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,190,8539,8540, +8541,8542,230,273,240,295,305,307,312,320,322,248,339,223,254,359,331, +329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811, +12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824, +12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383, +9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9332, +9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,185,178, +179,8308,8319,8321,8322,8323,8324,12353,12354,12355,12356,12357,12358,12359, +12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372, +12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385, +12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398, +12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411, +12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424, +12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,0,0,0,0,0,0, +0,0,0,0,0,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459, +12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472, +12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485, +12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498, +12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511, +12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524, +12525,12526,12527,12528,12529,12530,12531, +12532,12533,12534,0,0,0,0,0,0,0,0,1040,1041,1042,1043,1044,1045,1025,1046, +1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061, +1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085, +1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100, +1101,1102,1103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,44032,44033,44036,44039,44040,44041,44042,44048, +44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,44064, +44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,44116, +44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,44165, +44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,44200, +44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,44232, +44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,44273, +44275,44277,44278,44284,44285,44288,44292,44294,44300,44301,44303,44305,44312, +44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,44361, +44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,44411, +44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,44471, +44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,44540, +44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,44600, +44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,44630, +44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,44665,44667, +44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,44751, +44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,44808, +44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,44867, +44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,44945, +44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,45012, +45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,45076, +45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,45143, +45145,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,45210, +45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,45233, +45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,45268, +45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,45339, +45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,45376, +45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,45436, +45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,45516, +45520,45524,45532,45533,45535,45544,45545,45548,45552, +45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,45600, +45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,45705, +45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,45740, +45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,45796, +45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,45816, +45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,45845, +45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,45927,45929, +45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,45968, +45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,46036, +46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,46112, +46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,46188, +46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288, +46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,46356, +46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,46388, +46392,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,46429, +46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,46516, +46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,46572, +46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,46752, +46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,46889, +46892,46895,46896,46904,46905,46907,46916,46920,46924, +46932,46933,46944,46948,46952,46960,46961,46963,46965,46972,46973,46976,46980, +46988,46989,46991,46992,46993,46994,46998,46999,47000,47001,47004,47008,47016, +47017,47019,47020,47021,47028,47029,47032,47047,47049,47084,47085,47088,47092, +47100,47101,47103,47104,47105,47111,47112,47113,47116,47120,47128,47129,47131, +47133,47140,47141,47144,47148,47156,47157,47159,47160,47161,47168,47172,47185, +47187,47196,47197,47200,47204,47212,47213,47215,47217,47224,47228,47245,47272, +47280,47284,47288,47296,47297,47299,47301,47308,47312,47316,47325,47327,47329, +47336,47337,47340,47344,47352,47353,47355,47357,47364,47384,47392,47420,47421, +47424,47428,47436,47439,47441,47448,47449,47452,47456,47464,47465,47467,47469, +47476,47477,47480,47484,47492,47493,47495,47497,47498,47501,47502,47532,47533, +47536,47540,47548,47549,47551,47553,47560,47561,47564,47566,47567,47568,47569, +47570,47576,47577,47579,47581,47582,47585,47587,47588,47589,47592,47596,47604, +47605,47607,47608,47609,47610,47616,47617,47624,47637,47672,47673,47676,47680, +47682,47688,47689,47691,47693,47694,47699,47700,47701,47704,47708,47716,47717, +47719,47720,47721,47728,47729,47732,47736,47747,47748,47749,47751,47756,47784, +47785,47787,47788,47792,47794,47800,47801,47803,47805,47812,47816,47832,47833, +47868,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,47924,47925, +47926,47928,47931,47932,47933,47934,47940,47941,47943,47945,47949,47951,47952, +47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055, +48064,48068,48072,48080,48083,48120,48121,48124,48127, +48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,48150,48151, +48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,48176,48177, +48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,48221,48260, +48261,48264,48267,48268,48270,48276,48277,48279,48281,48282,48288,48289,48292, +48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,48333,48335, +48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,48389,48391, +48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,48473,48484, +48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,48533,48537, +48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,48628,48632, +48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,48709,48712, +48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,48744,48746, +48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,48781,48783, +48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,48867,48868, +48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,48961,48964, +48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,49116,49119, +49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,49304,49312, +49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,49340,49341, +49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,49372,49373, +49380,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,49424,49429, +49436,49437,49438,49439,49440,49443,49444,49446,49447, +49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483, +49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524, +49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573, +49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636, +49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688, +49689,49692,49695,49696,49704,49705,49707,49709,49711,49713,49714,49716,49736, +49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791, +49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844, +49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905, +49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941, +49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040, +50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146, +50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,50228,50236, +50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360, +50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452, +50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505, +50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528, +50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567, +50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616, +50617,50619,50620,50621,50622,50628,50629,50630,50631, +50632,50633,50634,50636,50638,50640,50641,50644,50648,50656,50657,50659,50661, +50668,50669,50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689, +50693,50694,50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728, +50732,50733,50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756, +50760,50768,50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808, +50809,50812,50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853, +50855,50857,50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892, +50893,50896,50900,50908,50909,50912,50913,50920,50921,50924,50928,50936,50937, +50941,50948,50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984, +50992,50993,50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023, +51025,51026,51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060, +51061,51064,51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086, +51088,51089,51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110, +51116,51117,51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150, +51152,51160,51165,51172,51176,51180,51200,51201,51204,51208,51210,51216,51217, +51219,51221,51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260, +51264,51272,51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329, +51331,51333,51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388, +51389,51396,51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452, +51453,51456,51460,51461,51462,51468,51469,51471,51473, +51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,51564,51568,51572, +51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,51649,51652,51655, +51656,51658,51664,51665,51667,51669,51670,51673,51674,51676,51677,51680,51682, +51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,51712,51720,51721, +51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,51804,51805,51807, +51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,51916,51917,51919, +51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,51992,52000,52001, +52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,52089,52124,52152, +52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,52257,52258,52263, +52264,52265,52268,52270,52272,52280,52281,52283,52284,52285,52286,52292,52293, +52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,52328,52336,52341, +52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,52405,52408,52412, +52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,52488,52489,52492, +52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,52576,52580,52588, +52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,52645,52647,52649, +52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,52733,52740,52744, +52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,52789,52824,52825, +52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,52856,52860,52868, +52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,52900,52901,52908, +52909,52929,52964,52965,52968,52971,52972,52980,52981, +52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024, +53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093, +53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188, +53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272, +53293,53300,53301,53304,53308,53316,53317,53319,53321,53328,53332,53336,53344, +53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429, +53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468, +53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556, +53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597, +53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681, +53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805, +53808,53812,53820,53821,53823,53825,53832,53852,53860,53888,53889,53892,53896, +53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952, +53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008, +54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047, +54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084, +54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172, +54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224, +54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,54280,54301, +54336,54340,54364,54368,54372,54381,54383,54392,54393, +54396,54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484, +54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549, +54551,54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624, +54629,54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664, +54665,54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756, +54757,54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801, +54803,54804,54805,54812,54816,54820,54829,54840,54841,54844,54848,54853,54856, +54857,54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900, +54915,54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969, +54971,54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024, +55029,55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083, +55085,55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127, +55128,55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169, +55176,55177,55180,55184,55192,55193,55195,55197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20285,20339,20551,20729,21152,21487,21621,21733, +22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,33499,33540, +34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,24682,24932, +27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,24178,24185, +25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925, +33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638, +38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,29976, +30131,30435,30640,32058,37039,37969,37970,40853,21283,23724,30002,32987,37440, +38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086, +31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,40007,20171, +20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422, +31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,32697,37301, +20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382, +63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,33137,34388, +36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,30652,37392, +40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233, +38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,40273,25225, +27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,20140,20435, +20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004, +25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,30169, +30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885, +37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,25106, +26690,26800,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489, +35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,25335, +25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771, +32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,38599, +39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,23825, +26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,20849, +21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,38799, +20018,23521,25096,26524,29916,31185,33747,35463,35506,36328,36942,37707,38982, +24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,29743, +29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362, +20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350, +25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024, +32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211, +29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509, +39851,19992,20037,20061,20167,20465,20855,21246,21312,21475,21477,21646,22036, +22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590, +27628,27714,28317,28792,29399,29590,29699,30655,30697, +31350,32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041, +37476,37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628, +21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353, +31406,33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519, +21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231, +27512,36020,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429, +31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752, +27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020, +26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935, +25810,26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235, +21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854, +20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049, +24190,24524,25216,26071,26083,26398,26399,26462,26827,26820,27231,27450,27683, +27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041, +31047,31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912, +36215,37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326, +26708,37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759, +63760,63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770, +63771,63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777, +26511,26976,28275,63778,30007,63779,63780,63781,32013, +63782,63783,34930,22218,23064,63784,63785,63786,63787,63788,20035,63789,20839, +22856,26608,32784,63790,22899,24180,25754,31178,24565,24684,25288,25467,23527, +23511,21162,63791,22900,24361,24594,63792,63793,63794,29785,63795,63796,63797, +63798,63799,63800,39377,63801,63802,63803,63804,63805,63806,63807,63808,63809, +63810,63811,28611,63812,63813,33215,36786,24817,63814,63815,33126,63816,63817, +23615,63818,63819,63820,63821,63822,63823,63824,63825,23273,35365,26491,32016, +63826,63827,63828,63829,63830,63831,33021,63832,63833,23612,27877,21311,28346, +22810,33590,20025,20150,20294,21934,22296,22727,24406,26039,26086,27264,27573, +28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136, +36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213, +34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616, +24162,25095,25758,26848,30070,31958,34739,40680,20195,22408,22382,22823,23565, +23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,40667,23429,24503, +24755,20498,20992,21040,22294,22581,22615,23566,23648,23798,23947,24230,24466, +24764,25361,25481,25623,26691,26873,27330,28120,28193,28372,28644,29182,30428, +30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709, +38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,35712,22697, +24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908, +20941,21205,21516,24999,26481,26704,26847,27934,28540,30140,30643,31461,33012, +33891,37509,20828,26007,26460,26515,30168,31431,33651, +63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225, +29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,32645,34367, +34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,39409,63838, +20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,25829,25900, +27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,26391,28010, +29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,30053,20142, +20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,37327,20406, +20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,34851,38317, +39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,24976,25088, +25891,28451,29001,29833,32244,32879,34030,36646,36899,37706,20925,21015,21155, +27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,22265,63839, +23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,38728,38936, +40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,28510,28696, +29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,30860,31103, +32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,31840,32894, +20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,24278,26009, +29134,30274,30637,32842,34044,36988,39719,40845,22744,23105,23650,27155,28122, +28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,27060,27969, +28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,38520,20374, +20523,23833,28138,32184,36650,24459,24900,26647,63841, +38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400, +21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178, +31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136, +29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,31435, +31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448, +33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415, +28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819, +33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725, +36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023, +36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431, +33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754, +40629,28357,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559, +33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720, +25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468, +33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794, +22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447, +33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595, +28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664, +20497,21006,21563,21839,25991,27766,32010,32011,32862,34442,38272,38639,21247, +27797,29289,21619,23194,23614,23883,24396,24494,26410, +26806,26979,28220,28228,30473,31859,32654,34183,35598,36855,38753,40692,23735, +24758,24845,25003,25935,26107,26108,27665,27887,29599,29641,32225,38292,23494, +34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636, +31893,32283,33162,33334,34180,36843,38649,39361,20276,21322,21453,21467,25292, +25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,30971, +31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,30332, +36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151, +25918,26041,26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459, +33953,34444,35370,35607,37030,38450,40848,20493,20467,63843,22521,24472,25308, +25490,26479,28227,28953,30403,32972,32986,35060,35061,35097,36064,36649,37197, +38506,20271,20336,24091,26575,26658,30333,30334,39748,24161,27146,29033,29140, +30058,63844,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805, +27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287, +29863,30294,30887,34327,38370,38713,63845,21342,24321,35722,36776,36783,37002, +21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821, +28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222, +27493,27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693, +21264,21340,23443,24489,26381,31119,33145,33583,34068,35079,35206,36665,36667, +39333,39954,26412,20086,20472,22857,23553,23791,23792,25447,26834,28925,29090, +29739,32299,34028,34562,36898,37586,40179,19981,20184, +20463,20613,21078,21103,21542,21648,22496,22827,23142,23386,23413,23500,24220, +63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,33104,33105,33178, +33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,37340,38428,38468, +39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,24996,25198,26128, +27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,20315,24343,24447, +25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,21290,21329,22915, +23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,27606,27607,27608, +27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,33086, +33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,40763,22188,23338, +24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977, +27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490, +21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,24051,24107,24473, +24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509, +30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503, +35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,40605,21066,63849, +26388,63850,20632,21034,23665,25955,27733,29642,29987,30109,31639,33948,37240, +38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,28183,33439,34072, +34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360, +23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,29376, +30456,31077,31665,32724,35059,35316,35443,35937,36062, +38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853, +31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329, +26360,26646,26866,29312,29790,31598,32110,32214,32626,32997,33298,34223,35199, +35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728, +28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459, +25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341, +32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854, +21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807, +21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478, +22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,32854, +32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016, +21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836, +28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032, +32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660, +26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137, +29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862, +37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744, +24101,24833,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465, +29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172, +32353,32670,33065,33585,33936,34010,34282,34966,35504, +35728,36664,36930,36995,37228,37526,37561,38539,38567,38568,38614,38656,38920, +39318,39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881, +32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147, +29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255, +37662,38918,39348,25100,34899,36848,37477,23815,23847,23913,29791,33181,34664, +28629,25342,32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,32361, +34821,38494,20365,21273,22070,22987,23204,23608,23630,23629,24066,24337,24643, +26045,26159,26178,26558,26612,29468,30690,31034,32709,33940,33997,35222,35430, +35433,35553,35925,35962,22516,23508,24335,24687,25325,26893,27542,28252,29060, +31698,34645,35672,36606,39135,39166,20280,20353,20449,21627,23072,23480,24892, +26032,26216,29180,30003,31070,32051,33102,33251,33688,34218,34254,34563,35338, +36523,36763,63857,36805,22833,23460,23526,24713,23529,23563,24515,27777,63858, +28145,28683,29978,33455,35574,20160,21313,63859,38617,27663,20126,20420,20818, +21854,23077,23784,25105,29273,33469,33706,34558,34905,35357,38463,38597,39187, +40201,40285,22538,23731,23997,24132,24801,24853,25569,27138,28197,37122,37716, +38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839, +26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739, +25276,29390,40232,20208,22830,24591,26171,27523,31207,40230,21395,21696,22467, +23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266, +33099,38989,27387,32588,40367,40474,20063,20539,20918, +22812,24825,25590,26928,29242,32822,63860,37326,24369,63861,63862,32004,33509, +33903,33979,34277,36493,63863,20335,63864,63865,22756,23363,24665,25562,25880, +25965,26264,63866,26954,27171,27915,28673,29036,30162,30221,31155,31344,63867, +32650,63868,35140,63869,35731,37312,38525,63870,39178,22276,24481,26044,28417, +30208,31142,35486,39341,39770,40812,20740,25014,25233,27277,33222,20547,22576, +24422,28937,35328,35578,23420,34326,20474,20796,22196,22852,25513,28153,23978, +26989,20870,20104,20313,63871,63872,63873,22914,63874,63875,27487,27741,63876, +29877,30998,63877,33287,33349,33593,36671,36701,63878,39192,63879,63880,63881, +20134,63882,22495,24441,26131,63883,63884,30123,32377,35695,63885,36870,39515, +22181,22567,23032,23071,23476,63886,24310,63887,63888,25424,25403,63889,26941, +27783,27839,28046,28051,28149,28436,63890,28895,28982,29017,63891,29123,29141, +63892,30799,30831,63893,31605,32227,63894,32303,63895,34893,36575,63896,63897, +63898,37467,63899,40182,63900,63901,63902,24709,28037,63903,29105,63904,63905, +38321,21421,63906,63907,63908,26579,63909,28814,28976,29744,33398,33490,63910, +38331,39653,40573,26308,63911,29121,33865,63912,63913,22603,63914,63915,23992, +24433,63916,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719, +29008,29151,29552,63917,29787,63918,29908,30408,31310,32403,63919,63920,33521, +35424,36814,63921,37704,63922,38681,63923,63924,20034,20522,63925,21000,21473, +26355,27757,28618,29450,30591,31330,33454,34269,34306,63926,35028,35427,35709, +35947,63927,37555,63928,38675,38928,20116,20237,20425, +20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034, +25942,26111,26212,26791,27738,28595,28879,29100,29522,31613,34568,35492,39986, +40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800, +22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402, +33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740, +30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505, +27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931, +20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747, +25854,63934,26332,63935,27208,63936,29183,29796,63937,31368,31407,32327,32350, +32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020, +32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029, +28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854, +63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962, +26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398, +36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020, +31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,36939, +38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290, +22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503, +29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301, +20553,20702,21361,22285,22996,23041,23561,24944,26256, +28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949, +38859,39759,20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189, +24254,24736,24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977, +26978,27833,27943,63946,28216,63947,28641,29494,29495,63948,29788,30001,63949, +30290,63950,63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938, +36926,36986,37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955, +63956,20801,22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287, +63960,63961,63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903, +27575,35518,37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875, +37009,20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885, +27589,30097,30691,32681,33380,34191,34811,34915,35516,35696,37291,20108,20197, +20234,63965,63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970, +63971,29246,29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505, +33617,63975,63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727, +30410,32714,32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035, +23493,24341,24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765, +38775,63986,63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219, +22764,22922,23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,63991, +63992,63993,20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383, +23388,24675,24904,28363,28825,29038,29574,29943,30133, +30913,32043,32773,33258,33576,34071,34249,35566,36039,38604,20316,21242,22204, +26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544, +28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580, +22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404, +28479,29254,63994,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083, +34196,34255,35037,36115,37292,38263,38556,20877,21705,22312,23472,25165,26448, +26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631, +35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822, +28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487, +36889,37048,38606,40799,21219,21514,23265,23490,25688,25973,28404,29380,63995, +30340,31309,31515,31821,32318,32735,33659,35627,36042,36196,36321,36447,36842, +36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880, +23560,23637,24283,24731,25136,26643,27583,27656,28593,29006,29728,30000,30008, +30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666, +37931,38651,39002,39019,39198,20999,25130,25240,27993,30308,31434,31680,32118, +21344,23742,24215,28472,28857,31896,38673,39822,40670,25509,25722,34678,19969, +20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402, +25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191, +28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142, +33351,35330,35562,35998,37165,37194,37336,37478,37580, +37664,38662,38742,38748,38914,40718,21046,21137,21884,22564,24093,24351,24716, +25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555, +38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,26089, +26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,29866, +30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468, +35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,36275, +37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121, +29742,31278,32066,32156,32305,33131,36394,36405,37758,37912,20304,22352,24038, +24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,22863, +23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664, +30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,36913, +37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,26201, +27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537, +20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327, +28893,29969,30151,32338,33976,35657,36104,20043,21482,21675,22320,22336,24535, +25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,30693, +30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,36100, +36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185, +26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494, +30603,31206,32265,32285,33275,34095,34967,35386,36049, +36587,36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702, +29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519, +28503,32221,36655,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983, +23919,24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528, +31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922, +32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443, +22649,24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100, +24288,24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379, +33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756, +34081,37319,37365,20874,26613,31574,36012,20932,22971,24765,34389,20508,63999, +21076,23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587, +20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068, +36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180, +36639,36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522, +22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152, +32893,33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910, +36958,39636,21021,21119,21736,24980,25220,25307,26786,26898,26970,27189,28818, +28966,30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229, +37218,37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032, +21474,22618,23541,24740,24961,25696,32317,32880,34085, +37507,25774,20652,23828,26368,22684,25277,25512,26894,27000,27166,28267,30394, +31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619, +39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600, +36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935, +24756,33205,33795,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030, +33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516, +21988,23769,24159,24677,26772,27835,28100,29118,30164,30196,30305,31258,31305, +32199,32251,32622,33268,34473,36636,38601,39347,40786,21063,21189,39149,35242, +19971,26578,28422,20405,23522,26517,27784,28024,29723,30759,37341,37756,34756, +31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965, +33333,38464,39345,39389,20524,21331,21828,22396,64001,25176,64002,25826,26219, +26589,28609,28655,29730,29752,35351,37944,21585,22022,22374,24392,24986,27470, +28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,27067, +23445,24081,28271,64003,34153,20812,21488,22826,24608,24907,27526,27760,27888, +31518,32974,33492,36294,37040,39089,64004,25799,28580,25745,25860,20814,21520, +22303,35342,24927,26742,64005,30171,31570,32113,36890,22534,27084,33151,35114, +36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110, +24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315, +38935,21028,22338,26495,29256,29923,36009,36774,37393,38442,20843,21485,25420, +20329,21764,24726,25943,27803,28031,29260,29437,31255, +35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,31687,32232, +32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163, +24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754, +22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,32990,33071, +33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,26333,28689, +29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,35961, +39111,39108,39491,21697,31263,26963,35575,35914,39080,39342,24444,25259,30130, +30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,31558,33534, +39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662, +36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097, +27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,36676,20989, +21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,21704, +30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477, +26689,27782,28207,32568,32923,33322,64008,64009,38917,20133,20565,21683,22419, +22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405, +39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,29670,37141, +38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,36562,27463, +38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,27883,28843, +29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,36066,37449, +39023,23377,31348,34880,38913,23244,20448,21332,22846, +23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411, +24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872, +37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046, +20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009, +28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068, +31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912, +39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503, +21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301, +27194,28779,30069,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844, +25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213, +26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346, +20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361, +28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238, +24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362, +33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389, +25928,25989,26313,26783,28045,28102,29243,32948,37237,39501,20399,20505,21402, +21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628, +22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321, +21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875, +30054,34407,24676,35662,40440,20807,20982,21256,27958, +33016,40657,26133,27427,28824,30165,21507,23673,32007,35350,27424,27453,27462, +21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076, +24985,24984,25137,26206,26342,29081,29113,29114,29351,31143,31232,32690,35440, diff --git a/vendor/modernc.org/libc/musl/src/locale/langinfo.c b/vendor/modernc.org/libc/musl/src/locale/langinfo.c new file mode 100644 index 000000000..14773093b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/langinfo.c @@ -0,0 +1,73 @@ +#include +#include +#include "locale_impl.h" + +static const char c_time[] = + "Sun\0" "Mon\0" "Tue\0" "Wed\0" "Thu\0" "Fri\0" "Sat\0" + "Sunday\0" "Monday\0" "Tuesday\0" "Wednesday\0" + "Thursday\0" "Friday\0" "Saturday\0" + "Jan\0" "Feb\0" "Mar\0" "Apr\0" "May\0" "Jun\0" + "Jul\0" "Aug\0" "Sep\0" "Oct\0" "Nov\0" "Dec\0" + "January\0" "February\0" "March\0" "April\0" + "May\0" "June\0" "July\0" "August\0" + "September\0" "October\0" "November\0" "December\0" + "AM\0" "PM\0" + "%a %b %e %T %Y\0" + "%m/%d/%y\0" + "%H:%M:%S\0" + "%I:%M:%S %p\0" + "\0" + "\0" + "%m/%d/%y\0" + "0123456789\0" + "%a %b %e %T %Y\0" + "%H:%M:%S"; + +static const char c_messages[] = "^[yY]\0" "^[nN]\0" "yes\0" "no"; +static const char c_numeric[] = ".\0" ""; + +char *__nl_langinfo_l(nl_item item, locale_t loc) +{ + int cat = item >> 16; + int idx = item & 65535; + const char *str; + + if (item == CODESET) return loc->cat[LC_CTYPE] ? "UTF-8" : "ASCII"; + + /* _NL_LOCALE_NAME extension */ + if (idx == 65535 && cat < LC_ALL) + return loc->cat[cat] ? (char *)loc->cat[cat]->name : "C"; + + switch (cat) { + case LC_NUMERIC: + if (idx > 1) return ""; + str = c_numeric; + break; + case LC_TIME: + if (idx > 0x31) return ""; + str = c_time; + break; + case LC_MONETARY: + if (idx > 0) return ""; + str = ""; + break; + case LC_MESSAGES: + if (idx > 3) return ""; + str = c_messages; + break; + default: + return ""; + } + + for (; idx; idx--, str++) for (; *str; str++); + if (cat != LC_NUMERIC && *str) str = LCTRANS(str, cat, loc); + return (char *)str; +} + +char *__nl_langinfo(nl_item item) +{ + return __nl_langinfo_l(item, CURRENT_LOCALE); +} + +weak_alias(__nl_langinfo, nl_langinfo); +weak_alias(__nl_langinfo_l, nl_langinfo_l); diff --git a/vendor/modernc.org/libc/musl/src/locale/legacychars.h b/vendor/modernc.org/libc/musl/src/locale/legacychars.h new file mode 100644 index 000000000..9639b4af9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/legacychars.h @@ -0,0 +1,40 @@ +256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274, +275,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295, +296,297,298,299,302,303,304,305,308,309,310,311,312,313,314,315,316,317,318, +321,322,323,324,325,326,327,328,330,331,332,333,336,337,338,339,340,341,342, +343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361, +362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380, +381,382,402,416,417,431,432,536,537,538,539,710,711,728,729,731,732,733,768, +769,771,777,803,890,900,901,902,904,905,906,908,910,911,912,913,914,915,916, +917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936, +937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955, +956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974, +1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,1040, +1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055, +1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070, +1071, +1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086, +1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101, +1102,1103,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118, +1119,1168,1169,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1467,1468, +1469,1470,1471,1472,1473,1474,1475,1488,1489,1490,1491,1492,1493,1494,1495, +1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510, +1511,1512,1513,1514,1520,1521,1522,1523,1524,1548,1563,1567,1569,1570,1571, +1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586, +1587,1588,1589,1590,1591,1592,1593,1594,1600,1601,1602,1603,1604,1605,1606, +1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1657,1662,1670, +1672,1681,1688,1705,1711,1722,1726,1729,1746,3585,3586,3587,3588,3589,3590, +3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605, +3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620, +3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635, +3636,3637,3638,3639,3640,3641,3642,3647,3648,3649,3650,3651,3652,3653,3654, +3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669, +3670,3671,3672,3673,3674,3675,7682,7683,7690,7691,7710,7711,7744,7745,7766, +7767, +7776,7777,7786,7787,7808,7809,7810,7811,7812,7813,7922,7923,8204,8205,8206, +8207,8211,8212,8213,8215,8216,8217,8218,8220,8221,8222,8224,8225,8226,8230, +8240,8249,8250,8319,8359,8362,8363,8364,8367,8470,8482,8729,8730,8734,8745, +8776,8801,8804,8805,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508, +9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563, +9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578, +9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632, diff --git a/vendor/modernc.org/libc/musl/src/locale/locale_map.c b/vendor/modernc.org/libc/musl/src/locale/locale_map.c new file mode 100644 index 000000000..2321bac0e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/locale_map.c @@ -0,0 +1,113 @@ +#include +#include +#include +#include "locale_impl.h" +#include "libc.h" +#include "lock.h" + +const char *__lctrans_impl(const char *msg, const struct __locale_map *lm) +{ + const char *trans = 0; + if (lm) trans = __mo_lookup(lm->map, lm->map_size, msg); + return trans ? trans : msg; +} + +static const char envvars[][12] = { + "LC_CTYPE", + "LC_NUMERIC", + "LC_TIME", + "LC_COLLATE", + "LC_MONETARY", + "LC_MESSAGES", +}; + +const struct __locale_map *__get_locale(int cat, const char *val) +{ + static volatile int lock[1]; + static void *volatile loc_head; + const struct __locale_map *p; + struct __locale_map *new = 0; + const char *path = 0, *z; + char buf[256]; + size_t l, n; + + if (!*val) { + (val = getenv("LC_ALL")) && *val || + (val = getenv(envvars[cat])) && *val || + (val = getenv("LANG")) && *val || + (val = "C.UTF-8"); + } + + /* Limit name length and forbid leading dot or any slashes. */ + for (n=0; nnext) + if (!strcmp(val, p->name)) return p; + + LOCK(lock); + + for (p=loc_head; p; p=p->next) + if (!strcmp(val, p->name)) { + UNLOCK(lock); + return p; + } + + if (!libc.secure) path = getenv("MUSL_LOCPATH"); + /* FIXME: add a default path? */ + + if (path) for (; *path; path=z+!!*z) { + z = __strchrnul(path, ':'); + l = z - path - !!*z; + if (l >= sizeof buf - n - 2) continue; + memcpy(buf, path, l); + buf[l] = '/'; + memcpy(buf+l+1, val, n); + buf[l+1+n] = 0; + size_t map_size; + const void *map = __map_file(buf, &map_size); + if (map) { + new = malloc(sizeof *new); + if (!new) { + __munmap((void *)map, map_size); + break; + } + new->map = map; + new->map_size = map_size; + memcpy(new->name, val, n); + new->name[n] = 0; + new->next = loc_head; + loc_head = new; + break; + } + } + + /* If no locale definition was found, make a locale map + * object anyway to store the name, which is kept for the + * sake of being able to do message translations at the + * application level. */ + if (!new && (new = malloc(sizeof *new))) { + new->map = __c_dot_utf8.map; + new->map_size = __c_dot_utf8.map_size; + memcpy(new->name, val, n); + new->name[n] = 0; + new->next = loc_head; + loc_head = new; + } + + /* For LC_CTYPE, never return a null pointer unless the + * requested name was "C" or "POSIX". */ + if (!new && cat == LC_CTYPE) new = (void *)&__c_dot_utf8; + + UNLOCK(lock); + return new; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/localeconv.c b/vendor/modernc.org/libc/musl/src/locale/localeconv.c new file mode 100644 index 000000000..4cbb9dc52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/localeconv.c @@ -0,0 +1,34 @@ +#include +#include + +static const struct lconv posix_lconv = { + .decimal_point = ".", + .thousands_sep = "", + .grouping = "", + .int_curr_symbol = "", + .currency_symbol = "", + .mon_decimal_point = "", + .mon_thousands_sep = "", + .mon_grouping = "", + .positive_sign = "", + .negative_sign = "", + .int_frac_digits = CHAR_MAX, + .frac_digits = CHAR_MAX, + .p_cs_precedes = CHAR_MAX, + .p_sep_by_space = CHAR_MAX, + .n_cs_precedes = CHAR_MAX, + .n_sep_by_space = CHAR_MAX, + .p_sign_posn = CHAR_MAX, + .n_sign_posn = CHAR_MAX, + .int_p_cs_precedes = CHAR_MAX, + .int_p_sep_by_space = CHAR_MAX, + .int_n_cs_precedes = CHAR_MAX, + .int_n_sep_by_space = CHAR_MAX, + .int_p_sign_posn = CHAR_MAX, + .int_n_sign_posn = CHAR_MAX, +}; + +struct lconv *localeconv(void) +{ + return (void *)&posix_lconv; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/newlocale.c b/vendor/modernc.org/libc/musl/src/locale/newlocale.c new file mode 100644 index 000000000..d20a84898 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/newlocale.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include "locale_impl.h" + +static pthread_once_t default_locale_once; +static struct __locale_struct default_locale, default_ctype_locale; + +static void default_locale_init(void) +{ + for (int i=0; icat[i] : + __get_locale(i, (mask & (1< +#include +#include "pleval.h" + +/* +grammar: + +Start = Expr ';' +Expr = Or | Or '?' Expr ':' Expr +Or = And | Or '||' And +And = Eq | And '&&' Eq +Eq = Rel | Eq '==' Rel | Eq '!=' Rel +Rel = Add | Rel '<=' Add | Rel '>=' Add | Rel '<' Add | Rel '>' Add +Add = Mul | Add '+' Mul | Add '-' Mul +Mul = Prim | Mul '*' Prim | Mul '/' Prim | Mul '%' Prim +Prim = '(' Expr ')' | '!' Prim | decimal | 'n' + +internals: + +recursive descent expression evaluator with stack depth limit. +for binary operators an operator-precedence parser is used. +eval* functions store the result of the parsed subexpression +and return a pointer to the next non-space character. +*/ + +struct st { + unsigned long r; + unsigned long n; + int op; +}; + +static const char *skipspace(const char *s) +{ + while (isspace(*s)) s++; + return s; +} + +static const char *evalexpr(struct st *st, const char *s, int d); + +static const char *evalprim(struct st *st, const char *s, int d) +{ + char *e; + if (--d < 0) return ""; + s = skipspace(s); + if (isdigit(*s)) { + st->r = strtoul(s, &e, 10); + if (e == s || st->r == -1) return ""; + return skipspace(e); + } + if (*s == 'n') { + st->r = st->n; + return skipspace(s+1); + } + if (*s == '(') { + s = evalexpr(st, s+1, d); + if (*s != ')') return ""; + return skipspace(s+1); + } + if (*s == '!') { + s = evalprim(st, s+1, d); + st->r = !st->r; + return s; + } + return ""; +} + +static int binop(struct st *st, int op, unsigned long left) +{ + unsigned long a = left, b = st->r; + switch (op) { + case 0: st->r = a||b; return 0; + case 1: st->r = a&&b; return 0; + case 2: st->r = a==b; return 0; + case 3: st->r = a!=b; return 0; + case 4: st->r = a>=b; return 0; + case 5: st->r = a<=b; return 0; + case 6: st->r = a>b; return 0; + case 7: st->r = ar = a+b; return 0; + case 9: st->r = a-b; return 0; + case 10: st->r = a*b; return 0; + case 11: if (b) {st->r = a%b; return 0;} return 1; + case 12: if (b) {st->r = a/b; return 0;} return 1; + } + return 1; +} + +static const char *parseop(struct st *st, const char *s) +{ + static const char opch[11] = "|&=!><+-*%/"; + static const char opch2[6] = "|&===="; + int i; + for (i=0; i<11; i++) + if (*s == opch[i]) { + /* note: >,< are accepted with or without = */ + if (i<6 && s[1] == opch2[i]) { + st->op = i; + return s+2; + } + if (i>=4) { + st->op = i+2; + return s+1; + } + break; + } + st->op = 13; + return s; +} + +static const char *evalbinop(struct st *st, const char *s, int minprec, int d) +{ + static const char prec[14] = {1,2,3,3,4,4,4,4,5,5,6,6,6,0}; + unsigned long left; + int op; + d--; + s = evalprim(st, s, d); + s = parseop(st, s); + for (;;) { + /* + st->r (left hand side value) and st->op are now set, + get the right hand side or back out if op has low prec, + if op was missing then prec[op]==0 + */ + op = st->op; + if (prec[op] <= minprec) + return s; + left = st->r; + s = evalbinop(st, s, prec[op], d); + if (binop(st, op, left)) + return ""; + } +} + +static const char *evalexpr(struct st *st, const char *s, int d) +{ + unsigned long a, b; + if (--d < 0) + return ""; + s = evalbinop(st, s, 0, d); + if (*s != '?') + return s; + a = st->r; + s = evalexpr(st, s+1, d); + if (*s != ':') + return ""; + b = st->r; + s = evalexpr(st, s+1, d); + st->r = a ? b : st->r; + return s; +} + +unsigned long __pleval(const char *s, unsigned long n) +{ + struct st st; + st.n = n; + s = evalexpr(&st, s, 100); + return *s == ';' ? st.r : -1; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/pleval.h b/vendor/modernc.org/libc/musl/src/locale/pleval.h new file mode 100644 index 000000000..cc515f42f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/pleval.h @@ -0,0 +1,8 @@ +#ifndef PLEVAL_H +#define PLEVAL_H + +#include + +hidden unsigned long __pleval(const char *, unsigned long); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/locale/revjis.h b/vendor/modernc.org/libc/musl/src/locale/revjis.h new file mode 100644 index 000000000..3ab369f6e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/revjis.h @@ -0,0 +1,515 @@ +31,80,81,87,14,299,74,61,12,344,62,63,1280,1281,1282,1283,1284,1285,1286,1287, +1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302, +1303,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325, +1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1542,1536,1537,1538,1539, +1540,1541,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555, +1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1584,1585, +1586,1587,1588,1589,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601, +1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616, +1590,29,28,33,37,38,39,40,342,343,36,35,338,75,76,263,77,337,266,267,265,268, +300,301,302,318,303,319,281,282,60,324,326,70,315,297,298,288,287,328,329,71, +327,325,321,65,320,68,69,322,323,285,286,283,284,316,317,1792,1803,1793,1804, +1794,1805,1795,1806,1797,1808,1796,1807,1798,1819,1814,1809,1800,1821,1816, +1811,1799,1815,1820,1810,1801,1817,1822,1812,1802,1818,1823,1813,258,257,260, +259,262,261,256,93,90,92,91,349,89,88,73,72,341,340,339,0,1,2,22,24,25,26,49, +50,51,52,53,54,55,56,57,58,264,269,43,44,32, +768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786, +787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805, +806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824, +825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843, +844,845,846,847,848,849,850,10,11,20,21,1024,1025,1026,1027,1028,1029,1030, +1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045, +1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060, +1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075, +1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090, +1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105, +1106,1107,1108,1109,5,27,18,19,3915,8793,6934,10843,7493,6671,7492,4379,10291, +11294,12033,4110,4685,12034,7939,12577,5173,10521,7494,11549,10529,12035,8773, +12036,5465,12037,4924,8719,6982,12038,12039,12040,9748,5174,9750,9538,5922, +10770,18472,12041,7495,12042,4372,5444,5967,11080,13573,11343,9564,4868,5140, +12043,12044,11546,11292,8263,12046,6741,9554,12049,4125,5950,5949,3909,11818, +11817,6418,3840,12050,12051,12052,10771,12053,5969,3910,10833,5211,5212,5213, +9025,11547,12054,12055,12056,7724,7193,7725,12061,12059,12060,5175,6402,4431, +12058,12057,10504,6693,6692,8477,12062,10292,8006,23,12063,12065,8516,11584, +3881,12064,4381,5411,8774,5710,12066,9731,4938,12067,3882,5951,4939,10329, +10001,5176,4432,12102,9248,9803,12069,10011,11585,7692,6694,6742,4383,9008, +8705,12073,3883,9026,7194,6419,11267,8493,4382,12072,11293,12068,12070,6477, +12071,13315,12079,12082,12080,4385,10522,12074,12078,5970,6695,4869,12083, +12075,11586,6743,12076,12081,12084,12077,5376,3884,5377,4384,13316,10840, +10317,5971,7694,11542,10551,5655,8452,4419,7218,12088,12093,12091,12086,8462, +12089,12092,12090,10556,12087,7693,10834,12094,12095,7171,12108,9775,10261, +12103,10575,4373,12107,12101,12110,8241,5923,9787,16166,12109,9276,12098,5973, +5972,12096,6969,12104,10574,8748,12100,5712,12097,12105,12099,11568,12106, +11808,5445,5711,12111,12112,12116,3885,10543,12115,12114,12118,12117,9027, +5713,12119,6948,8453,9028,5461,12120,5141,12121,12123,10772,5701,6672,10070, +12122,6436,11298,12125,12290,12124,6435,7260,5656,12291,5422,12288,12289,9486, +8283,5378,10796,12292,11548,12293,12296,12294,8237,12295,12297,12299,12298, +10535,5142,12301,12302,4366,12300,6995,12305,12304,12303,12085,12306,7261, +12307,11268,11064,12309,12308,12311,12310,12312,12313,3923,5908,5658,7195, +8794,5379,8007,5974,6221,12315,11047,9253,6744,12314,12316,9277,4692,12317, +9565,8211,12319,12320,9995,5975,11802,12321,5381,10523,8469,5456, +9236,5714,12322,12323,9537,4158,12326,6492,12325,6437,12327,17741,12328,10784, +12329,12330,12331,7496,6955,4870,12334,12332,11036,12333,10297,12335,12336, +12337,9278,12341,12339,12340,12338,6466,12342,11081,11587,12343,7943,12344, +7225,12345,8795,11550,9279,12580,12346,21252,5412,12347,10813,7239,8539,12349, +9539,12350,12351,4621,12352,5382,9515,4185,7215,9984,12353,9280,7726,12354, +10507,7993,4865,4872,12355,12357,5657,12356,11602,7240,10012,10539,12358, +11351,12359,12360,9309,12361,7944,6493,5715,12362,6696,6222,9029,12364,8454, +6478,12365,12366,8207,12363,12368,10773,6211,12367,5716,6461,9804,12371,12369, +10330,7497,12378,4675,12372,12370,8238,12374,12373,4643,5695,12379,11532, +12375,12380,12377,12376,11566,5976,4386,11603,7252,9271,6212,12545,12546, +11588,11786,12548,5977,12547,4622,12549,10805,8987,11269,10552,12550,20276, +9487,12551,4873,11026,7424,12552,10566,12556,7945,12553,5423,12554,4874,5645, +12557,12558,12559,12560,6970,5978,11069,11079,9558,10576,12561,12562,12564, +12566,12565,12567,4380,10795,6491,12568,8248,7425,5384,12569,10042,12570, +12571,12572,12573,10243,5447,3908,9502,12574,7196,8008,12576,12575,7426,5952, +12578,10013,12579,10043,8467,8525,5383,9549,8720,9805,10797,12581,8009,5652, +12582,12583,4107,3924,4940,8455,5168,11344,12586,4374,12585,5385,12587,11088, +12588,11569,5979,5909,12589,12591,12590,7742,4120,4157,12592,12593,5910,12594, +5197,6673,12595,10835,6420,5177,11270,8239,10014,7004,7206,6983, +6996,7253,10015,12598,4130,8240,5980,5924,5446,12602,8704,8541,5386,7427, +12603,12601,4387,8517,6935,6698,4101,4687,6213,6697,12604,12605,5160,4645, +6214,5159,9022,4100,9488,11037,6144,11352,9254,5981,5646,12614,5442,10793, +10044,12613,4925,12608,12609,12611,12612,5178,7744,10508,12610,12606,5954, +12607,11779,10577,9031,5953,6223,12615,9532,12619,7005,6997,12622,12620,11010, +12617,12626,12621,12624,5925,11038,12625,12627,12629,6479,11809,12618,12616, +12628,12623,12631,12802,12633,12637,12800,12634,12829,6472,4624,12632,12804, +3925,12803,3844,10281,12801,12635,12630,12636,6439,12805,3926,12814,12806, +12807,7428,10824,12812,12811,9230,12813,12810,4115,6421,7695,12808,9281,12809, +3841,12819,11266,7430,12825,12824,12815,8482,12816,8526,12821,7429,12818, +11075,5659,12822,12823,12820,12826,12817,12832,12837,12833,12828,12838,8208, +12840,6145,12830,8796,12834,12827,4876,4941,4676,12835,12831,5717,12841,12839, +8242,5161,5387,12836,5459,4131,12845,12843,13062,12848,12842,12846,12844,6699, +12847,12850,12855,12853,12852,8721,4388,12849,12851,7431,4114,12854,4413, +12865,7515,12861,12859,12860,12862,4124,8216,12856,12857,4697,12864,4942, +12867,12863,12866,10509,9524,10007,12869,12868,4644,12870,12873,12872,12871, +9752,12874,12875,12877,12876,12879,12882,12880,12878,12881,12883,12884,12885, +12886,12887,12324,7003,6700,4434,3927,8739,12888,6403,3886,7741,12889,5926, +6224,12891,12890,10559,12892,13056,12893,13057,13058,5718,4159,13059,13061, +13060, +13063,9273,13064,3860,6462,5660,8750,13065,13066,13068,13069,6467,5424,10774, +13067,13070,6432,6146,13074,6404,8722,13071,9017,13075,7745,13073,13076,5662, +13077,13078,6147,4639,13080,13081,13082,13079,13072,13083,13084,10819,7498, +13086,13087,13085,13089,9751,3911,10293,13090,7516,6936,9788,4943,6474,10808, +9489,5719,8494,13088,13091,8483,13092,13093,13095,9032,4877,21248,4160,10578, +7499,9255,6469,13101,10524,11580,4435,13097,8217,13100,9282,9256,9283,10008, +9004,6440,13096,4181,9237,13098,13094,7727,13102,7213,5388,13103,10567,8284, +8997,13105,10798,13106,13111,10510,13110,13104,13107,13109,6405,10536,13112, +8740,4436,7500,13114,13113,6215,13115,13117,13116,13119,13108,13121,13120, +13118,6701,7728,8243,13122,7963,3916,9795,9018,13124,13123,13125,13126,13127, +13128,10544,13129,4389,13130,11291,4623,12584,7207,8478,13131,11082,11027, +13133,8518,9238,8479,10294,13134,13135,4186,6937,13136,3887,13137,13138,4161, +4944,9535,10579,13142,8244,13141,5663,10810,13140,9284,13144,13143,13146, +13145,4187,13147,7432,13149,8708,13148,10514,7254,9274,13312,6148,13313,9728, +10045,11056,9732,13322,5143,11300,11022,13579,13314,13317,8484,10775,9257, +13318,10820,6441,7433,13319,6703,6702,3864,5927,7946,3888,13323,13324,13321, +4119,4878,13320,11044,10256,3847,3928,6704,3889,3842,13329,13327,11035,13330, +13328,13326,7696,13325,10553,5955,13334,13335,7434,13331,11787,9771,13333, +6406,13336,10295,13337,13332,11034,9789,13338,10257,13339,13343, +13340,4390,13342,6938,13341,5720,13355,13348,13345,8771,13344,13346,13347, +13349,13350,4945,13352,13351,13353,7501,13356,9019,4132,13354,13357,13358, +13361,13359,13360,6705,13362,6149,13363,6745,8471,13364,13365,6713,6150,11057, +5127,5928,13366,4663,13367,8472,13368,13570,13369,13370,13371,13373,13374, +13375,8527,4102,6984,3873,8246,4879,6932,6151,9285,7168,4880,8775,9033,3863, +5144,10580,6945,5169,8010,6939,11271,13376,5179,6442,4625,4162,7435,4391, +13377,11301,7208,6979,13378,4946,9521,11016,13379,13380,10296,13382,4871,5462, +13381,4881,7697,13386,6656,4392,13385,13383,13387,13384,9738,15148,7698,13388, +11551,13389,13391,8797,13390,7938,6746,8495,6998,10324,8011,6956,13392,7436, +13393,13394,3890,8473,7729,13395,9490,7437,7438,13396,8012,7439,13397,13398, +11071,13399,5413,7169,13400,13401,6971,7691,9555,7731,10071,9729,5416,13402, +5198,13403,5469,9518,4367,6706,13404,13569,13568,5468,13405,9239,8463,9258, +6951,8247,11353,13571,13572,9525,6674,13574,13575,13576,4947,13577,13578,4363, +8218,4931,13580,11015,8497,4664,13582,13584,4926,13581,13583,13586,13585, +13587,13588,9500,5389,4420,13589,13594,13592,10582,10581,9286,13591,7219, +13590,7761,13595,6473,13601,13602,13596,4626,13597,13606,13605,13604,13600, +13599,13603,10583,13610,13607,13609,11345,13608,13598,7762,13611,6422,13612, +13613,13616,13615,13614,9287,13593,13622,13618,13617,13619,13620,13623,11589, +13624,13621,13625,4927,13626,13628,13627,13629,13630,8013,7170, +7235,8258,6152,6423,6153,5199,13631,6424,5929,13632,11013,9762,13633,6154, +4875,8710,5425,6707,10298,10016,13634,4948,13637,8960,13636,13635,13638,9034, +7746,6708,7977,8498,5121,8961,13639,13640,7502,10776,13643,13642,13641,10332, +13650,10809,13644,13646,10826,13645,13647,9991,13648,10525,13649,4882,10526, +9742,13651,13652,6155,4883,13653,5911,11299,11272,4949,13655,8962,6156,7440, +10046,7441,7255,9035,10584,9240,6157,10299,13656,9272,6433,5930,9036,3874, +7245,6158,11302,13657,13658,9776,13659,11606,11788,13661,13660,4646,13824, +13827,13828,13826,10271,7442,13830,13829,13825,13831,13832,13833,13836,13834, +13835,13837,4163,9037,13838,5721,4437,9749,13839,9562,10554,13840,11789,13841, +10527,13844,12032,12048,6927,9556,13845,5180,8963,3929,13846,10501,6159,8751, +9038,11086,5912,5931,13847,13848,13854,6980,8964,5390,13849,10250,8741,13850, +13851,5391,13852,13853,13855,9301,13856,13857,13858,13843,13842,13859,5664, +10246,6443,10262,8965,10282,13860,7443,4133,13861,13862,11089,10047,13865, +4188,7947,13864,13863,5665,8499,13869,13867,13866,11526,5956,7256,13868,9259, +7197,9503,13872,13871,13870,13873,5957,13874,10331,7226,13875,10072,9504,8966, +9231,13876,5130,7699,10251,4950,9733,13877,6709,10777,10778,4189,13882,8776, +13879,4438,14092,13881,9743,13880,13878,6233,13884,13890,13896,13888,9275, +13893,10300,13887,13892,11590,6710,8500,13885,5181,13895,7948,4164,13889,4439, +13894,5392,13891,13897,13899,13909,13907,13904,13903,11607, +13905,5393,6160,7257,13912,13898,13902,13886,4441,13906,13908,8752,6407,4375, +13900,13911,13910,5394,8456,4677,5666,13901,13913,13916,14080,6940,14086,9039, +13914,14084,4440,14082,14083,13917,14081,5958,11273,4884,4152,14085,9753,3852, +10048,13883,14091,14095,11076,14088,9288,14093,7503,14094,9526,11814,14090, +14096,6234,7978,3891,14089,14087,8249,13915,6675,8485,14108,8250,14103,14100, +14101,6981,14104,14107,14102,7172,14105,14099,11099,11098,14109,14110,3892, +14098,5457,3845,4885,14106,14114,14113,14118,14119,14117,14120,14112,14116, +14121,14122,14111,6747,14115,8501,6161,14097,7700,14135,10568,14125,14126, +14127,14134,14133,10844,4886,14131,5668,4627,14128,11543,14130,3893,14132, +14123,14129,14136,5667,14124,11324,11274,14139,14143,8285,11608,14144,14141, +14138,14137,14142,10511,9491,5669,14145,14140,14146,5722,4368,14154,4887, +14152,14153,6408,14151,14149,14148,14155,14147,14157,4442,14159,14158,8967, +14162,14160,14150,5723,14161,14165,14164,14166,14163,14167,14168,14169,10569, +14171,14170,7198,7949,4421,4443,14172,3870,7979,14173,19234,14336,5696,14337, +8014,14338,14339,5145,14340,14341,14342,8502,5932,11072,10779,7241,14343,8015, +19740,10049,6985,6444,14344,8486,10502,8528,14347,14345,14348,14346,14349, +10512,3862,10301,10050,14350,14353,7444,5146,14351,14358,7445,14352,9763, +11325,14354,14355,14359,9289,14356,6162,7997,14373,10003,8529,10051,14604, +10585,9040,10836,14362,4352,8777,14371,8723,14365,14372,14367,14374,14370, +14369,9806,14363, +4444,14361,5200,8530,14357,14360,6163,7994,7446,14368,9777,5201,4647,4678, +7680,14376,14381,14377,5724,14382,6657,6216,7173,14364,6748,14379,6711,14380, +3875,14375,8968,5202,5395,14378,3846,6434,7701,9041,10035,14384,8253,8457, +6666,14385,14387,14383,10560,8988,8251,10586,6957,14399,14398,7767,5725,14392, +7448,9543,9744,14390,8252,6999,14395,7447,14389,14394,9778,14388,5632,4668, +14396,11530,6445,8724,14393,7995,6164,7747,4165,8219,14391,5156,5670,9006, +14397,8254,14400,14402,8470,14408,14403,14405,10272,9042,14406,11275,11303, +4888,3853,14404,14401,4951,4166,14407,11304,14411,8474,14418,14412,14409, +14416,14386,14413,14417,10017,9290,14410,14414,5671,6480,7996,14422,9221, +14419,10815,14420,14421,11053,7937,5697,14428,6676,14425,14424,9745,9492,9232, +14426,14427,10318,9764,6658,8016,10799,4648,14596,14429,11305,14598,14594, +14595,8255,14593,14366,14597,14592,14602,14603,9222,14605,6659,14600,5147, +14606,14599,14610,14609,14608,14611,14613,7504,14612,14616,14614,14615,14415, +14618,14617,14423,14619,14607,6712,14620,14621,14623,14622,14624,4445,6165, +10587,7950,5933,14626,14629,10289,5182,14628,14627,9779,14630,5396,14632, +14631,4889,6677,9527,5672,7763,14633,7951,9223,10302,14634,14635,14636,10519, +13372,7973,10283,6455,10052,10018,9260,11552,14638,6959,14639,3861,5427,7980, +10303,14640,6689,8742,6714,7702,14641,10588,4182,6715,14644,14642,14645,11544, +14643,8026,14646,8465,14647,4953,14649,14648,14650,14651,4954,9563, +8725,5195,6716,8256,7227,3855,14652,4353,14656,6166,14655,6410,7449,14654, +7450,11039,6409,3894,7981,14661,7952,4134,7220,10821,6481,7451,7942,14660, +14658,14659,8778,14853,14665,6749,6167,14663,14664,7703,14662,6670,14667, +14666,14671,14672,14668,4609,14669,14670,10036,10304,5673,14673,7953,7452, +8753,5414,14674,14678,4394,14675,14677,14676,7242,8743,3876,14679,14680,8969, +11600,6690,10570,10780,14849,14682,14685,14684,14681,14848,9533,14683,14850, +7243,14851,11306,9815,14852,14854,14855,14856,5417,4135,6168,14857,14858,7248, +8257,12599,8221,8220,8503,6438,12113,5709,11276,10589,10333,14859,6482,8990, +14860,11790,10781,8970,14861,4955,14862,14863,11065,11011,10837,10811,6660, +14865,6986,10800,14867,14870,14869,4952,5183,14866,14868,14871,7768,11354, +3880,6463,8475,6972,7506,14874,9261,14872,8458,14873,7505,11068,14875,14876, +11335,14881,6169,9780,14878,9291,14653,14657,5166,9766,14880,7453,10019,14886, +10073,14877,14883,14882,7982,10828,11570,10822,4395,6717,11815,14885,7764, +14884,14879,5934,14891,14889,4396,14887,14893,14899,8487,10528,14901,10241, +14900,9807,10782,4890,8022,7199,9010,11277,14896,14895,14897,14894,14902, +14892,14890,14898,14888,8779,11095,6949,6483,6425,10830,4640,9005,9513,4136, +8017,7955,5641,14904,6170,4699,14906,4691,14912,14909,8018,4650,6411,4649, +6446,14907,5700,5674,9292,14905,3877,14908,14910,5420,5643,4891,5162,14913, +6488,10832,6678,14914,10255,14926,4370,14915,14932,14916,11553,14923, +9790,14931,14918,3859,14920,6171,14922,14921,14917,14928,7454,13132,5959, +11355,14919,9043,4610,6412,14911,14927,4672,14925,14929,9293,4957,15121,11048, +14934,4956,14941,10783,15104,15106,15110,14936,8713,9294,15114,14939,15111, +15105,7704,15115,7954,15113,4892,11823,14933,15109,3895,14935,11033,14940, +7681,8998,14930,15108,7769,15118,4688,5888,15120,14937,15119,15112,14938, +15116,15117,15134,9517,15107,15130,15132,9015,11307,10325,15127,8489,15133, +8222,15124,15137,15136,9550,15135,9545,15139,15126,5415,15129,7228,9791,15131, +5418,15123,15125,15122,11791,4665,15128,15138,4628,6470,4156,15155,11792, +15158,7705,15157,15156,15153,15141,15170,15140,15159,15151,15146,15143,15144, +15152,21249,15149,6172,8999,8259,15147,15142,15145,11308,10825,15150,15160, +15168,15161,15174,15172,15167,15166,9007,8260,15164,15162,15169,15175,10068, +15181,15176,15179,15173,8787,10263,15163,15171,7455,11054,15191,15178,5889, +4354,4670,15154,7456,15183,15190,7000,4689,8717,15180,15185,15189,5397,5163, +15187,5120,9514,15186,15188,15182,15184,4671,8744,15195,15193,5960,15192, +15360,14903,15194,15196,15197,15371,15367,14924,15366,15365,15362,15177,15364, +15363,15369,11781,15372,5466,15368,15370,9990,15373,15377,15374,11346,15375, +15165,15378,15379,4116,15381,5702,6912,5428,4355,11326,15383,15382,15385,5148, +5429,4893,15388,15387,15389,4397,8726,15390,4894,15392,15391,15393,15394, +15395,6718,7956,6400,10319,10561,11811,6740,6447,11601,15396,15397,6719,15398, +15399,15401,15400,10807, +7229,6987,6691,15402,15404,7682,15403,15405,15406,15407,15408,15409,15411, +15410,15412,4356,8745,15413,6661,4651,15414,9249,13099,5122,15415,15416,10571, +10823,9510,15417,10053,10074,11058,15418,15420,15419,15422,15421,15424,6720, +11024,15425,15426,5123,15427,15429,15428,7748,10264,4137,10020,9044,7200,5184, +10021,6925,15431,4895,4183,9553,15430,6173,8754,15432,15440,15433,8480,5185, +15441,5703,5124,15439,15437,15434,11327,8991,9528,15435,15443,15442,5634,4364, +6426,15436,15438,10806,8531,10838,15451,15452,4398,10503,11100,15616,6914, +7457,15447,15453,4167,5398,15444,15449,8019,9808,10054,15446,10752,15448, +15619,15617,15450,10753,9767,5186,9220,8780,15620,15618,8504,15445,4138,11309, +15631,15630,8021,15627,11339,9493,15621,8996,4139,6174,15624,7174,15629,15628, +15623,15626,4679,15625,9768,11533,7507,8020,15637,15635,10284,15632,15634, +4121,6175,11793,4636,10305,11328,4611,7706,15636,15641,7458,11279,15638,15633, +15639,11581,9298,9505,4629,4148,15645,15648,11554,11331,15655,15649,15646, +11571,15652,7209,15654,15659,9296,15657,15651,8727,15658,15647,15653,15660, +3931,15650,15661,7707,7230,10500,6413,15642,15656,9241,7957,4680,6448,7459, +15644,7201,5675,15643,15665,7244,5913,15680,15674,5203,9262,15669,15678,3854, +4113,4376,15671,8459,15662,15664,6176,15681,15676,15668,15675,11018,15673, +15677,5935,7460,8728,15667,11278,15670,15663,9297,15666,15672,11824,6941, +10845,15682,9997,15694,5914,7231,15684,11534,6177,15697,3917,15695,15683, +15689,15691,11310,15686,9229,15688,15696,15690,11046,15685,6913,15709,4681, +15687,15692,15693,8523,8505,15701,15707,15705,9224,15874,15702,15703,15679, +5208,10265,6942,6230,11794,15699,15873,4168,8261,9816,4896,11609,11008,9009, +15706,15708,8209,15872,15704,15698,4898,5704,15886,15881,8023,4674,7232,15890, +15883,8971,15880,9016,15915,15877,15876,15885,15879,15878,15884,7936,15875, +15887,15888,4897,15893,15892,15894,15897,9250,15891,15895,5698,8536,15889, +9754,15896,15901,15899,15902,15905,15898,6217,9735,15640,11347,15900,15904, +8532,15903,15882,20040,15908,15912,15910,15906,15907,15911,15909,10285,15917, +15914,15913,15916,9523,15918,8788,8524,7940,15919,15921,15920,15700,15922, +9542,15923,4399,9299,4612,5187,6973,6449,11782,7749,4169,15925,15924,15928, +8729,15931,15926,15930,15929,9247,3896,11604,15933,4103,15935,15934,15932, +15927,10754,15937,15936,4170,15939,10513,15938,11028,7462,8210,7461,11610, +15945,8024,15941,15946,4171,15944,9792,15940,15943,7463,10032,15947,6960,8025, +15950,15942,5638,15948,11311,15951,21253,7214,15952,15953,9741,15955,15956, +9746,9300,15958,15960,11572,15957,15959,4172,15954,12858,15961,8262,6679, +15963,15962,7683,12600,15964,16128,15949,15965,16129,9817,16130,16131,16132, +16133,9021,16135,16134,16136,16137,6974,10306,11083,16138,16139,8245,6915, +16140,16141,16142,10545,10022,16143,9782,8972,16144,4422,5196,11045,11029, +4371,11795,10801,10505,7958,16145,9506,5890,16146,6451,16148,16147,16149, +16150,16151,5149,16152,16153, +5891,10023,16155,7508,16154,5399,16156,16158,16157,16159,5936,16160,5448,8223, +6236,16162,16163,16161,6988,9511,5400,16165,8715,16164,11796,9793,16168,16170, +16167,11059,16169,16171,11555,16175,16174,8789,9740,5892,16173,16172,11280, +11281,16176,4173,6229,6721,16177,16178,16180,7202,16182,16181,16183,4652, +16185,16184,16187,16186,5915,11527,5419,4357,5449,4928,11591,16189,16191, +16192,4400,16188,6680,8992,16190,16195,6989,16193,5661,10024,16194,16221, +16200,5916,5188,16197,11356,11535,8533,16199,16201,11573,5430,10075,9769, +16202,16204,16207,16203,16206,5961,4140,16208,7759,16205,11579,16211,21251, +16209,16212,16198,16210,6427,16213,16214,11357,16215,16216,16196,16217,4899, +6916,16218,16219,16220,4122,16384,10266,16385,4867,16386,16387,16388,16390, +16391,16389,10290,16393,16392,16395,16394,16396,16397,16399,16398,6232,16401, +16400,4900,7730,9243,16402,7959,6681,4184,16403,11312,10562,16404,9251,11282, +6178,7708,8746,12563,8973,4423,16405,16406,16411,16409,16408,14625,4613,16407, +3897,9993,10025,11536,16412,16410,8763,7941,9994,10252,16414,11531,5676,16415, +16413,10037,16416,16417,3898,7509,16422,16419,9548,16418,5125,16425,16420, +16421,16424,16423,10244,8225,8224,5150,16426,16427,16428,16430,16429,4149, +16438,10055,16432,16434,16436,7709,16437,16435,6943,16431,16433,10273,7464, +16440,16439,16441,6917,6414,9302,16442,9002,16444,11520,16443,8264,16449, +16451,16452,8755,16450,16447,16445,16446,16448,16455,16453,16454,16456,16458, +16459,16460,16461,16457, +16463,16462,16464,11556,16467,16465,16466,4929,11101,10537,16469,16468,16470, +16471,16475,16472,16473,16474,16476,16477,16640,16641,16642,9998,9263,16643, +9809,10259,16644,16645,9225,4614,6179,16646,16647,16648,6664,16650,16649, +16651,16652,10056,16653,16654,21064,16655,16656,16657,6669,16658,9781,10814, +4141,4150,16659,16661,16660,9295,7960,15384,16662,11040,16663,4901,10038, +16664,16665,16666,11067,11060,8989,8265,16668,7233,7465,16671,16670,16669, +10076,4902,5896,16677,16674,7710,11025,16673,16675,16676,16672,16678,16679, +8974,4930,8772,16680,16681,16684,7750,9507,16685,10802,16682,16683,16688, +16687,16686,16690,16689,16691,16693,16692,10540,7221,11557,16694,9494,16695, +16696,16700,16698,16699,16697,16701,16702,16703,16704,11030,16705,11087,16706, +8749,9801,5450,8730,16707,5401,7983,16708,6428,16709,16710,5893,6452,16712, +9269,6453,5165,10755,9770,9270,6203,16714,7466,11537,6180,5894,9986,16716, +16718,5962,16717,9045,16720,4630,16715,10057,4111,6475,11825,16719,16721, +10538,7992,16723,16724,16722,4653,16730,16729,6918,16731,16726,16732,16727, +10039,16725,16728,16897,16896,10816,16733,3914,16899,16898,7467,16900,8226, +16902,16901,16903,16711,16713,16905,16904,6919,11592,6961,16906,5654,5151, +5126,6722,11283,16912,16911,8227,16908,16910,7210,7711,16909,16907,9737,7468, +10267,6454,9303,16913,16914,16936,5431,11804,8212,16915,4401,9046,10496,16916, +5209,16917,16919,16920,9736,16921,16922,16923,5432,4402,9508,7175,6723,16924, +7176,4393,10274,16925, +10058,8228,16928,16929,9800,7712,16926,8768,16927,7469,3899,5128,16930,9047, +16931,7974,11020,10242,16932,16933,8756,11558,16935,16934,6990,16937,3919, +16940,16938,4403,5677,16939,6181,6225,10565,16941,10803,16943,7984,4142,4377, +3851,16942,16944,16945,7510,16946,4654,16948,5705,5189,16949,5460,16950,8027, +9516,7999,6484,16951,8769,8266,16953,16955,16952,16954,5633,16956,5637,5190, +11313,16958,16959,4109,16962,4693,16961,16960,16964,16957,16965,11528,16966, +16967,13139,16969,16968,16970,16971,11540,16972,20302,7470,16973,16974,7222, +9495,16975,8711,16976,8731,16977,5380,12318,8764,6930,4903,16978,17153,16981, +5191,16980,17155,16979,7471,16983,16984,9226,16985,4669,7737,10307,16987,8519, +16982,16986,16988,6490,17157,10253,9989,9304,5433,17156,17154,10004,16989, +8765,9306,9305,6485,17175,17159,17161,17164,17165,17162,17163,17160,17158, +17152,10542,4404,17172,17169,17174,17173,9810,11014,6682,17167,17176,17171, +17170,17166,17168,4904,8732,8028,9985,17181,9987,8000,17178,10030,17182,10546, +8762,17177,17179,17180,17183,6947,9509,17188,17187,17184,11797,17193,17197, +17194,17190,17191,17196,17185,12596,17192,17186,17195,17201,4905,17198,17199, +17200,17203,17202,10069,17204,11611,10572,17209,17206,17205,7985,17208,17210, +17207,17214,17211,17212,17189,17213,17215,17216,10533,17217,11073,5421,5640, +17218,10515,7751,11023,17219,11538,9811,8229,9747,7212,3871,17224,17222,17220, +4864,7472,17225,17223,17221,17229,17228,17227,17226,17230,17231,7961,17232, +17234, +17233,5937,8215,17236,9307,17235,17237,10516,8267,6182,17238,11559,17240, +17241,17242,17243,6724,17244,5678,5193,5129,17408,11090,6183,17245,17411, +11077,9755,10258,7234,17410,6962,6184,6725,5192,10517,17409,8230,10785,6486, +6726,9020,17414,11582,6456,17415,7713,17417,7473,6415,17416,7177,5917,8231, +17412,17418,17413,5679,17421,17425,5706,17420,17429,6185,11340,3867,17426, +5194,17423,17424,9308,17422,17419,4615,8003,5895,17431,17428,17430,17427,5680, +8466,17432,8269,17445,17441,17435,17439,7001,3900,17434,17442,17446,6186, +11061,9013,17436,17444,17433,8733,17438,3868,11049,17437,5434,10059,8268, +11567,7246,17485,17447,8029,17443,17448,17450,9048,17453,17449,10547,4906, +11050,3901,17452,11612,17451,4174,9547,17454,17461,17455,17462,17458,9818, +6953,17460,17457,17463,17456,7203,10756,7211,17459,17471,17467,17470,17468, +17472,17466,17440,7986,10026,17469,17464,8192,5681,7178,7684,8213,17475,17477, +17478,17474,17476,17465,17473,17481,17480,10841,5642,17479,17483,17482,17486, +17488,6683,17484,17489,17490,17491,17497,9242,17493,17492,17494,17495,17496, +17498,17499,4907,17500,17501,17664,17665,17666,17667,17668,17669,17671,17670, +17672,17673,17674,17677,17675,17676,6464,5682,8757,10002,7247,9772,10060, +17678,14156,17679,17681,11332,17680,17683,17682,11314,17684,10077,17685,17688, +17687,17686,17689,5649,8193,5152,17693,17690,17691,17694,17695,17692,4104, +4358,17697,17698,17699,11329,7179,17701,17700,7752,17702,17703,17704,4932, +4908,17705,17706,10812,11330, +11315,11798,6188,17709,6963,17708,17710,6920,8496,17711,6187,11062,17712, +17713,17714,17715,17716,6921,11084,17718,8734,17717,17720,17719,17721,7962, +17722,17723,10520,17724,8270,17725,17726,11613,17729,17728,17727,8975,17730, +7685,17731,17732,11799,17733,17734,17736,17735,9988,9560,11805,9992,17738, +7474,10249,17739,17737,4909,5939,6727,10061,5897,10786,17742,17740,6189,6190, +3912,6471,9784,3902,17747,8735,9783,8506,17749,17745,17748,17743,17746,10757, +5940,3932,17744,17751,17752,9496,5402,17925,9756,6728,5403,7975,11813,11021, +17750,7987,5170,17753,17755,17754,17756,8709,9757,8976,17922,17921,17757,7732, +10308,17924,17923,6191,11826,17940,17928,17929,6991,17927,6231,17926,17930, +8977,10497,8194,8507,17934,17935,17931,17932,17933,6192,17941,17937,10309, +10827,10247,17936,17939,17938,10787,17942,17943,8214,17944,17946,17950,17947, +17945,9758,17948,17949,4369,17956,17951,17952,17953,8448,17955,17954,17957, +17958,17959,7714,4424,17960,11574,6922,7180,6729,8758,17961,17962,4112,17963, +17964,17965,17966,17967,5404,14601,17968,8004,17969,6954,17970,12047,17971, +10557,4923,8195,7223,10320,7181,17972,6193,17973,10027,17987,17975,8488,9812, +5918,17974,8196,17976,9049,17978,17977,17980,17979,17981,17983,17982,4910, +17984,17985,17986,6416,11560,17988,7686,4175,17989,17990,17991,3921,17992, +17993,10310,6950,17995,4616,3857,17994,17997,9773,7715,4405,10758,5692,5435, +17996,4425,4866,4176,18001,11593,8508,10275,18013,4406,18011,18009,18000, +17998,17999, +6978,5451,8790,9520,4144,18003,18002,18008,18004,18007,11055,18006,4407,4700, +18010,18012,5683,18178,18187,18188,3850,18195,3920,18186,18185,18180,18179, +18177,18176,8770,8538,18182,18181,18184,8271,5684,4128,18183,6194,8272,18201, +18202,4408,4365,18199,18189,18197,18204,18198,18196,18005,18194,18190,4911, +18192,18203,18193,18205,18191,9819,11336,18200,18222,18214,7770,5157,5436, +18209,4410,7475,18212,6457,9264,18217,10573,18208,4409,5941,10248,18218,18206, +18215,18225,18210,18211,9497,18216,18213,10759,18219,3903,18207,18221,18220, +9802,18227,18238,4701,18241,18223,18228,11341,18237,11316,11529,8791,4682, +10321,18243,9472,3856,18236,18232,8273,18226,18234,18239,9739,3849,18231, +18240,10327,18235,18230,7476,7182,6923,11063,10278,18246,18255,18233,4694, +7511,18244,18249,8274,18245,18252,8766,18253,11317,18242,4631,18248,18251, +11019,18254,18247,18250,10760,11776,18258,18265,18257,6946,18224,10541,11009, +18264,18263,18259,18260,4117,18262,18256,9012,18261,3933,8449,10530,18266, +18432,10040,18269,7477,6952,18434,5405,18435,10328,18268,18229,18267,11822, +9473,10322,18442,18448,18449,18436,9813,18446,18438,18440,18450,18439,18443, +4177,9540,18444,18447,18437,8197,18441,6662,7716,5647,11091,11096,7249,18454, +18452,11821,18451,11348,18453,18455,18456,18459,18457,9474,18458,10028,18445, +7250,18460,18465,8275,18464,18433,18466,8232,18461,18463,18462,15376,15361, +18468,18467,11349,16667,18469,18470,18471,5942,5171,18473,12348,5204,11545, +5458,18474,18475,8781,18476, +9561,3865,4418,18481,18482,18477,6684,18478,9761,18479,18480,18490,18484, +18487,18483,18485,18486,6967,18488,8736,5685,4641,18491,4638,18496,18492, +18495,10009,18493,18494,10279,10041,18497,8540,18507,18503,4426,18501,10761, +18502,18499,18500,18505,18508,18506,18504,18498,8759,18515,11017,18513,18514, +18509,18511,18512,18510,8005,11800,18519,18520,18688,7689,18522,18525,18517, +18516,18689,4411,18523,18690,18524,18521,8978,18518,9799,18694,11290,18693, +18692,18701,18695,18703,11333,18706,18697,18698,18702,18705,18704,18696,18699, +18716,18709,18707,18708,18713,18714,4617,5153,18712,18691,18711,18715,18710, +18717,18719,18718,18721,18720,18489,18725,18722,18723,18724,18726,5707,18728, +18727,7183,6195,15622,18729,7216,4632,18730,4145,7478,18731,6196,18732,3904, +10268,18733,7753,18740,18737,8782,18738,18735,5437,18734,18741,5653,8509, +18747,18743,8468,18742,18745,18736,18746,18748,10062,18744,18749,18751,5938, +18739,3872,18750,6458,11605,18752,18753,8276,11521,18754,11284,18755,18756, +10563,18757,6431,11522,18762,18763,7479,18761,11334,18758,18760,7964,7773, +18759,18764,10498,18766,18765,4683,10762,18767,18779,18769,18770,18771,18772, +18776,18777,18775,18773,18768,18774,18778,20246,4359,18781,5438,18780,18945, +18944,18947,18946,18948,7184,18949,18950,18951,7965,11318,18952,10499,9765, +18953,18954,5898,5131,18955,6730,9760,18956,4655,18957,18959,11350,18958,7717, +18960,18961,18962,4912,18963,18964,18965,18966,4656,18967,18968,18969,4433, +7687,18970,18971,18972,5919,9050,18973, +5686,7733,18976,9475,18975,5648,18974,8534,5132,18977,18978,7480,5708,18979, +10763,7998,5205,11092,8233,18980,7718,8783,7481,18981,18984,18985,6429,8481, +18983,7482,10269,18982,6731,4146,18989,5687,6733,6732,11820,18988,18987,8198, +5164,11810,4633,7483,18986,18991,18992,18990,5943,11295,6734,9734,18995,7967, +8737,11285,18998,5963,7966,18994,18999,5964,18996,18997,18993,8001,9512,8718, +4412,10063,5154,8979,19002,19000,8747,7968,4913,19001,7738,11561,11807,19003, +19014,8980,19013,19010,19018,19011,19007,9051,19006,19004,11264,6735,19008, +19005,19012,7251,5920,8537,10788,4153,3905,9476,19016,19015,9541,19020,19009, +19019,19021,5899,19017,6197,6964,19022,11319,19025,19028,19026,10260,19023, +5439,19027,19029,19033,19030,19032,19031,19034,6928,19036,19035,10311,19200, +5688,19037,19201,19202,5155,17696,7512,19203,5965,19204,19205,6685,14637, +19206,19207,7185,19208,19209,19210,19211,19212,8714,19213,19215,19214,9477, +19216,10764,19217,19218,19219,19220,9529,7484,19221,6218,12045,19222,19223, +10270,19224,19232,19225,19227,19226,19228,10789,19229,19230,19231,19233,4620, +9030,10312,6465,6198,10286,4414,10029,19236,4914,7988,19235,19240,8792,11074, +19238,19239,5133,19241,9794,8510,10064,9244,19237,10790,4427,19243,11783,8993, +11812,6736,19242,8464,19259,8199,9559,10287,19246,6686,6737,7485,9796,5900, +19245,19244,10313,6944,9265,19248,19249,6199,19247,19250,19251,19253,8450, +19252,4933,19255,19254,19256,19258,19260,19261,7989,6958,19262,4657, +19263,8277,19264,19265,10314,5134,19266,8981,4154,19267,6992,7765,8460,19270, +19269,19268,19276,19274,19271,19273,19272,19275,5206,19279,7990,19280,5944, +19277,19278,11784,8982,8200,19281,19284,19282,19283,11320,9478,19287,19285, +19286,19288,19464,19291,19292,19290,19289,9052,19456,19460,19457,19293,19458, +19459,19466,19461,7991,19463,19465,19462,19468,7186,19467,19469,19470,19473, +19472,19471,19475,19474,11093,19477,19476,19478,19479,19481,19480,7719,19482, +5452,19483,19485,19486,19487,19484,19488,6965,19489,5135,5650,5901,19490,9551, +9245,19491,19494,6931,19493,19492,5689,19495,4658,19497,6459,19496,19505, +19499,19501,10564,19498,19500,19504,19502,5136,19503,19506,9785,11575,7187, +19507,11265,19509,19508,19512,11296,19511,4684,19510,19515,19514,19513,9233, +19516,19517,19518,6219,5636,19519,19520,19521,7720,19522,6924,19523,19524, +12544,12381,19525,17487,19526,8707,7690,9759,19527,10548,9011,6237,8712,4105, +10839,7734,5693,5440,10549,19528,19530,19529,4415,9557,19531,9814,9234,19532, +7217,19534,11041,19549,19536,19537,9000,8511,8278,9479,19535,5172,19544,19541, +19716,9480,8767,19538,9053,9266,19539,19543,7743,9798,9003,7969,19542,8461, +8451,19540,3848,11777,19545,8512,7188,7721,19547,19546,3918,19548,10254,19718, +9530,7754,8760,5463,19717,11286,4126,10550,4416,19712,19713,19714,19715,9498, +8706,3906,19719,19720,21250,8476,19721,4178,8235,5902,11321,19722,9227,8279, +6966,19723,19726,7236,19724,8202,8201,3907,11562,19728,10065,19730,19729, +19727,16963,4915,19533,19732,19731,19733,11287,9536,10765,19734,6968,19735, +19736,19737,9216,3913,6200,11801,19741,5651,19738,19739,10323,4659,11288,5406, +9267,19742,19743,19744,9217,19746,19745,9522,19747,7189,6975,9786,8784,6993, +7755,19748,19749,7740,19750,19751,19752,11342,7190,19754,19753,6201,6226,6687, +19757,7237,19756,19755,8520,5966,7970,9999,7192,19758,7486,19761,19759,19760, +19763,19762,7513,19764,19765,19766,10031,6450,6976,19767,19768,11523,7204, +11085,11563,19769,5441,19770,9218,19773,4695,7722,19771,19772,9023,10804,5467, +19775,19776,19774,19778,9534,4642,19782,19779,19781,19777,20014,19780,11594, +5945,19790,9235,19785,19788,19786,19791,19792,19784,19797,4179,19783,9996, +19787,7487,6202,10791,5443,7205,9499,8204,19795,19789,19794,11042,8983,19796, +19793,8203,19800,19799,19798,10766,7258,19801,10558,4147,10277,8785,5207, +19803,6204,6667,19802,7756,7757,19968,19970,7514,19969,19971,5426,10276,6977, +11778,19805,6487,11806,19973,19972,19974,19804,9544,9268,9014,19979,8738, +19975,19976,5644,19978,5903,19977,7488,4696,19983,6430,8280,9001,4634,19981, +19982,8994,19980,19984,19990,19993,19992,9228,19985,19986,19989,19991,5407, +19994,19988,19987,19998,19999,20000,19997,19996,7489,9481,19995,20004,20002, +20003,20001,8535,20005,20006,20008,4916,20007,11097,20019,20009,20012,20010, +20011,20013,20015,20016,20017,20020,20018,20021,20023,20022,8984,11078,20024, +8205,20025,10531,20026,4618,4123,4918,4917,20027,20028,20029,20030,20031,4919, +4660,6205,10005,20033,20032,20034,4155,20037,20036,20035,20038,20041,3878, +20039,20043,20042,20045,20044,20046,9485,20047,20048,20050,20049,10315,20051, +20052,6468,20053,20054,10792,8234,3843,8490,20055,10316,20058,20056,6206, +20057,5921,10532,20060,20224,20061,20225,4096,7735,7259,4920,20226,9797,20228, +4097,20227,8995,11564,9482,20059,11525,5904,11322,5464,11539,5639,8513,17920, +20229,4619,7758,4661,20231,20232,20230,5699,6460,7490,4098,11576,20234,19725, +20233,20237,20235,20236,20238,20239,11595,20240,20241,7976,10010,7772,4934, +11289,4428,7191,5946,20244,20243,6738,20245,20242,6663,20249,18700,12597,7766, +20247,11524,9552,4106,8002,6933,10518,4127,11596,11338,20250,9252,7002,20251, +20252,7723,20253,11597,20248,20255,20257,20256,20254,20258,20259,8281,4417, +20260,11031,20261,20262,11785,14864,20263,20264,20265,20269,20266,20267,20268, +20270,7971,11094,7972,20271,10066,20272,21042,11051,20273,20274,20275,4662, +20277,7736,20278,5635,20279,20283,20281,20282,4690,20280,20284,20285,3879, +20286,20287,7491,20288,5158,20291,20290,20289,19024,10555,20292,20293,20294, +20295,20296,20297,4921,20298,20299,9730,20301,4378,20304,20303,4099,5408, +10534,8985,6401,6207,7238,7739,20306,20305,11297,4935,10033,9531,7771,11565, +5690,20309,20308,10794,9483,4143,20310,20307,10288,11337,20311,20312,20314, +8521,4666,4667,20313,4936,5905,4937,9246,11583,5947,20315,20316,20317,20480, +20482,20481,10326,20483,20484,20485,20486,20488,20487,20489,10067,17707,7688, +5137,20490, +20491,12555,15386,10034,3930,3866,6739,10767,7517,20492,11070,20493,11323, +4129,6688,20494,4429,20495,20496,20498,20499,20501,20497,20500,4922,20502, +20503,20504,20505,20506,20508,20507,20510,20513,20509,20511,20512,20514,5409, +6994,20515,20516,6208,20517,4637,9774,20518,20519,8761,9546,20520,9820,8491, +4151,5453,5454,8786,20525,5455,4430,20524,20522,20523,20521,20535,20526,20527, +20528,20529,20531,20530,7224,20532,20534,5138,20533,8282,5906,20536,8492, +20537,9484,20538,20543,20541,20540,20542,20539,20545,20544,20547,5410,20546, +20548,20549,20551,20550,20552,20554,20553,6235,20555,20556,4635,20557,20558, +7760,20559,20560,20561,20562,6209,20563,20564,20565,20566,20567,10000,20569, +10245,20570,20568,20572,20571,20573,20736,20737,20738,20739,20740,20741,20742, +20743,20744,20745,20746,20747,20748,20749,15380,20750,17239,5139,4608,6417, +20752,20751,11012,20754,20755,20753,20756,10817,20757,5210,11780,20758,20760, +3869,20761,10506,20759,20762,20763,20764,20765,20766,10829,6668,6489,8206, +20767,20770,20768,20771,5968,20769,20772,20773,20774,20778,6665,8515,20779, +20776,20775,20777,5694,20783,20782,20781,3858,20793,20789,20790,20786,20792, +20788,4673,11819,20791,20787,20785,20784,20795,20798,20797,20796,10280,20794, +3922,20799,20801,4686,20780,4118,20803,20802,20800,8716,10831,11577,20804, +20805,20806,20807,20808,8986,20809,10006,20814,20810,20811,10768,11043,9519, +20815,20816,9501,20813,20812,4361,20824,20823,4180,20821,20820,20818,4698, +20817,6929,4360,6210,20827,20826,20825, +20822,20828,20829,20996,20995,20997,4108,20992,20993,6227,11032,20994,10769, +21002,20998,21003,21000,20999,5691,21004,21005,21006,21001,20819,21007,9024, +21011,21012,21010,21009,21015,21008,21013,21014,21017,21016,21019,21020,21021, +11816,21018,8522,6476,21022,21023,21024,21025,21026,5907,21027,21028,6926, +21029,21030,21031,21032,21035,21033,11803,21034,11598,21036,11578,21037,9821, +21038,21040,21041,21039,6220,11052,10818,13654,15423,10842,4362,21043,5167, +21044,21045,21046,6228,21047,16179,11066,8514,21048,21050,21049,21051,21052, +21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,9219,5948, +21065,8236,21066,21067,10240,21068,21069,16918,19257,20300,21070,21071,21073, +21074,21075,11599,21072,21076,21077,21079,21078,21081,21082,21080,11541,21083, +21084,16947,21085,9,83,79,82,84,41,42,85,59,3,4,30,527,528,529,530,531,532, +533,534,535,536,6,7,66,64,67,8,86,544,545,546,547,548,549,550,551,552,553,554, +555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,45,46,15,17,13, +576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594, +595,596,597,598,599,600,601,47,34,48,16,78, diff --git a/vendor/modernc.org/libc/musl/src/locale/setlocale.c b/vendor/modernc.org/libc/musl/src/locale/setlocale.c new file mode 100644 index 000000000..2bc7b5007 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/setlocale.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include "locale_impl.h" +#include "libc.h" +#include "lock.h" + +static char buf[LC_ALL*(LOCALE_NAME_MAX+1)]; + +char *setlocale(int cat, const char *name) +{ + static volatile int lock[1]; + const struct __locale_map *lm; + + if ((unsigned)cat > LC_ALL) return 0; + + LOCK(lock); + + /* For LC_ALL, setlocale is required to return a string which + * encodes the current setting for all categories. The format of + * this string is unspecified, and only the following code, which + * performs both the serialization and deserialization, depends + * on the format, so it can easily be changed if needed. */ + if (cat == LC_ALL) { + int i; + if (name) { + struct __locale_struct tmp_locale; + char part[LOCALE_NAME_MAX+1] = "C.UTF-8"; + const char *p = name; + for (i=0; iname : "C"; + size_t l = strlen(part); + memcpy(s, part, l); + s[l] = ';'; + s += l+1; + } + *--s = 0; + UNLOCK(lock); + return same==LC_ALL ? (char *)part : buf; + } + + if (name) { + lm = __get_locale(cat, name); + if (lm == LOC_MAP_FAILED) { + UNLOCK(lock); + return 0; + } + libc.global_locale.cat[cat] = lm; + } else { + lm = libc.global_locale.cat[cat]; + } + char *ret = lm ? (char *)lm->name : "C"; + + UNLOCK(lock); + + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/strcoll.c b/vendor/modernc.org/libc/musl/src/locale/strcoll.c new file mode 100644 index 000000000..dd3cbc480 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/strcoll.c @@ -0,0 +1,15 @@ +#include +#include +#include "locale_impl.h" + +int __strcoll_l(const char *l, const char *r, locale_t loc) +{ + return strcmp(l, r); +} + +int strcoll(const char *l, const char *r) +{ + return __strcoll_l(l, r, CURRENT_LOCALE); +} + +weak_alias(__strcoll_l, strcoll_l); diff --git a/vendor/modernc.org/libc/musl/src/locale/strfmon.c b/vendor/modernc.org/libc/musl/src/locale/strfmon.c new file mode 100644 index 000000000..7cf2136a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/strfmon.c @@ -0,0 +1,101 @@ +#include +#include +#include +#include +#include +#include "locale_impl.h" + +static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap) +{ + size_t l; + double x; + int fill, nogrp, negpar, nosym, left, intl; + int lp, rp, w, fw; + char *s0=s; + for (; n && *fmt; ) { + if (*fmt != '%') { + literal: + *s++ = *fmt++; + n--; + continue; + } + fmt++; + if (*fmt == '%') goto literal; + + fill = ' '; + nogrp = 0; + negpar = 0; + nosym = 0; + left = 0; + for (; ; fmt++) { + switch (*fmt) { + case '=': + fill = *++fmt; + continue; + case '^': + nogrp = 1; + continue; + case '(': + negpar = 1; + case '+': + continue; + case '!': + nosym = 1; + continue; + case '-': + left = 1; + continue; + } + break; + } + + for (fw=0; isdigit(*fmt); fmt++) + fw = 10*fw + (*fmt-'0'); + lp = 0; + rp = 2; + if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++) + lp = 10*lp + (*fmt-'0'); + if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++) + rp = 10*rp + (*fmt-'0'); + + intl = *fmt++ == 'i'; + + w = lp + 1 + rp; + if (!left && fw>w) w = fw; + + x = va_arg(ap, double); + l = snprintf(s, n, "%*.*f", w, rp, x); + if (l >= n) { + errno = E2BIG; + return -1; + } + s += l; + n -= l; + } + return s-s0; +} + +ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...) +{ + va_list ap; + ssize_t ret; + + va_start(ap, fmt); + ret = vstrfmon_l(s, n, loc, fmt, ap); + va_end(ap); + + return ret; +} + + +ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...) +{ + va_list ap; + ssize_t ret; + + va_start(ap, fmt); + ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap); + va_end(ap); + + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/locale/strxfrm.c b/vendor/modernc.org/libc/musl/src/locale/strxfrm.c new file mode 100644 index 000000000..c66c62039 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/strxfrm.c @@ -0,0 +1,18 @@ +#include +#include +#include "locale_impl.h" + +/* collate only by code points */ +size_t __strxfrm_l(char *restrict dest, const char *restrict src, size_t n, locale_t loc) +{ + size_t l = strlen(src); + if (n > l) strcpy(dest, src); + return l; +} + +size_t strxfrm(char *restrict dest, const char *restrict src, size_t n) +{ + return __strxfrm_l(dest, src, n, CURRENT_LOCALE); +} + +weak_alias(__strxfrm_l, strxfrm_l); diff --git a/vendor/modernc.org/libc/musl/src/locale/textdomain.c b/vendor/modernc.org/libc/musl/src/locale/textdomain.c new file mode 100644 index 000000000..d72753979 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/textdomain.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +static char *current_domain; + +char *__gettextdomain() +{ + return current_domain ? current_domain : "messages"; +} + +char *textdomain(const char *domainname) +{ + if (!domainname) return __gettextdomain(); + + size_t domlen = strlen(domainname); + if (domlen > NAME_MAX) { + errno = EINVAL; + return 0; + } + + if (!current_domain) { + current_domain = malloc(NAME_MAX+1); + if (!current_domain) return 0; + } + + memcpy(current_domain, domainname, domlen+1); + + return current_domain; +} + +char *gettext(const char *msgid) +{ + return dgettext(0, msgid); +} + +char *ngettext(const char *msgid1, const char *msgid2, unsigned long int n) +{ + return dngettext(0, msgid1, msgid2, n); +} diff --git a/vendor/modernc.org/libc/musl/src/locale/uselocale.c b/vendor/modernc.org/libc/musl/src/locale/uselocale.c new file mode 100644 index 000000000..0fc5ecbc0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/uselocale.c @@ -0,0 +1,16 @@ +#include "locale_impl.h" +#include "pthread_impl.h" +#include "libc.h" + +locale_t __uselocale(locale_t new) +{ + pthread_t self = __pthread_self(); + locale_t old = self->locale; + locale_t global = &libc.global_locale; + + if (new) self->locale = new == LC_GLOBAL_LOCALE ? global : new; + + return old == global ? LC_GLOBAL_LOCALE : old; +} + +weak_alias(__uselocale, uselocale); diff --git a/vendor/modernc.org/libc/musl/src/locale/wcscoll.c b/vendor/modernc.org/libc/musl/src/locale/wcscoll.c new file mode 100644 index 000000000..ad2cc6916 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/wcscoll.c @@ -0,0 +1,16 @@ +#include +#include +#include "locale_impl.h" + +/* FIXME: stub */ +int __wcscoll_l(const wchar_t *l, const wchar_t *r, locale_t locale) +{ + return wcscmp(l, r); +} + +int wcscoll(const wchar_t *l, const wchar_t *r) +{ + return __wcscoll_l(l, r, CURRENT_LOCALE); +} + +weak_alias(__wcscoll_l, wcscoll_l); diff --git a/vendor/modernc.org/libc/musl/src/locale/wcsxfrm.c b/vendor/modernc.org/libc/musl/src/locale/wcsxfrm.c new file mode 100644 index 000000000..05e3e1158 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/locale/wcsxfrm.c @@ -0,0 +1,23 @@ +#include +#include +#include "locale_impl.h" + +/* collate only by code points */ +size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc) +{ + size_t l = wcslen(src); + if (l < n) { + wmemcpy(dest, src, l+1); + } else if (n) { + wmemcpy(dest, src, n-1); + dest[n-1] = 0; + } + return l; +} + +size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n) +{ + return __wcsxfrm_l(dest, src, n, CURRENT_LOCALE); +} + +weak_alias(__wcsxfrm_l, wcsxfrm_l); diff --git a/vendor/modernc.org/libc/musl/src/malloc/calloc.c b/vendor/modernc.org/libc/musl/src/malloc/calloc.c new file mode 100644 index 000000000..bf6bddca3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/calloc.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include "dynlink.h" + +static size_t mal0_clear(char *p, size_t n) +{ + const size_t pagesz = 4096; /* arbitrary */ + if (n < pagesz) return n; +#ifdef __GNUC__ + typedef uint64_t __attribute__((__may_alias__)) T; +#else + typedef unsigned char T; +#endif + char *pp = p + n; + size_t i = (uintptr_t)pp & (pagesz - 1); + for (;;) { + pp = memset(pp - i, 0, i); + if (pp - p < pagesz) return pp - p; + for (i = pagesz; i; i -= 2*sizeof(T), pp -= 2*sizeof(T)) + if (((T *)pp)[-1] | ((T *)pp)[-2]) + break; + } +} + +static int allzerop(void *p) +{ + return 0; +} +weak_alias(allzerop, __malloc_allzerop); + +void *calloc(size_t m, size_t n) +{ + if (n && m > (size_t)-1/n) { + errno = ENOMEM; + return 0; + } + n *= m; + void *p = malloc(n); + if (!p || (!__malloc_replaced && __malloc_allzerop(p))) + return p; + n = mal0_clear(p, n); + return memset(p, 0, n); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/lite_malloc.c b/vendor/modernc.org/libc/musl/src/malloc/lite_malloc.c new file mode 100644 index 000000000..f8931ba59 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/lite_malloc.c @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include "libc.h" +#include "lock.h" +#include "syscall.h" + +#define ALIGN 16 + +/* This function returns true if the interval [old,new] + * intersects the 'len'-sized interval below &libc.auxv + * (interpreted as the main-thread stack) or below &b + * (the current stack). It is used to defend against + * buggy brk implementations that can cross the stack. */ + +static int traverses_stack_p(uintptr_t old, uintptr_t new) +{ + const uintptr_t len = 8<<20; + uintptr_t a, b; + + b = (uintptr_t)libc.auxv; + a = b > len ? b-len : 0; + if (new>a && old len ? b-len : 0; + if (new>a && old SIZE_MAX/2) { + errno = ENOMEM; + return 0; + } + + if (!n) n++; + while (align end-cur) { + size_t req = n - (end-cur) + PAGE_SIZE-1 & -PAGE_SIZE; + + if (!cur) { + brk = __syscall(SYS_brk, 0); + brk += -brk & PAGE_SIZE-1; + cur = end = brk; + } + + if (brk == end && req < SIZE_MAX-brk + && !traverses_stack_p(brk, brk+req) + && __syscall(SYS_brk, brk+req)==brk+req) { + brk = end += req; + } else { + int new_area = 0; + req = n + PAGE_SIZE-1 & -PAGE_SIZE; + /* Only make a new area rather than individual mmap + * if wasted space would be over 1/8 of the map. */ + if (req-n > req/8) { + /* Geometric area size growth up to 64 pages, + * bounding waste by 1/8 of the area. */ + size_t min = PAGE_SIZE<<(mmap_step/2); + if (min-n > end-cur) { + if (req < min) { + req = min; + if (mmap_step < 12) + mmap_step++; + } + new_area = 1; + } + } + void *mem = __mmap(0, req, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (mem == MAP_FAILED || !new_area) { + UNLOCK(lock); + return mem==MAP_FAILED ? 0 : mem; + } + cur = (uintptr_t)mem; + end = cur + req; + } + } + + p = (void *)cur; + cur += n; + UNLOCK(lock); + return p; +} + +weak_alias(__simple_malloc, malloc); diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/aligned_alloc.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/aligned_alloc.c new file mode 100644 index 000000000..341168960 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/aligned_alloc.c @@ -0,0 +1,57 @@ +#include +#include +#include "meta.h" + +void *aligned_alloc(size_t align, size_t len) +{ + if ((align & -align) != align) { + errno = EINVAL; + return 0; + } + + if (len > SIZE_MAX - align || align >= (1ULL<<31)*UNIT) { + errno = ENOMEM; + return 0; + } + + if (DISABLE_ALIGNED_ALLOC) { + errno = ENOMEM; + return 0; + } + + if (align <= UNIT) align = UNIT; + + unsigned char *p = malloc(len + align - UNIT); + struct meta *g = get_meta(p); + int idx = get_slot_index(p); + size_t stride = get_stride(g); + unsigned char *start = g->mem->storage + stride*idx; + unsigned char *end = g->mem->storage + stride*(idx+1) - IB; + size_t adj = -(uintptr_t)p & (align-1); + + if (!adj) { + set_size(p, end, len); + return p; + } + p += adj; + uint32_t offset = (size_t)(p-g->mem->storage)/UNIT; + if (offset <= 0xffff) { + *(uint16_t *)(p-2) = offset; + p[-4] = 0; + } else { + // use a 32-bit offset if 16-bit doesn't fit. for this, + // 16-bit field must be zero, [-4] byte nonzero. + *(uint16_t *)(p-2) = 0; + *(uint32_t *)(p-8) = offset; + p[-4] = 1; + } + p[-3] = idx; + set_size(p, end, len); + // store offset to aligned enframing. this facilitates cycling + // offset and also iteration of heap for debugging/measurement. + // for extreme overalignment it won't fit but these are classless + // allocations anyway. + *(uint16_t *)(start - 2) = (size_t)(p-start)/UNIT; + start[-3] = 7<<5; + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/donate.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/donate.c new file mode 100644 index 000000000..41d850f35 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/donate.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include + +#include "meta.h" + +static void donate(unsigned char *base, size_t len) +{ + uintptr_t a = (uintptr_t)base; + uintptr_t b = a + len; + a += -a & (UNIT-1); + b -= b & (UNIT-1); + memset(base, 0, len); + for (int sc=47; sc>0 && b>a; sc-=4) { + if (b-a < (size_classes[sc]+1)*UNIT) continue; + struct meta *m = alloc_meta(); + m->avail_mask = 0; + m->freed_mask = 1; + m->mem = (void *)a; + m->mem->meta = m; + m->last_idx = 0; + m->freeable = 0; + m->sizeclass = sc; + m->maplen = 0; + *((unsigned char *)m->mem+UNIT-4) = 0; + *((unsigned char *)m->mem+UNIT-3) = 255; + m->mem->storage[size_classes[sc]*UNIT-4] = 0; + queue(&ctx.active[sc], m); + a += (size_classes[sc]+1)*UNIT; + } +} + +void __malloc_donate(char *start, char *end) +{ + donate((void *)start, end-start); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/free.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/free.c new file mode 100644 index 000000000..40745f97d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/free.c @@ -0,0 +1,143 @@ +#define _BSD_SOURCE +#include +#include + +#include "meta.h" + +struct mapinfo { + void *base; + size_t len; +}; + +static struct mapinfo nontrivial_free(struct meta *, int); + +static struct mapinfo free_group(struct meta *g) +{ + struct mapinfo mi = { 0 }; + int sc = g->sizeclass; + if (sc < 48) { + ctx.usage_by_class[sc] -= g->last_idx+1; + } + if (g->maplen) { + step_seq(); + record_seq(sc); + mi.base = g->mem; + mi.len = g->maplen*4096UL; + } else { + void *p = g->mem; + struct meta *m = get_meta(p); + int idx = get_slot_index(p); + g->mem->meta = 0; + // not checking size/reserved here; it's intentionally invalid + mi = nontrivial_free(m, idx); + } + free_meta(g); + return mi; +} + +static int okay_to_free(struct meta *g) +{ + int sc = g->sizeclass; + + if (!g->freeable) return 0; + + // always free individual mmaps not suitable for reuse + if (sc >= 48 || get_stride(g) < UNIT*size_classes[sc]) + return 1; + + // always free groups allocated inside another group's slot + // since recreating them should not be expensive and they + // might be blocking freeing of a much larger group. + if (!g->maplen) return 1; + + // if there is another non-full group, free this one to + // consolidate future allocations, reduce fragmentation. + if (g->next != g) return 1; + + // free any group in a size class that's not bouncing + if (!is_bouncing(sc)) return 1; + + size_t cnt = g->last_idx+1; + size_t usage = ctx.usage_by_class[sc]; + + // if usage is high enough that a larger count should be + // used, free the low-count group so a new one will be made. + if (9*cnt <= usage && cnt < 20) + return 1; + + // otherwise, keep the last group in a bouncing class. + return 0; +} + +static struct mapinfo nontrivial_free(struct meta *g, int i) +{ + uint32_t self = 1u<sizeclass; + uint32_t mask = g->freed_mask | g->avail_mask; + + if (mask+self == (2u<last_idx)-1 && okay_to_free(g)) { + // any multi-slot group is necessarily on an active list + // here, but single-slot groups might or might not be. + if (g->next) { + assert(sc < 48); + int activate_new = (ctx.active[sc]==g); + dequeue(&ctx.active[sc], g); + if (activate_new && ctx.active[sc]) + activate_group(ctx.active[sc]); + } + return free_group(g); + } else if (!mask) { + assert(sc < 48); + // might still be active if there were no allocations + // after last available slot was taken. + if (ctx.active[sc] != g) { + queue(&ctx.active[sc], g); + } + } + a_or(&g->freed_mask, self); + return (struct mapinfo){ 0 }; +} + +void free(void *p) +{ + if (!p) return; + + struct meta *g = get_meta(p); + int idx = get_slot_index(p); + size_t stride = get_stride(g); + unsigned char *start = g->mem->storage + stride*idx; + unsigned char *end = start + stride - IB; + get_nominal_size(p, end); + uint32_t self = 1u<last_idx)-1; + ((unsigned char *)p)[-3] = 255; + // invalidate offset to group header, and cycle offset of + // used region within slot if current offset is zero. + *(uint16_t *)((char *)p-2) = 0; + + // release any whole pages contained in the slot to be freed + // unless it's a single-slot group that will be unmapped. + if (((uintptr_t)(start-1) ^ (uintptr_t)end) >= 2*PGSZ && g->last_idx) { + unsigned char *base = start + (-(uintptr_t)start & (PGSZ-1)); + size_t len = (end-base) & -PGSZ; + if (len) madvise(base, len, MADV_FREE); + } + + // atomic free without locking if this is neither first or last slot + for (;;) { + uint32_t freed = g->freed_mask; + uint32_t avail = g->avail_mask; + uint32_t mask = freed | avail; + assert(!(mask&self)); + if (!freed || mask+self==all) break; + if (!MT) + g->freed_mask = freed+self; + else if (a_cas(&g->freed_mask, freed, freed+self)!=freed) + continue; + return; + } + + wrlock(); + struct mapinfo mi = nontrivial_free(g, idx); + unlock(); + if (mi.len) munmap(mi.base, mi.len); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/glue.h b/vendor/modernc.org/libc/musl/src/malloc/mallocng/glue.h new file mode 100644 index 000000000..16acd1ea3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/glue.h @@ -0,0 +1,77 @@ +#ifndef MALLOC_GLUE_H +#define MALLOC_GLUE_H + +#include +#include +#include +#include +#include +#include +#include "atomic.h" +#include "syscall.h" +#include "libc.h" +#include "lock.h" +#include "dynlink.h" + +// use macros to appropriately namespace these. +#define size_classes __malloc_size_classes +#define ctx __malloc_context +#define alloc_meta __malloc_alloc_meta +#define is_allzero __malloc_allzerop +#define dump_heap __dump_heap + +#if USE_REAL_ASSERT +#include +#else +#undef assert +#define assert(x) do { if (!(x)) a_crash(); } while(0) +#endif + +#define brk(p) ((uintptr_t)__syscall(SYS_brk, p)) + +#define mmap __mmap +#define madvise __madvise +#define mremap __mremap + +#define DISABLE_ALIGNED_ALLOC (__malloc_replaced && !__aligned_alloc_replaced) + +static inline uint64_t get_random_secret() +{ + uint64_t secret = (uintptr_t)&secret * 1103515245; + for (size_t i=0; libc.auxv[i]; i+=2) + if (libc.auxv[i]==AT_RANDOM) + memcpy(&secret, (char *)libc.auxv[i+1]+8, sizeof secret); + return secret; +} + +#ifndef PAGESIZE +#define PAGESIZE PAGE_SIZE +#endif + +#define MT (libc.need_locks) + +#define RDLOCK_IS_EXCLUSIVE 1 + +__attribute__((__visibility__("hidden"))) +extern int __malloc_lock[1]; + +#define LOCK_OBJ_DEF \ +int __malloc_lock[1]; + +static inline void rdlock() +{ + if (MT) LOCK(__malloc_lock); +} +static inline void wrlock() +{ + if (MT) LOCK(__malloc_lock); +} +static inline void unlock() +{ + UNLOCK(__malloc_lock); +} +static inline void upgradelock() +{ +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc.c new file mode 100644 index 000000000..d695ab8ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc.c @@ -0,0 +1,387 @@ +#include +#include +#include +#include +#include +#include + +#include "meta.h" + +LOCK_OBJ_DEF; + +const uint16_t size_classes[] = { + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 12, 15, + 18, 20, 25, 31, + 36, 42, 50, 63, + 72, 84, 102, 127, + 146, 170, 204, 255, + 292, 340, 409, 511, + 584, 682, 818, 1023, + 1169, 1364, 1637, 2047, + 2340, 2730, 3276, 4095, + 4680, 5460, 6552, 8191, +}; + +static const uint8_t small_cnt_tab[][3] = { + { 30, 30, 30 }, + { 31, 15, 15 }, + { 20, 10, 10 }, + { 31, 15, 7 }, + { 25, 12, 6 }, + { 21, 10, 5 }, + { 18, 8, 4 }, + { 31, 15, 7 }, + { 28, 14, 6 }, +}; + +static const uint8_t med_cnt_tab[4] = { 28, 24, 20, 32 }; + +struct malloc_context ctx = { 0 }; + +struct meta *alloc_meta(void) +{ + struct meta *m; + unsigned char *p; + if (!ctx.init_done) { +#ifndef PAGESIZE + ctx.pagesize = get_page_size(); +#endif + ctx.secret = get_random_secret(); + ctx.init_done = 1; + } + size_t pagesize = PGSZ; + if (pagesize < 4096) pagesize = 4096; + if ((m = dequeue_head(&ctx.free_meta_head))) return m; + if (!ctx.avail_meta_count) { + int need_unprotect = 1; + if (!ctx.avail_meta_area_count && ctx.brk!=-1) { + uintptr_t new = ctx.brk + pagesize; + int need_guard = 0; + if (!ctx.brk) { + need_guard = 1; + ctx.brk = brk(0); + // some ancient kernels returned _ebss + // instead of next page as initial brk. + ctx.brk += -ctx.brk & (pagesize-1); + new = ctx.brk + 2*pagesize; + } + if (brk(new) != new) { + ctx.brk = -1; + } else { + if (need_guard) mmap((void *)ctx.brk, pagesize, + PROT_NONE, MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0); + ctx.brk = new; + ctx.avail_meta_areas = (void *)(new - pagesize); + ctx.avail_meta_area_count = pagesize>>12; + need_unprotect = 0; + } + } + if (!ctx.avail_meta_area_count) { + size_t n = 2UL << ctx.meta_alloc_shift; + p = mmap(0, n*pagesize, PROT_NONE, + MAP_PRIVATE|MAP_ANON, -1, 0); + if (p==MAP_FAILED) return 0; + ctx.avail_meta_areas = p + pagesize; + ctx.avail_meta_area_count = (n-1)*(pagesize>>12); + ctx.meta_alloc_shift++; + } + p = ctx.avail_meta_areas; + if ((uintptr_t)p & (pagesize-1)) need_unprotect = 0; + if (need_unprotect) + if (mprotect(p, pagesize, PROT_READ|PROT_WRITE) + && errno != ENOSYS) + return 0; + ctx.avail_meta_area_count--; + ctx.avail_meta_areas = p + 4096; + if (ctx.meta_area_tail) { + ctx.meta_area_tail->next = (void *)p; + } else { + ctx.meta_area_head = (void *)p; + } + ctx.meta_area_tail = (void *)p; + ctx.meta_area_tail->check = ctx.secret; + ctx.avail_meta_count = ctx.meta_area_tail->nslots + = (4096-sizeof(struct meta_area))/sizeof *m; + ctx.avail_meta = ctx.meta_area_tail->slots; + } + ctx.avail_meta_count--; + m = ctx.avail_meta++; + m->prev = m->next = 0; + return m; +} + +static uint32_t try_avail(struct meta **pm) +{ + struct meta *m = *pm; + uint32_t first; + if (!m) return 0; + uint32_t mask = m->avail_mask; + if (!mask) { + if (!m) return 0; + if (!m->freed_mask) { + dequeue(pm, m); + m = *pm; + if (!m) return 0; + } else { + m = m->next; + *pm = m; + } + + mask = m->freed_mask; + + // skip fully-free group unless it's the only one + // or it's a permanently non-freeable group + if (mask == (2u<last_idx)-1 && m->freeable) { + m = m->next; + *pm = m; + mask = m->freed_mask; + } + + // activate more slots in a not-fully-active group + // if needed, but only as a last resort. prefer using + // any other group with free slots. this avoids + // touching & dirtying as-yet-unused pages. + if (!(mask & ((2u<mem->active_idx)-1))) { + if (m->next != m) { + m = m->next; + *pm = m; + } else { + int cnt = m->mem->active_idx + 2; + int size = size_classes[m->sizeclass]*UNIT; + int span = UNIT + size*cnt; + // activate up to next 4k boundary + while ((span^(span+size-1)) < 4096) { + cnt++; + span += size; + } + if (cnt > m->last_idx+1) + cnt = m->last_idx+1; + m->mem->active_idx = cnt-1; + } + } + mask = activate_group(m); + assert(mask); + decay_bounces(m->sizeclass); + } + first = mask&-mask; + m->avail_mask = mask-first; + return first; +} + +static int alloc_slot(int, size_t); + +static struct meta *alloc_group(int sc, size_t req) +{ + size_t size = UNIT*size_classes[sc]; + int i = 0, cnt; + unsigned char *p; + struct meta *m = alloc_meta(); + if (!m) return 0; + size_t usage = ctx.usage_by_class[sc]; + size_t pagesize = PGSZ; + int active_idx; + if (sc < 9) { + while (i<2 && 4*small_cnt_tab[sc][i] > usage) + i++; + cnt = small_cnt_tab[sc][i]; + } else { + // lookup max number of slots fitting in power-of-two size + // from a table, along with number of factors of two we + // can divide out without a remainder or reaching 1. + cnt = med_cnt_tab[sc&3]; + + // reduce cnt to avoid excessive eagar allocation. + while (!(cnt&1) && 4*cnt > usage) + cnt >>= 1; + + // data structures don't support groups whose slot offsets + // in units don't fit in 16 bits. + while (size*cnt >= 65536*UNIT) + cnt >>= 1; + } + + // If we selected a count of 1 above but it's not sufficient to use + // mmap, increase to 2. Then it might be; if not it will nest. + if (cnt==1 && size*cnt+UNIT <= pagesize/2) cnt = 2; + + // All choices of size*cnt are "just below" a power of two, so anything + // larger than half the page size should be allocated as whole pages. + if (size*cnt+UNIT > pagesize/2) { + // check/update bounce counter to start/increase retention + // of freed maps, and inhibit use of low-count, odd-size + // small mappings and single-slot groups if activated. + int nosmall = is_bouncing(sc); + account_bounce(sc); + step_seq(); + + // since the following count reduction opportunities have + // an absolute memory usage cost, don't overdo them. count + // coarse usage as part of usage. + if (!(sc&1) && sc<32) usage += ctx.usage_by_class[sc+1]; + + // try to drop to a lower count if the one found above + // increases usage by more than 25%. these reduced counts + // roughly fill an integral number of pages, just not a + // power of two, limiting amount of unusable space. + if (4*cnt > usage && !nosmall) { + if (0); + else if ((sc&3)==1 && size*cnt>8*pagesize) cnt = 2; + else if ((sc&3)==2 && size*cnt>4*pagesize) cnt = 3; + else if ((sc&3)==0 && size*cnt>8*pagesize) cnt = 3; + else if ((sc&3)==0 && size*cnt>2*pagesize) cnt = 5; + } + size_t needed = size*cnt + UNIT; + needed += -needed & (pagesize-1); + + // produce an individually-mmapped allocation if usage is low, + // bounce counter hasn't triggered, and either it saves memory + // or it avoids eagar slot allocation without wasting too much. + if (!nosmall && cnt<=7) { + req += IB + UNIT; + req += -req & (pagesize-1); + if (req=4*pagesize && 2*cnt>usage)) { + cnt = 1; + needed = req; + } + } + + p = mmap(0, needed, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0); + if (p==MAP_FAILED) { + free_meta(m); + return 0; + } + m->maplen = needed>>12; + ctx.mmap_counter++; + active_idx = (4096-UNIT)/size-1; + if (active_idx > cnt-1) active_idx = cnt-1; + if (active_idx < 0) active_idx = 0; + } else { + int j = size_to_class(UNIT+cnt*size-IB); + int idx = alloc_slot(j, UNIT+cnt*size-IB); + if (idx < 0) { + free_meta(m); + return 0; + } + struct meta *g = ctx.active[j]; + p = enframe(g, idx, UNIT*size_classes[j]-IB, ctx.mmap_counter); + m->maplen = 0; + p[-3] = (p[-3]&31) | (6<<5); + for (int i=0; i<=cnt; i++) + p[UNIT+i*size-4] = 0; + active_idx = cnt-1; + } + ctx.usage_by_class[sc] += cnt; + m->avail_mask = (2u<freed_mask = (2u<<(cnt-1))-1 - m->avail_mask; + m->mem = (void *)p; + m->mem->meta = m; + m->mem->active_idx = active_idx; + m->last_idx = cnt-1; + m->freeable = 1; + m->sizeclass = sc; + return m; +} + +static int alloc_slot(int sc, size_t req) +{ + uint32_t first = try_avail(&ctx.active[sc]); + if (first) return a_ctz_32(first); + + struct meta *g = alloc_group(sc, req); + if (!g) return -1; + + g->avail_mask--; + queue(&ctx.active[sc], g); + return 0; +} + +void *malloc(size_t n) +{ + if (size_overflows(n)) return 0; + struct meta *g; + uint32_t mask, first; + int sc; + int idx; + int ctr; + + if (n >= MMAP_THRESHOLD) { + size_t needed = n + IB + UNIT; + void *p = mmap(0, needed, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANON, -1, 0); + if (p==MAP_FAILED) return 0; + wrlock(); + step_seq(); + g = alloc_meta(); + if (!g) { + unlock(); + munmap(p, needed); + return 0; + } + g->mem = p; + g->mem->meta = g; + g->last_idx = 0; + g->freeable = 1; + g->sizeclass = 63; + g->maplen = (needed+4095)/4096; + g->avail_mask = g->freed_mask = 0; + // use a global counter to cycle offset in + // individually-mmapped allocations. + ctx.mmap_counter++; + idx = 0; + goto success; + } + + sc = size_to_class(n); + + rdlock(); + g = ctx.active[sc]; + + // use coarse size classes initially when there are not yet + // any groups of desired size. this allows counts of 2 or 3 + // to be allocated at first rather than having to start with + // 7 or 5, the min counts for even size classes. + if (!g && sc>=4 && sc<32 && sc!=6 && !(sc&1) && !ctx.usage_by_class[sc]) { + size_t usage = ctx.usage_by_class[sc|1]; + // if a new group may be allocated, count it toward + // usage in deciding if we can use coarse class. + if (!ctx.active[sc|1] || (!ctx.active[sc|1]->avail_mask + && !ctx.active[sc|1]->freed_mask)) + usage += 3; + if (usage <= 12) + sc |= 1; + g = ctx.active[sc]; + } + + for (;;) { + mask = g ? g->avail_mask : 0; + first = mask&-mask; + if (!first) break; + if (RDLOCK_IS_EXCLUSIVE || !MT) + g->avail_mask = mask-first; + else if (a_cas(&g->avail_mask, mask, mask-first)!=mask) + continue; + idx = a_ctz_32(first); + goto success; + } + upgradelock(); + + idx = alloc_slot(sc, n); + if (idx < 0) { + unlock(); + return 0; + } + g = ctx.active[sc]; + +success: + ctr = ctx.mmap_counter; + unlock(); + return enframe(g, idx, n, ctr); +} + +int is_allzero(void *p) +{ + struct meta *g = get_meta(p); + return g->sizeclass >= 48 || + get_stride(g) < UNIT*size_classes[g->sizeclass]; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc_usable_size.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc_usable_size.c new file mode 100644 index 000000000..a440a4eab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/malloc_usable_size.c @@ -0,0 +1,12 @@ +#include +#include "meta.h" + +size_t malloc_usable_size(void *p) +{ + struct meta *g = get_meta(p); + int idx = get_slot_index(p); + size_t stride = get_stride(g); + unsigned char *start = g->mem->storage + stride*idx; + unsigned char *end = start + stride - IB; + return get_nominal_size(p, end); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/meta.h b/vendor/modernc.org/libc/musl/src/malloc/mallocng/meta.h new file mode 100644 index 000000000..61ec53f9a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/meta.h @@ -0,0 +1,288 @@ +#ifndef MALLOC_META_H +#define MALLOC_META_H + +#include +#include +#include +#include "glue.h" + +__attribute__((__visibility__("hidden"))) +extern const uint16_t size_classes[]; + +#define MMAP_THRESHOLD 131052 + +#define UNIT 16 +#define IB 4 + +struct group { + struct meta *meta; + unsigned char active_idx:5; + char pad[UNIT - sizeof(struct meta *) - 1]; + unsigned char storage[]; +}; + +struct meta { + struct meta *prev, *next; + struct group *mem; + volatile int avail_mask, freed_mask; + uintptr_t last_idx:5; + uintptr_t freeable:1; + uintptr_t sizeclass:6; + uintptr_t maplen:8*sizeof(uintptr_t)-12; +}; + +struct meta_area { + uint64_t check; + struct meta_area *next; + int nslots; + struct meta slots[]; +}; + +struct malloc_context { + uint64_t secret; +#ifndef PAGESIZE + size_t pagesize; +#endif + int init_done; + unsigned mmap_counter; + struct meta *free_meta_head; + struct meta *avail_meta; + size_t avail_meta_count, avail_meta_area_count, meta_alloc_shift; + struct meta_area *meta_area_head, *meta_area_tail; + unsigned char *avail_meta_areas; + struct meta *active[48]; + size_t usage_by_class[48]; + uint8_t unmap_seq[32], bounces[32]; + uint8_t seq; + uintptr_t brk; +}; + +__attribute__((__visibility__("hidden"))) +extern struct malloc_context ctx; + +#ifdef PAGESIZE +#define PGSZ PAGESIZE +#else +#define PGSZ ctx.pagesize +#endif + +__attribute__((__visibility__("hidden"))) +struct meta *alloc_meta(void); + +__attribute__((__visibility__("hidden"))) +int is_allzero(void *); + +static inline void queue(struct meta **phead, struct meta *m) +{ + assert(!m->next); + assert(!m->prev); + if (*phead) { + struct meta *head = *phead; + m->next = head; + m->prev = head->prev; + m->next->prev = m->prev->next = m; + } else { + m->prev = m->next = m; + *phead = m; + } +} + +static inline void dequeue(struct meta **phead, struct meta *m) +{ + if (m->next != m) { + m->prev->next = m->next; + m->next->prev = m->prev; + if (*phead == m) *phead = m->next; + } else { + *phead = 0; + } + m->prev = m->next = 0; +} + +static inline struct meta *dequeue_head(struct meta **phead) +{ + struct meta *m = *phead; + if (m) dequeue(phead, m); + return m; +} + +static inline void free_meta(struct meta *m) +{ + *m = (struct meta){0}; + queue(&ctx.free_meta_head, m); +} + +static inline uint32_t activate_group(struct meta *m) +{ + assert(!m->avail_mask); + uint32_t mask, act = (2u<mem->active_idx)-1; + do mask = m->freed_mask; + while (a_cas(&m->freed_mask, mask, mask&~act)!=mask); + return m->avail_mask = mask & act; +} + +static inline int get_slot_index(const unsigned char *p) +{ + return p[-3] & 31; +} + +static inline struct meta *get_meta(const unsigned char *p) +{ + assert(!((uintptr_t)p & 15)); + int offset = *(const uint16_t *)(p - 2); + int index = get_slot_index(p); + if (p[-4]) { + assert(!offset); + offset = *(uint32_t *)(p - 8); + assert(offset > 0xffff); + } + const struct group *base = (const void *)(p - UNIT*offset - UNIT); + const struct meta *meta = base->meta; + assert(meta->mem == base); + assert(index <= meta->last_idx); + assert(!(meta->avail_mask & (1u<freed_mask & (1u<check == ctx.secret); + if (meta->sizeclass < 48) { + assert(offset >= size_classes[meta->sizeclass]*index); + assert(offset < size_classes[meta->sizeclass]*(index+1)); + } else { + assert(meta->sizeclass == 63); + } + if (meta->maplen) { + assert(offset <= meta->maplen*4096UL/UNIT - 1); + } + return (struct meta *)meta; +} + +static inline size_t get_nominal_size(const unsigned char *p, const unsigned char *end) +{ + size_t reserved = p[-3] >> 5; + if (reserved >= 5) { + assert(reserved == 5); + reserved = *(const uint32_t *)(end-4); + assert(reserved >= 5); + assert(!end[-5]); + } + assert(reserved <= end-p); + assert(!*(end-reserved)); + // also check the slot's overflow byte + assert(!*end); + return end-reserved-p; +} + +static inline size_t get_stride(const struct meta *g) +{ + if (!g->last_idx && g->maplen) { + return g->maplen*4096UL - UNIT; + } else { + return UNIT*size_classes[g->sizeclass]; + } +} + +static inline void set_size(unsigned char *p, unsigned char *end, size_t n) +{ + int reserved = end-p-n; + if (reserved) end[-reserved] = 0; + if (reserved >= 5) { + *(uint32_t *)(end-4) = reserved; + end[-5] = 0; + reserved = 5; + } + p[-3] = (p[-3]&31) + (reserved<<5); +} + +static inline void *enframe(struct meta *g, int idx, size_t n, int ctr) +{ + size_t stride = get_stride(g); + size_t slack = (stride-IB-n)/UNIT; + unsigned char *p = g->mem->storage + stride*idx; + unsigned char *end = p+stride-IB; + // cycle offset within slot to increase interval to address + // reuse, facilitate trapping double-free. + int off = (p[-3] ? *(uint16_t *)(p-2) + 1 : ctr) & 255; + assert(!p[-4]); + if (off > slack) { + size_t m = slack; + m |= m>>1; m |= m>>2; m |= m>>4; + off &= m; + if (off > slack) off -= slack+1; + assert(off <= slack); + } + if (off) { + // store offset in unused header at offset zero + // if enframing at non-zero offset. + *(uint16_t *)(p-2) = off; + p[-3] = 7<<5; + p += UNIT*off; + // for nonzero offset there is no permanent check + // byte, so make one. + p[-4] = 0; + } + *(uint16_t *)(p-2) = (size_t)(p-g->mem->storage)/UNIT; + p[-3] = idx; + set_size(p, end, n); + return p; +} + +static inline int size_to_class(size_t n) +{ + n = (n+IB-1)>>4; + if (n<10) return n; + n++; + int i = (28-a_clz_32(n))*4 + 8; + if (n>size_classes[i+1]) i+=2; + if (n>size_classes[i]) i++; + return i; +} + +static inline int size_overflows(size_t n) +{ + if (n >= SIZE_MAX/2 - 4096) { + errno = ENOMEM; + return 1; + } + return 0; +} + +static inline void step_seq(void) +{ + if (ctx.seq==255) { + for (int i=0; i<32; i++) ctx.unmap_seq[i] = 0; + ctx.seq = 1; + } else { + ctx.seq++; + } +} + +static inline void record_seq(int sc) +{ + if (sc-7U < 32) ctx.unmap_seq[sc-7] = ctx.seq; +} + +static inline void account_bounce(int sc) +{ + if (sc-7U < 32) { + int seq = ctx.unmap_seq[sc-7]; + if (seq && ctx.seq-seq < 10) { + if (ctx.bounces[sc-7]+1 < 100) + ctx.bounces[sc-7]++; + else + ctx.bounces[sc-7] = 150; + } + } +} + +static inline void decay_bounces(int sc) +{ + if (sc-7U < 32 && ctx.bounces[sc-7]) + ctx.bounces[sc-7]--; +} + +static inline int is_bouncing(int sc) +{ + return (sc-7U < 32 && ctx.bounces[sc-7] >= 100); +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/malloc/mallocng/realloc.c b/vendor/modernc.org/libc/musl/src/malloc/mallocng/realloc.c new file mode 100644 index 000000000..18769f42d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/mallocng/realloc.c @@ -0,0 +1,51 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "meta.h" + +void *realloc(void *p, size_t n) +{ + if (!p) return malloc(n); + if (size_overflows(n)) return 0; + + struct meta *g = get_meta(p); + int idx = get_slot_index(p); + size_t stride = get_stride(g); + unsigned char *start = g->mem->storage + stride*idx; + unsigned char *end = start + stride - IB; + size_t old_size = get_nominal_size(p, end); + size_t avail_size = end-(unsigned char *)p; + void *new; + + // only resize in-place if size class matches + if (n <= avail_size && n= g->sizeclass) { + set_size(p, end, n); + return p; + } + + // use mremap if old and new size are both mmap-worthy + if (g->sizeclass>=48 && n>=MMAP_THRESHOLD) { + assert(g->sizeclass==63); + size_t base = (unsigned char *)p-start; + size_t needed = (n + base + UNIT + IB + 4095) & -4096; + new = g->maplen*4096UL == needed ? g->mem : + mremap(g->mem, g->maplen*4096UL, needed, MREMAP_MAYMOVE); + if (new!=MAP_FAILED) { + g->mem = new; + g->maplen = needed/4096; + p = g->mem->storage + base; + end = g->mem->storage + (needed - UNIT) - IB; + *end = 0; + set_size(p, end, n); + return p; + } + } + + new = malloc(n); + if (!new) return 0; + memcpy(new, p, n < old_size ? n : old_size); + free(p); + return new; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/memalign.c b/vendor/modernc.org/libc/musl/src/malloc/memalign.c new file mode 100644 index 000000000..32cd87d81 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/memalign.c @@ -0,0 +1,7 @@ +#define _BSD_SOURCE +#include + +void *memalign(size_t align, size_t len) +{ + return aligned_alloc(align, len); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/aligned_alloc.c b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/aligned_alloc.c new file mode 100644 index 000000000..4adca3b4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/aligned_alloc.c @@ -0,0 +1,53 @@ +#include +#include +#include +#include "malloc_impl.h" + +void *aligned_alloc(size_t align, size_t len) +{ + unsigned char *mem, *new; + + if ((align & -align) != align) { + errno = EINVAL; + return 0; + } + + if (len > SIZE_MAX - align || + (__malloc_replaced && !__aligned_alloc_replaced)) { + errno = ENOMEM; + return 0; + } + + if (align <= SIZE_ALIGN) + return malloc(len); + + if (!(mem = malloc(len + align-1))) + return 0; + + new = (void *)((uintptr_t)mem + align-1 & -align); + if (new == mem) return mem; + + struct chunk *c = MEM_TO_CHUNK(mem); + struct chunk *n = MEM_TO_CHUNK(new); + + if (IS_MMAPPED(c)) { + /* Apply difference between aligned and original + * address to the "extra" field of mmapped chunk. */ + n->psize = c->psize + (new-mem); + n->csize = c->csize - (new-mem); + return new; + } + + struct chunk *t = NEXT_CHUNK(c); + + /* Split the allocated chunk into two chunks. The aligned part + * that will be used has the size in its footer reduced by the + * difference between the aligned and original addresses, and + * the resulting size copied to its header. A new header and + * footer are written for the split-off part to be freed. */ + n->psize = c->csize = C_INUSE | (new-mem); + n->csize = t->psize -= new-mem; + + __bin_chunk(c); + return new; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc.c b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc.c new file mode 100644 index 000000000..c0997ad85 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc.c @@ -0,0 +1,529 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "libc.h" +#include "atomic.h" +#include "pthread_impl.h" +#include "malloc_impl.h" + +#if defined(__GNUC__) && defined(__PIC__) +#define inline inline __attribute__((always_inline)) +#endif + +static struct { + volatile uint64_t binmap; + struct bin bins[64]; + volatile int split_merge_lock[2]; +} mal; + +/* Synchronization tools */ + +static inline void lock(volatile int *lk) +{ + int need_locks = libc.need_locks; + if (need_locks) { + while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1); + if (need_locks < 0) libc.need_locks = 0; + } +} + +static inline void unlock(volatile int *lk) +{ + if (lk[0]) { + a_store(lk, 0); + if (lk[1]) __wake(lk, 1, 1); + } +} + +static inline void lock_bin(int i) +{ + lock(mal.bins[i].lock); + if (!mal.bins[i].head) + mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i); +} + +static inline void unlock_bin(int i) +{ + unlock(mal.bins[i].lock); +} + +static int first_set(uint64_t x) +{ +#if 1 + return a_ctz_64(x); +#else + static const char debruijn64[64] = { + 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, + 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11, + 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10, + 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12 + }; + static const char debruijn32[32] = { + 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, + 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 + }; + if (sizeof(long) < 8) { + uint32_t y = x; + if (!y) { + y = x>>32; + return 32 + debruijn32[(y&-y)*0x076be629 >> 27]; + } + return debruijn32[(y&-y)*0x076be629 >> 27]; + } + return debruijn64[(x&-x)*0x022fdd63cc95386dull >> 58]; +#endif +} + +static const unsigned char bin_tab[60] = { + 32,33,34,35,36,36,37,37,38,38,39,39, + 40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43, + 44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45, + 46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47, +}; + +static int bin_index(size_t x) +{ + x = x / SIZE_ALIGN - 1; + if (x <= 32) return x; + if (x < 512) return bin_tab[x/8-4]; + if (x > 0x1c00) return 63; + return bin_tab[x/128-4] + 16; +} + +static int bin_index_up(size_t x) +{ + x = x / SIZE_ALIGN - 1; + if (x <= 32) return x; + x--; + if (x < 512) return bin_tab[x/8-4] + 1; + return bin_tab[x/128-4] + 17; +} + +#if 0 +void __dump_heap(int x) +{ + struct chunk *c; + int i; + for (c = (void *)mal.heap; CHUNK_SIZE(c); c = NEXT_CHUNK(c)) + fprintf(stderr, "base %p size %zu (%d) flags %d/%d\n", + c, CHUNK_SIZE(c), bin_index(CHUNK_SIZE(c)), + c->csize & 15, + NEXT_CHUNK(c)->psize & 15); + for (i=0; i<64; i++) { + if (mal.bins[i].head != BIN_TO_CHUNK(i) && mal.bins[i].head) { + fprintf(stderr, "bin %d: %p\n", i, mal.bins[i].head); + if (!(mal.binmap & 1ULL< len ? b-len : 0; + if (new>a && old len ? b-len : 0; + if (new>a && old SIZE_MAX/2 - PAGE_SIZE) { + errno = ENOMEM; + return 0; + } + n += -n & PAGE_SIZE-1; + + if (!brk) { + brk = __syscall(SYS_brk, 0); + brk += -brk & PAGE_SIZE-1; + } + + if (n < SIZE_MAX-brk && !traverses_stack_p(brk, brk+n) + && __syscall(SYS_brk, brk+n)==brk+n) { + *pn = n; + brk += n; + return (void *)(brk-n); + } + + size_t min = (size_t)PAGE_SIZE << mmap_step/2; + if (n < min) n = min; + void *area = __mmap(0, n, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (area == MAP_FAILED) return 0; + *pn = n; + mmap_step++; + return area; +} + +static struct chunk *expand_heap(size_t n) +{ + static void *end; + void *p; + struct chunk *w; + + /* The argument n already accounts for the caller's chunk + * overhead needs, but if the heap can't be extended in-place, + * we need room for an extra zero-sized sentinel chunk. */ + n += SIZE_ALIGN; + + p = __expand_heap(&n); + if (!p) return 0; + + /* If not just expanding existing space, we need to make a + * new sentinel chunk below the allocated space. */ + if (p != end) { + /* Valid/safe because of the prologue increment. */ + n -= SIZE_ALIGN; + p = (char *)p + SIZE_ALIGN; + w = MEM_TO_CHUNK(p); + w->psize = 0 | C_INUSE; + } + + /* Record new heap end and fill in footer. */ + end = (char *)p + n; + w = MEM_TO_CHUNK(end); + w->psize = n | C_INUSE; + w->csize = 0 | C_INUSE; + + /* Fill in header, which may be new or may be replacing a + * zero-size sentinel header at the old end-of-heap. */ + w = MEM_TO_CHUNK(p); + w->csize = n | C_INUSE; + + return w; +} + +static int adjust_size(size_t *n) +{ + /* Result of pointer difference must fit in ptrdiff_t. */ + if (*n-1 > PTRDIFF_MAX - SIZE_ALIGN - PAGE_SIZE) { + if (*n) { + errno = ENOMEM; + return -1; + } else { + *n = SIZE_ALIGN; + return 0; + } + } + *n = (*n + OVERHEAD + SIZE_ALIGN - 1) & SIZE_MASK; + return 0; +} + +static void unbin(struct chunk *c, int i) +{ + if (c->prev == c->next) + a_and_64(&mal.binmap, ~(1ULL<prev->next = c->next; + c->next->prev = c->prev; + c->csize |= C_INUSE; + NEXT_CHUNK(c)->psize |= C_INUSE; +} + +static void bin_chunk(struct chunk *self, int i) +{ + self->next = BIN_TO_CHUNK(i); + self->prev = mal.bins[i].tail; + self->next->prev = self; + self->prev->next = self; + if (self->prev == BIN_TO_CHUNK(i)) + a_or_64(&mal.binmap, 1ULL<= n1 - DONTCARE) return; + + next = NEXT_CHUNK(self); + split = (void *)((char *)self + n); + + split->psize = n | C_INUSE; + split->csize = n1-n; + next->psize = n1-n; + self->csize = n | C_INUSE; + + int i = bin_index(n1-n); + lock_bin(i); + + bin_chunk(split, i); + + unlock_bin(i); +} + +void *malloc(size_t n) +{ + struct chunk *c; + int i, j; + uint64_t mask; + + if (adjust_size(&n) < 0) return 0; + + if (n > MMAP_THRESHOLD) { + size_t len = n + OVERHEAD + PAGE_SIZE - 1 & -PAGE_SIZE; + char *base = __mmap(0, len, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (base == (void *)-1) return 0; + c = (void *)(base + SIZE_ALIGN - OVERHEAD); + c->csize = len - (SIZE_ALIGN - OVERHEAD); + c->psize = SIZE_ALIGN - OVERHEAD; + return CHUNK_TO_MEM(c); + } + + i = bin_index_up(n); + if (i<63 && (mal.binmap & (1ULL<psize; + char *base = (char *)self - extra; + size_t oldlen = n0 + extra; + size_t newlen = n + extra; + /* Crash on realloc of freed chunk */ + if (extra & 1) a_crash(); + if (newlen < PAGE_SIZE && (new = malloc(n-OVERHEAD))) { + n0 = n; + goto copy_free_ret; + } + newlen = (newlen + PAGE_SIZE-1) & -PAGE_SIZE; + if (oldlen == newlen) return p; + base = __mremap(base, oldlen, newlen, MREMAP_MAYMOVE); + if (base == (void *)-1) + goto copy_realloc; + self = (void *)(base + extra); + self->csize = newlen - extra; + return CHUNK_TO_MEM(self); + } + + next = NEXT_CHUNK(self); + + /* Crash on corrupted footer (likely from buffer overflow) */ + if (next->psize != self->csize) a_crash(); + + if (n < n0) { + int i = bin_index_up(n); + int j = bin_index(n0); + if (icsize = split->psize = n | C_INUSE; + split->csize = next->psize = n0-n | C_INUSE; + __bin_chunk(split); + return CHUNK_TO_MEM(self); + } + + lock(mal.split_merge_lock); + + size_t nsize = next->csize & C_INUSE ? 0 : CHUNK_SIZE(next); + if (n0+nsize >= n) { + int i = bin_index(nsize); + lock_bin(i); + if (!(next->csize & C_INUSE)) { + unbin(next, i); + unlock_bin(i); + next = NEXT_CHUNK(next); + self->csize = next->psize = n0+nsize | C_INUSE; + trim(self, n); + unlock(mal.split_merge_lock); + return CHUNK_TO_MEM(self); + } + unlock_bin(i); + } + unlock(mal.split_merge_lock); + +copy_realloc: + /* As a last resort, allocate a new chunk and copy to it. */ + new = malloc(n-OVERHEAD); + if (!new) return 0; +copy_free_ret: + memcpy(new, p, (npsize != self->csize) a_crash(); + + lock(mal.split_merge_lock); + + size_t osize = CHUNK_SIZE(self), size = osize; + + /* Since we hold split_merge_lock, only transition from free to + * in-use can race; in-use to free is impossible */ + size_t psize = self->psize & C_INUSE ? 0 : CHUNK_PSIZE(self); + size_t nsize = next->csize & C_INUSE ? 0 : CHUNK_SIZE(next); + + if (psize) { + int i = bin_index(psize); + lock_bin(i); + if (!(self->psize & C_INUSE)) { + struct chunk *prev = PREV_CHUNK(self); + unbin(prev, i); + self = prev; + size += psize; + } + unlock_bin(i); + } + if (nsize) { + int i = bin_index(nsize); + lock_bin(i); + if (!(next->csize & C_INUSE)) { + unbin(next, i); + next = NEXT_CHUNK(next); + size += nsize; + } + unlock_bin(i); + } + + int i = bin_index(size); + lock_bin(i); + + self->csize = size; + next->psize = size; + bin_chunk(self, i); + unlock(mal.split_merge_lock); + + /* Replace middle of large chunks with fresh zero pages */ + if (size > RECLAIM && (size^(size-osize)) > size-osize) { + uintptr_t a = (uintptr_t)self + SIZE_ALIGN+PAGE_SIZE-1 & -PAGE_SIZE; + uintptr_t b = (uintptr_t)next - SIZE_ALIGN & -PAGE_SIZE; +#if 1 + __madvise((void *)a, b-a, MADV_DONTNEED); +#else + __mmap((void *)a, b-a, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0); +#endif + } + + unlock_bin(i); +} + +static void unmap_chunk(struct chunk *self) +{ + size_t extra = self->psize; + char *base = (char *)self - extra; + size_t len = CHUNK_SIZE(self) + extra; + /* Crash on double free */ + if (extra & 1) a_crash(); + __munmap(base, len); +} + +void free(void *p) +{ + if (!p) return; + + struct chunk *self = MEM_TO_CHUNK(p); + + if (IS_MMAPPED(self)) + unmap_chunk(self); + else + __bin_chunk(self); +} + +void __malloc_donate(char *start, char *end) +{ + size_t align_start_up = (SIZE_ALIGN-1) & (-(uintptr_t)start - OVERHEAD); + size_t align_end_down = (SIZE_ALIGN-1) & (uintptr_t)end; + + /* Getting past this condition ensures that the padding for alignment + * and header overhead will not overflow and will leave a nonzero + * multiple of SIZE_ALIGN bytes between start and end. */ + if (end - start <= OVERHEAD + align_start_up + align_end_down) + return; + start += align_start_up + OVERHEAD; + end -= align_end_down; + + struct chunk *c = MEM_TO_CHUNK(start), *n = MEM_TO_CHUNK(end); + c->psize = n->csize = C_INUSE; + c->csize = n->psize = C_INUSE | (end-start); + __bin_chunk(c); +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_impl.h b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_impl.h new file mode 100644 index 000000000..e1cf4774c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_impl.h @@ -0,0 +1,39 @@ +#ifndef MALLOC_IMPL_H +#define MALLOC_IMPL_H + +#include +#include "dynlink.h" + +struct chunk { + size_t psize, csize; + struct chunk *next, *prev; +}; + +struct bin { + volatile int lock[2]; + struct chunk *head; + struct chunk *tail; +}; + +#define SIZE_ALIGN (4*sizeof(size_t)) +#define SIZE_MASK (-SIZE_ALIGN) +#define OVERHEAD (2*sizeof(size_t)) +#define MMAP_THRESHOLD (0x1c00*SIZE_ALIGN) +#define DONTCARE 16 +#define RECLAIM 163840 + +#define CHUNK_SIZE(c) ((c)->csize & -2) +#define CHUNK_PSIZE(c) ((c)->psize & -2) +#define PREV_CHUNK(c) ((struct chunk *)((char *)(c) - CHUNK_PSIZE(c))) +#define NEXT_CHUNK(c) ((struct chunk *)((char *)(c) + CHUNK_SIZE(c))) +#define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD) +#define CHUNK_TO_MEM(c) (void *)((char *)(c) + OVERHEAD) +#define BIN_TO_CHUNK(i) (MEM_TO_CHUNK(&mal.bins[i].head)) + +#define C_INUSE ((size_t)1) + +#define IS_MMAPPED(c) !((c)->csize & (C_INUSE)) + +hidden void __bin_chunk(struct chunk *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c new file mode 100644 index 000000000..672b518ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/oldmalloc/malloc_usable_size.c @@ -0,0 +1,9 @@ +#include +#include "malloc_impl.h" + +hidden void *(*const __realloc_dep)(void *, size_t) = realloc; + +size_t malloc_usable_size(void *p) +{ + return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/posix_memalign.c b/vendor/modernc.org/libc/musl/src/malloc/posix_memalign.c new file mode 100644 index 000000000..ad4d8f473 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/posix_memalign.c @@ -0,0 +1,11 @@ +#include +#include + +int posix_memalign(void **res, size_t align, size_t len) +{ + if (align < sizeof(void *)) return EINVAL; + void *mem = aligned_alloc(align, len); + if (!mem) return errno; + *res = mem; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/malloc/replaced.c b/vendor/modernc.org/libc/musl/src/malloc/replaced.c new file mode 100644 index 000000000..07fce61ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/malloc/replaced.c @@ -0,0 +1,4 @@ +#include "dynlink.h" + +int __malloc_replaced; +int __aligned_alloc_replaced; diff --git a/vendor/modernc.org/libc/musl/src/math/__cos.c b/vendor/modernc.org/libc/musl/src/math/__cos.c new file mode 100644 index 000000000..46cefb381 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__cos.c @@ -0,0 +1,71 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_cos.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * __cos( x, y ) + * kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * + * Algorithm + * 1. Since cos(-x) = cos(x), we need only to consider positive x. + * 2. if x < 2^-27 (hx<0x3e400000 0), return 1 with inexact if x!=0. + * 3. cos(x) is approximated by a polynomial of degree 14 on + * [0,pi/4] + * 4 14 + * cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x + * where the remez error is + * + * | 2 4 6 8 10 12 14 | -58 + * |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2 + * | | + * + * 4 6 8 10 12 14 + * 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then + * cos(x) ~ 1 - x*x/2 + r + * since cos(x+y) ~ cos(x) - sin(x)*y + * ~ cos(x) - x*y, + * a correction term is necessary in cos(x) and hence + * cos(x+y) = 1 - (x*x/2 - (r - x*y)) + * For better accuracy, rearrange to + * cos(x+y) ~ w + (tmp + (r-x*y)) + * where w = 1 - x*x/2 and tmp is a tiny correction term + * (1 - x*x/2 == w + tmp exactly in infinite precision). + * The exactness of w + tmp in infinite precision depends on w + * and tmp having the same precision as x. If they have extra + * precision due to compiler bugs, then the extra precision is + * only good provided it is retained in all terms of the final + * expression for cos(). Retention happens in all cases tested + * under FreeBSD, so don't pessimize things by forcibly clipping + * any extra precision in w. + */ + +#include "libm.h" + +static const double +C1 = 4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */ +C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ +C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ +C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ +C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ +C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ + +double __cos(double x, double y) +{ + double_t hz,z,r,w; + + z = x*x; + w = z*z; + r = z*(C1+z*(C2+z*C3)) + w*w*(C4+z*(C5+z*C6)); + hz = 0.5*z; + w = 1.0-hz; + return w + (((1.0-w)-hz) + (z*r-x*y)); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__cosdf.c b/vendor/modernc.org/libc/musl/src/math/__cosdf.c new file mode 100644 index 000000000..2124989b3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__cosdf.c @@ -0,0 +1,35 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_cosf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Debugged and optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */ +static const double +C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */ +C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */ +C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */ +C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */ + +float __cosdf(double x) +{ + double_t r, w, z; + + /* Try to optimize for parallel evaluation as in __tandf.c. */ + z = x*x; + w = z*z; + r = C2+z*C3; + return ((1.0+z*C0) + w*C1) + (w*z)*r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__cosl.c b/vendor/modernc.org/libc/musl/src/math/__cosl.c new file mode 100644 index 000000000..fa522ddd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__cosl.c @@ -0,0 +1,96 @@ +/* origin: FreeBSD /usr/src/lib/msun/ld80/k_cosl.c */ +/* origin: FreeBSD /usr/src/lib/msun/ld128/k_cosl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + + +#include "libm.h" + +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#if LDBL_MANT_DIG == 64 +/* + * ld80 version of __cos.c. See __cos.c for most comments. + */ +/* + * Domain [-0.7854, 0.7854], range ~[-2.43e-23, 2.425e-23]: + * |cos(x) - c(x)| < 2**-75.1 + * + * The coefficients of c(x) were generated by a pari-gp script using + * a Remez algorithm that searches for the best higher coefficients + * after rounding leading coefficients to a specified precision. + * + * Simpler methods like Chebyshev or basic Remez barely suffice for + * cos() in 64-bit precision, because we want the coefficient of x^2 + * to be precisely -0.5 so that multiplying by it is exact, and plain + * rounding of the coefficients of a good polynomial approximation only + * gives this up to about 64-bit precision. Plain rounding also gives + * a mediocre approximation for the coefficient of x^4, but a rounding + * error of 0.5 ulps for this coefficient would only contribute ~0.01 + * ulps to the final error, so this is unimportant. Rounding errors in + * higher coefficients are even less important. + * + * In fact, coefficients above the x^4 one only need to have 53-bit + * precision, and this is more efficient. We get this optimization + * almost for free from the complications needed to search for the best + * higher coefficients. + */ +static const long double +C1 = 0.0416666666666666666136L; /* 0xaaaaaaaaaaaaaa9b.0p-68 */ +static const double +C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */ +C3 = 0.000024801587301571716, /* 0x1a01a01a018e22.0p-68 */ +C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */ +C5 = 0.0000000020876754400407278, /* 0x11eed8caaeccf1.0p-81 */ +C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */ +C7 = 4.7383039476436467e-14; /* 0x1aac9d9af5c43e.0p-97 */ +#define POLY(z) (z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*C7))))))) +#elif LDBL_MANT_DIG == 113 +/* + * ld128 version of __cos.c. See __cos.c for most comments. + */ +/* + * Domain [-0.7854, 0.7854], range ~[-1.80e-37, 1.79e-37]: + * |cos(x) - c(x))| < 2**-122.0 + * + * 113-bit precision requires more care than 64-bit precision, since + * simple methods give a minimax polynomial with coefficient for x^2 + * that is 1 ulp below 0.5, but we want it to be precisely 0.5. See + * above for more details. + */ +static const long double +C1 = 0.04166666666666666666666666666666658424671L, +C2 = -0.001388888888888888888888888888863490893732L, +C3 = 0.00002480158730158730158730158600795304914210L, +C4 = -0.2755731922398589065255474947078934284324e-6L, +C5 = 0.2087675698786809897659225313136400793948e-8L, +C6 = -0.1147074559772972315817149986812031204775e-10L, +C7 = 0.4779477332386808976875457937252120293400e-13L; +static const double +C8 = -0.1561920696721507929516718307820958119868e-15, +C9 = 0.4110317413744594971475941557607804508039e-18, +C10 = -0.8896592467191938803288521958313920156409e-21, +C11 = 0.1601061435794535138244346256065192782581e-23; +#define POLY(z) (z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*(C7+ \ + z*(C8+z*(C9+z*(C10+z*C11))))))))))) +#endif + +long double __cosl(long double x, long double y) +{ + long double hz,z,r,w; + + z = x*x; + r = POLY(z); + hz = 0.5*z; + w = 1.0-hz; + return w + (((1.0-w)-hz) + (z*r-x*y)); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__expo2.c b/vendor/modernc.org/libc/musl/src/math/__expo2.c new file mode 100644 index 000000000..248f052b9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__expo2.c @@ -0,0 +1,17 @@ +#include "libm.h" + +/* k is such that k*ln2 has minimal relative error and x - kln2 > log(DBL_MIN) */ +static const int k = 2043; +static const double kln2 = 0x1.62066151add8bp+10; + +/* exp(x)/2 for x >= log(DBL_MAX), slightly better than 0.5*exp(x/2)*exp(x/2) */ +double __expo2(double x, double sign) +{ + double scale; + + /* note that k is odd and scale*scale overflows */ + INSERT_WORDS(scale, (uint32_t)(0x3ff + k/2) << 20, 0); + /* exp(x - k ln2) * 2**(k-1) */ + /* in directed rounding correct sign before rounding or overflow is important */ + return exp(x - kln2) * (sign * scale) * scale; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__expo2f.c b/vendor/modernc.org/libc/musl/src/math/__expo2f.c new file mode 100644 index 000000000..538eb09c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__expo2f.c @@ -0,0 +1,17 @@ +#include "libm.h" + +/* k is such that k*ln2 has minimal relative error and x - kln2 > log(FLT_MIN) */ +static const int k = 235; +static const float kln2 = 0x1.45c778p+7f; + +/* expf(x)/2 for x >= log(FLT_MAX), slightly better than 0.5f*expf(x/2)*expf(x/2) */ +float __expo2f(float x, float sign) +{ + float scale; + + /* note that k is odd and scale*scale overflows */ + SET_FLOAT_WORD(scale, (uint32_t)(0x7f + k/2) << 23); + /* exp(x - k ln2) * 2**(k-1) */ + /* in directed rounding correct sign before rounding or overflow is important */ + return expf(x - kln2) * (sign * scale) * scale; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__fpclassify.c b/vendor/modernc.org/libc/musl/src/math/__fpclassify.c new file mode 100644 index 000000000..f7c0e2dfa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__fpclassify.c @@ -0,0 +1,11 @@ +#include +#include + +int __fpclassify(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = u.i>>52 & 0x7ff; + if (!e) return u.i<<1 ? FP_SUBNORMAL : FP_ZERO; + if (e==0x7ff) return u.i<<12 ? FP_NAN : FP_INFINITE; + return FP_NORMAL; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__fpclassifyf.c b/vendor/modernc.org/libc/musl/src/math/__fpclassifyf.c new file mode 100644 index 000000000..fd00eb1bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__fpclassifyf.c @@ -0,0 +1,11 @@ +#include +#include + +int __fpclassifyf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = u.i>>23 & 0xff; + if (!e) return u.i<<1 ? FP_SUBNORMAL : FP_ZERO; + if (e==0xff) return u.i<<9 ? FP_NAN : FP_INFINITE; + return FP_NORMAL; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__fpclassifyl.c b/vendor/modernc.org/libc/musl/src/math/__fpclassifyl.c new file mode 100644 index 000000000..e41781b68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__fpclassifyl.c @@ -0,0 +1,42 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +int __fpclassifyl(long double x) +{ + return __fpclassify(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +int __fpclassifyl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + int msb = u.i.m>>63; + if (!e && !msb) + return u.i.m ? FP_SUBNORMAL : FP_ZERO; + if (e == 0x7fff) { + /* The x86 variant of 80-bit extended precision only admits + * one representation of each infinity, with the mantissa msb + * necessarily set. The version with it clear is invalid/nan. + * The m68k variant, however, allows either, and tooling uses + * the version with it clear. */ + if (__BYTE_ORDER == __LITTLE_ENDIAN && !msb) + return FP_NAN; + return u.i.m << 1 ? FP_NAN : FP_INFINITE; + } + if (!msb) + return FP_NAN; + return FP_NORMAL; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +int __fpclassifyl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + u.i.se = 0; + if (!e) + return u.i2.lo | u.i2.hi ? FP_SUBNORMAL : FP_ZERO; + if (e == 0x7fff) + return u.i2.lo | u.i2.hi ? FP_NAN : FP_INFINITE; + return FP_NORMAL; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__invtrigl.c b/vendor/modernc.org/libc/musl/src/math/__invtrigl.c new file mode 100644 index 000000000..48f83aaf8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__invtrigl.c @@ -0,0 +1,63 @@ +#include +#include "__invtrigl.h" + +#if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +static const long double +pS0 = 1.66666666666666666631e-01L, +pS1 = -4.16313987993683104320e-01L, +pS2 = 3.69068046323246813704e-01L, +pS3 = -1.36213932016738603108e-01L, +pS4 = 1.78324189708471965733e-02L, +pS5 = -2.19216428382605211588e-04L, +pS6 = -7.10526623669075243183e-06L, +qS1 = -2.94788392796209867269e+00L, +qS2 = 3.27309890266528636716e+00L, +qS3 = -1.68285799854822427013e+00L, +qS4 = 3.90699412641738801874e-01L, +qS5 = -3.14365703596053263322e-02L; + +const long double pio2_hi = 1.57079632679489661926L; +const long double pio2_lo = -2.50827880633416601173e-20L; + +/* used in asinl() and acosl() */ +/* R(x^2) is a rational approximation of (asin(x)-x)/x^3 with Remez algorithm */ +long double __invtrigl_R(long double z) +{ + long double p, q; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*(pS5+z*pS6)))))); + q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*qS5)))); + return p/q; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +static const long double +pS0 = 1.66666666666666666666666666666700314e-01L, +pS1 = -7.32816946414566252574527475428622708e-01L, +pS2 = 1.34215708714992334609030036562143589e+00L, +pS3 = -1.32483151677116409805070261790752040e+00L, +pS4 = 7.61206183613632558824485341162121989e-01L, +pS5 = -2.56165783329023486777386833928147375e-01L, +pS6 = 4.80718586374448793411019434585413855e-02L, +pS7 = -4.42523267167024279410230886239774718e-03L, +pS8 = 1.44551535183911458253205638280410064e-04L, +pS9 = -2.10558957916600254061591040482706179e-07L, +qS1 = -4.84690167848739751544716485245697428e+00L, +qS2 = 9.96619113536172610135016921140206980e+00L, +qS3 = -1.13177895428973036660836798461641458e+01L, +qS4 = 7.74004374389488266169304117714658761e+00L, +qS5 = -3.25871986053534084709023539900339905e+00L, +qS6 = 8.27830318881232209752469022352928864e-01L, +qS7 = -1.18768052702942805423330715206348004e-01L, +qS8 = 8.32600764660522313269101537926539470e-03L, +qS9 = -1.99407384882605586705979504567947007e-04L; + +const long double pio2_hi = 1.57079632679489661923132169163975140L; +const long double pio2_lo = 4.33590506506189051239852201302167613e-35L; + +long double __invtrigl_R(long double z) +{ + long double p, q; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*(pS5+z*(pS6+z*(pS7+z*(pS8+z*pS9))))))))); + q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*(qS5+z*(qS6+z*(qS7+z*(qS8+z*qS9)))))))); + return p/q; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__invtrigl.h b/vendor/modernc.org/libc/musl/src/math/__invtrigl.h new file mode 100644 index 000000000..bee793172 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__invtrigl.h @@ -0,0 +1,8 @@ +#include + +/* shared by acosl, asinl and atan2l */ +#define pio2_hi __pio2_hi +#define pio2_lo __pio2_lo +hidden extern const long double pio2_hi, pio2_lo; + +hidden long double __invtrigl_R(long double z); diff --git a/vendor/modernc.org/libc/musl/src/math/__math_divzero.c b/vendor/modernc.org/libc/musl/src/math/__math_divzero.c new file mode 100644 index 000000000..59d213500 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_divzero.c @@ -0,0 +1,6 @@ +#include "libm.h" + +double __math_divzero(uint32_t sign) +{ + return fp_barrier(sign ? -1.0 : 1.0) / 0.0; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_divzerof.c b/vendor/modernc.org/libc/musl/src/math/__math_divzerof.c new file mode 100644 index 000000000..ce046f3e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_divzerof.c @@ -0,0 +1,6 @@ +#include "libm.h" + +float __math_divzerof(uint32_t sign) +{ + return fp_barrierf(sign ? -1.0f : 1.0f) / 0.0f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_invalid.c b/vendor/modernc.org/libc/musl/src/math/__math_invalid.c new file mode 100644 index 000000000..177404900 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_invalid.c @@ -0,0 +1,6 @@ +#include "libm.h" + +double __math_invalid(double x) +{ + return (x - x) / (x - x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_invalidf.c b/vendor/modernc.org/libc/musl/src/math/__math_invalidf.c new file mode 100644 index 000000000..357d4b121 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_invalidf.c @@ -0,0 +1,6 @@ +#include "libm.h" + +float __math_invalidf(float x) +{ + return (x - x) / (x - x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_oflow.c b/vendor/modernc.org/libc/musl/src/math/__math_oflow.c new file mode 100644 index 000000000..c85dbf982 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_oflow.c @@ -0,0 +1,6 @@ +#include "libm.h" + +double __math_oflow(uint32_t sign) +{ + return __math_xflow(sign, 0x1p769); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_oflowf.c b/vendor/modernc.org/libc/musl/src/math/__math_oflowf.c new file mode 100644 index 000000000..fa7d06208 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_oflowf.c @@ -0,0 +1,6 @@ +#include "libm.h" + +float __math_oflowf(uint32_t sign) +{ + return __math_xflowf(sign, 0x1p97f); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_uflow.c b/vendor/modernc.org/libc/musl/src/math/__math_uflow.c new file mode 100644 index 000000000..b90594aee --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_uflow.c @@ -0,0 +1,6 @@ +#include "libm.h" + +double __math_uflow(uint32_t sign) +{ + return __math_xflow(sign, 0x1p-767); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_uflowf.c b/vendor/modernc.org/libc/musl/src/math/__math_uflowf.c new file mode 100644 index 000000000..94d50f2bf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_uflowf.c @@ -0,0 +1,6 @@ +#include "libm.h" + +float __math_uflowf(uint32_t sign) +{ + return __math_xflowf(sign, 0x1p-95f); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_xflow.c b/vendor/modernc.org/libc/musl/src/math/__math_xflow.c new file mode 100644 index 000000000..744203c4c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_xflow.c @@ -0,0 +1,6 @@ +#include "libm.h" + +double __math_xflow(uint32_t sign, double y) +{ + return eval_as_double(fp_barrier(sign ? -y : y) * y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__math_xflowf.c b/vendor/modernc.org/libc/musl/src/math/__math_xflowf.c new file mode 100644 index 000000000..f2c84784f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__math_xflowf.c @@ -0,0 +1,6 @@ +#include "libm.h" + +float __math_xflowf(uint32_t sign, float y) +{ + return eval_as_float(fp_barrierf(sign ? -y : y) * y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__polevll.c b/vendor/modernc.org/libc/musl/src/math/__polevll.c new file mode 100644 index 000000000..ce1a84046 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__polevll.c @@ -0,0 +1,93 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/polevll.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Evaluate polynomial + * + * + * SYNOPSIS: + * + * int N; + * long double x, y, coef[N+1], polevl[]; + * + * y = polevll( x, coef, N ); + * + * + * DESCRIPTION: + * + * Evaluates polynomial of degree N: + * + * 2 N + * y = C + C x + C x +...+ C x + * 0 1 2 N + * + * Coefficients are stored in reverse order: + * + * coef[0] = C , ..., coef[N] = C . + * N 0 + * + * The function p1evll() assumes that coef[N] = 1.0 and is + * omitted from the array. Its calling arguments are + * otherwise the same as polevll(). + * + * + * SPEED: + * + * In the interest of speed, there are no checks for out + * of bounds arithmetic. This routine is used by most of + * the functions in the library. Depending on available + * equipment features, the user may wish to rewrite the + * program in microcode or assembly language. + * + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +#else +/* + * Polynomial evaluator: + * P[0] x^n + P[1] x^(n-1) + ... + P[n] + */ +long double __polevll(long double x, const long double *P, int n) +{ + long double y; + + y = *P++; + do { + y = y * x + *P++; + } while (--n); + + return y; +} + +/* + * Polynomial evaluator: + * x^n + P[0] x^(n-1) + P[1] x^(n-2) + ... + P[n] + */ +long double __p1evll(long double x, const long double *P, int n) +{ + long double y; + + n -= 1; + y = x + *P++; + do { + y = y * x + *P++; + } while (--n); + + return y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__rem_pio2.c b/vendor/modernc.org/libc/musl/src/math/__rem_pio2.c new file mode 100644 index 000000000..dcf672fbd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__rem_pio2.c @@ -0,0 +1,190 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_rem_pio2.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * Optimized by Bruce D. Evans. + */ +/* __rem_pio2(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __rem_pio2_large() for large x + */ + +#include "libm.h" + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif + +/* + * invpio2: 53 bits of 2/pi + * pio2_1: first 33 bit of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 33 bit of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 33 bit of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ +static const double +toint = 1.5/EPS, +pio4 = 0x1.921fb54442d18p-1, +invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ +pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ +pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ +pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ +pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */ +pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */ +pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */ + +/* caller must handle the case when reduction is not needed: |x| ~<= pi/4 */ +int __rem_pio2(double x, double *y) +{ + union {double f; uint64_t i;} u = {x}; + double_t z,w,t,r,fn; + double tx[3],ty[2]; + uint32_t ix; + int sign, n, ex, ey, i; + + sign = u.i>>63; + ix = u.i>>32 & 0x7fffffff; + if (ix <= 0x400f6a7a) { /* |x| ~<= 5pi/4 */ + if ((ix & 0xfffff) == 0x921fb) /* |x| ~= pi/2 or 2pi/2 */ + goto medium; /* cancellation -- use medium case */ + if (ix <= 0x4002d97c) { /* |x| ~<= 3pi/4 */ + if (!sign) { + z = x - pio2_1; /* one round good to 85 bits */ + y[0] = z - pio2_1t; + y[1] = (z-y[0]) - pio2_1t; + return 1; + } else { + z = x + pio2_1; + y[0] = z + pio2_1t; + y[1] = (z-y[0]) + pio2_1t; + return -1; + } + } else { + if (!sign) { + z = x - 2*pio2_1; + y[0] = z - 2*pio2_1t; + y[1] = (z-y[0]) - 2*pio2_1t; + return 2; + } else { + z = x + 2*pio2_1; + y[0] = z + 2*pio2_1t; + y[1] = (z-y[0]) + 2*pio2_1t; + return -2; + } + } + } + if (ix <= 0x401c463b) { /* |x| ~<= 9pi/4 */ + if (ix <= 0x4015fdbc) { /* |x| ~<= 7pi/4 */ + if (ix == 0x4012d97c) /* |x| ~= 3pi/2 */ + goto medium; + if (!sign) { + z = x - 3*pio2_1; + y[0] = z - 3*pio2_1t; + y[1] = (z-y[0]) - 3*pio2_1t; + return 3; + } else { + z = x + 3*pio2_1; + y[0] = z + 3*pio2_1t; + y[1] = (z-y[0]) + 3*pio2_1t; + return -3; + } + } else { + if (ix == 0x401921fb) /* |x| ~= 4pi/2 */ + goto medium; + if (!sign) { + z = x - 4*pio2_1; + y[0] = z - 4*pio2_1t; + y[1] = (z-y[0]) - 4*pio2_1t; + return 4; + } else { + z = x + 4*pio2_1; + y[0] = z + 4*pio2_1t; + y[1] = (z-y[0]) + 4*pio2_1t; + return -4; + } + } + } + if (ix < 0x413921fb) { /* |x| ~< 2^20*(pi/2), medium size */ +medium: + /* rint(x/(pi/2)) */ + fn = (double_t)x*invpio2 + toint - toint; + n = (int32_t)fn; + r = x - fn*pio2_1; + w = fn*pio2_1t; /* 1st round, good to 85 bits */ + /* Matters with directed rounding. */ + if (predict_false(r - w < -pio4)) { + n--; + fn--; + r = x - fn*pio2_1; + w = fn*pio2_1t; + } else if (predict_false(r - w > pio4)) { + n++; + fn++; + r = x - fn*pio2_1; + w = fn*pio2_1t; + } + y[0] = r - w; + u.f = y[0]; + ey = u.i>>52 & 0x7ff; + ex = ix>>20; + if (ex - ey > 16) { /* 2nd round, good to 118 bits */ + t = r; + w = fn*pio2_2; + r = t - w; + w = fn*pio2_2t - ((t-r)-w); + y[0] = r - w; + u.f = y[0]; + ey = u.i>>52 & 0x7ff; + if (ex - ey > 49) { /* 3rd round, good to 151 bits, covers all cases */ + t = r; + w = fn*pio2_3; + r = t - w; + w = fn*pio2_3t - ((t-r)-w); + y[0] = r - w; + } + } + y[1] = (r - y[0]) - w; + return n; + } + /* + * all other (large) arguments + */ + if (ix >= 0x7ff00000) { /* x is inf or NaN */ + y[0] = y[1] = x - x; + return 0; + } + /* set z = scalbn(|x|,-ilogb(x)+23) */ + u.f = x; + u.i &= (uint64_t)-1>>12; + u.i |= (uint64_t)(0x3ff + 23)<<52; + z = u.f; + for (i=0; i < 2; i++) { + tx[i] = (double)(int32_t)z; + z = (z-tx[i])*0x1p24; + } + tx[i] = z; + /* skip zero terms, first term is non-zero */ + while (tx[i] == 0.0) + i--; + n = __rem_pio2_large(tx,ty,(int)(ix>>20)-(0x3ff+23),i+1,1); + if (sign) { + y[0] = -ty[0]; + y[1] = -ty[1]; + return -n; + } + y[0] = ty[0]; + y[1] = ty[1]; + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__rem_pio2_large.c b/vendor/modernc.org/libc/musl/src/math/__rem_pio2_large.c new file mode 100644 index 000000000..958f28c25 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__rem_pio2_large.c @@ -0,0 +1,442 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_rem_pio2.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * __rem_pio2_large(x,y,e0,nx,prec) + * double x[],y[]; int e0,nx,prec; + * + * __rem_pio2_large return the last three digits of N with + * y = x - N*pi/2 + * so that |y| < pi/2. + * + * The method is to compute the integer (mod 8) and fraction parts of + * (2/pi)*x without doing the full multiplication. In general we + * skip the part of the product that are known to be a huge integer ( + * more accurately, = 0 mod 8 ). Thus the number of operations are + * independent of the exponent of the input. + * + * (2/pi) is represented by an array of 24-bit integers in ipio2[]. + * + * Input parameters: + * x[] The input value (must be positive) is broken into nx + * pieces of 24-bit integers in double precision format. + * x[i] will be the i-th 24 bit of x. The scaled exponent + * of x[0] is given in input parameter e0 (i.e., x[0]*2^e0 + * match x's up to 24 bits. + * + * Example of breaking a double positive z into x[0]+x[1]+x[2]: + * e0 = ilogb(z)-23 + * z = scalbn(z,-e0) + * for i = 0,1,2 + * x[i] = floor(z) + * z = (z-x[i])*2**24 + * + * + * y[] ouput result in an array of double precision numbers. + * The dimension of y[] is: + * 24-bit precision 1 + * 53-bit precision 2 + * 64-bit precision 2 + * 113-bit precision 3 + * The actual value is the sum of them. Thus for 113-bit + * precison, one may have to do something like: + * + * long double t,w,r_head, r_tail; + * t = (long double)y[2] + (long double)y[1]; + * w = (long double)y[0]; + * r_head = t+w; + * r_tail = w - (r_head - t); + * + * e0 The exponent of x[0]. Must be <= 16360 or you need to + * expand the ipio2 table. + * + * nx dimension of x[] + * + * prec an integer indicating the precision: + * 0 24 bits (single) + * 1 53 bits (double) + * 2 64 bits (extended) + * 3 113 bits (quad) + * + * External function: + * double scalbn(), floor(); + * + * + * Here is the description of some local variables: + * + * jk jk+1 is the initial number of terms of ipio2[] needed + * in the computation. The minimum and recommended value + * for jk is 3,4,4,6 for single, double, extended, and quad. + * jk+1 must be 2 larger than you might expect so that our + * recomputation test works. (Up to 24 bits in the integer + * part (the 24 bits of it that we compute) and 23 bits in + * the fraction part may be lost to cancelation before we + * recompute.) + * + * jz local integer variable indicating the number of + * terms of ipio2[] used. + * + * jx nx - 1 + * + * jv index for pointing to the suitable ipio2[] for the + * computation. In general, we want + * ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8 + * is an integer. Thus + * e0-3-24*jv >= 0 or (e0-3)/24 >= jv + * Hence jv = max(0,(e0-3)/24). + * + * jp jp+1 is the number of terms in PIo2[] needed, jp = jk. + * + * q[] double array with integral value, representing the + * 24-bits chunk of the product of x and 2/pi. + * + * q0 the corresponding exponent of q[0]. Note that the + * exponent for q[i] would be q0-24*i. + * + * PIo2[] double precision array, obtained by cutting pi/2 + * into 24 bits chunks. + * + * f[] ipio2[] in floating point + * + * iq[] integer array by breaking up q[] in 24-bits chunk. + * + * fq[] final product of x*(2/pi) in fq[0],..,fq[jk] + * + * ih integer. If >0 it indicates q[] is >= 0.5, hence + * it also indicates the *sign* of the result. + * + */ +/* + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "libm.h" + +static const int init_jk[] = {3,4,4,6}; /* initial value for jk */ + +/* + * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi + * + * integer array, contains the (24*i)-th to (24*i+23)-th + * bit of 2/pi after binary point. The corresponding + * floating value is + * + * ipio2[i] * 2^(-24(i+1)). + * + * NB: This table must have at least (e0-3)/24 + jk terms. + * For quad precision (e0 <= 16360, jk = 6), this is 686. + */ +static const int32_t ipio2[] = { +0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, +0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, +0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, +0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41, +0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8, +0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF, +0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, +0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08, +0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3, +0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, +0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B, + +#if LDBL_MAX_EXP > 1024 +0x47C419, 0xC367CD, 0xDCE809, 0x2A8359, 0xC4768B, 0x961CA6, +0xDDAF44, 0xD15719, 0x053EA5, 0xFF0705, 0x3F7E33, 0xE832C2, +0xDE4F98, 0x327DBB, 0xC33D26, 0xEF6B1E, 0x5EF89F, 0x3A1F35, +0xCAF27F, 0x1D87F1, 0x21907C, 0x7C246A, 0xFA6ED5, 0x772D30, +0x433B15, 0xC614B5, 0x9D19C3, 0xC2C4AD, 0x414D2C, 0x5D000C, +0x467D86, 0x2D71E3, 0x9AC69B, 0x006233, 0x7CD2B4, 0x97A7B4, +0xD55537, 0xF63ED7, 0x1810A3, 0xFC764D, 0x2A9D64, 0xABD770, +0xF87C63, 0x57B07A, 0xE71517, 0x5649C0, 0xD9D63B, 0x3884A7, +0xCB2324, 0x778AD6, 0x23545A, 0xB91F00, 0x1B0AF1, 0xDFCE19, +0xFF319F, 0x6A1E66, 0x615799, 0x47FBAC, 0xD87F7E, 0xB76522, +0x89E832, 0x60BFE6, 0xCDC4EF, 0x09366C, 0xD43F5D, 0xD7DE16, +0xDE3B58, 0x929BDE, 0x2822D2, 0xE88628, 0x4D58E2, 0x32CAC6, +0x16E308, 0xCB7DE0, 0x50C017, 0xA71DF3, 0x5BE018, 0x34132E, +0x621283, 0x014883, 0x5B8EF5, 0x7FB0AD, 0xF2E91E, 0x434A48, +0xD36710, 0xD8DDAA, 0x425FAE, 0xCE616A, 0xA4280A, 0xB499D3, +0xF2A606, 0x7F775C, 0x83C2A3, 0x883C61, 0x78738A, 0x5A8CAF, +0xBDD76F, 0x63A62D, 0xCBBFF4, 0xEF818D, 0x67C126, 0x45CA55, +0x36D9CA, 0xD2A828, 0x8D61C2, 0x77C912, 0x142604, 0x9B4612, +0xC459C4, 0x44C5C8, 0x91B24D, 0xF31700, 0xAD43D4, 0xE54929, +0x10D5FD, 0xFCBE00, 0xCC941E, 0xEECE70, 0xF53E13, 0x80F1EC, +0xC3E7B3, 0x28F8C7, 0x940593, 0x3E71C1, 0xB3092E, 0xF3450B, +0x9C1288, 0x7B20AB, 0x9FB52E, 0xC29247, 0x2F327B, 0x6D550C, +0x90A772, 0x1FE76B, 0x96CB31, 0x4A1679, 0xE27941, 0x89DFF4, +0x9794E8, 0x84E6E2, 0x973199, 0x6BED88, 0x365F5F, 0x0EFDBB, +0xB49A48, 0x6CA467, 0x427271, 0x325D8D, 0xB8159F, 0x09E5BC, +0x25318D, 0x3974F7, 0x1C0530, 0x010C0D, 0x68084B, 0x58EE2C, +0x90AA47, 0x02E774, 0x24D6BD, 0xA67DF7, 0x72486E, 0xEF169F, +0xA6948E, 0xF691B4, 0x5153D1, 0xF20ACF, 0x339820, 0x7E4BF5, +0x6863B2, 0x5F3EDD, 0x035D40, 0x7F8985, 0x295255, 0xC06437, +0x10D86D, 0x324832, 0x754C5B, 0xD4714E, 0x6E5445, 0xC1090B, +0x69F52A, 0xD56614, 0x9D0727, 0x50045D, 0xDB3BB4, 0xC576EA, +0x17F987, 0x7D6B49, 0xBA271D, 0x296996, 0xACCCC6, 0x5414AD, +0x6AE290, 0x89D988, 0x50722C, 0xBEA404, 0x940777, 0x7030F3, +0x27FC00, 0xA871EA, 0x49C266, 0x3DE064, 0x83DD97, 0x973FA3, +0xFD9443, 0x8C860D, 0xDE4131, 0x9D3992, 0x8C70DD, 0xE7B717, +0x3BDF08, 0x2B3715, 0xA0805C, 0x93805A, 0x921110, 0xD8E80F, +0xAF806C, 0x4BFFDB, 0x0F9038, 0x761859, 0x15A562, 0xBBCB61, +0xB989C7, 0xBD4010, 0x04F2D2, 0x277549, 0xF6B6EB, 0xBB22DB, +0xAA140A, 0x2F2689, 0x768364, 0x333B09, 0x1A940E, 0xAA3A51, +0xC2A31D, 0xAEEDAF, 0x12265C, 0x4DC26D, 0x9C7A2D, 0x9756C0, +0x833F03, 0xF6F009, 0x8C402B, 0x99316D, 0x07B439, 0x15200C, +0x5BC3D8, 0xC492F5, 0x4BADC6, 0xA5CA4E, 0xCD37A7, 0x36A9E6, +0x9492AB, 0x6842DD, 0xDE6319, 0xEF8C76, 0x528B68, 0x37DBFC, +0xABA1AE, 0x3115DF, 0xA1AE00, 0xDAFB0C, 0x664D64, 0xB705ED, +0x306529, 0xBF5657, 0x3AFF47, 0xB9F96A, 0xF3BE75, 0xDF9328, +0x3080AB, 0xF68C66, 0x15CB04, 0x0622FA, 0x1DE4D9, 0xA4B33D, +0x8F1B57, 0x09CD36, 0xE9424E, 0xA4BE13, 0xB52333, 0x1AAAF0, +0xA8654F, 0xA5C1D2, 0x0F3F0B, 0xCD785B, 0x76F923, 0x048B7B, +0x721789, 0x53A6C6, 0xE26E6F, 0x00EBEF, 0x584A9B, 0xB7DAC4, +0xBA66AA, 0xCFCF76, 0x1D02D1, 0x2DF1B1, 0xC1998C, 0x77ADC3, +0xDA4886, 0xA05DF7, 0xF480C6, 0x2FF0AC, 0x9AECDD, 0xBC5C3F, +0x6DDED0, 0x1FC790, 0xB6DB2A, 0x3A25A3, 0x9AAF00, 0x9353AD, +0x0457B6, 0xB42D29, 0x7E804B, 0xA707DA, 0x0EAA76, 0xA1597B, +0x2A1216, 0x2DB7DC, 0xFDE5FA, 0xFEDB89, 0xFDBE89, 0x6C76E4, +0xFCA906, 0x70803E, 0x156E85, 0xFF87FD, 0x073E28, 0x336761, +0x86182A, 0xEABD4D, 0xAFE7B3, 0x6E6D8F, 0x396795, 0x5BBF31, +0x48D784, 0x16DF30, 0x432DC7, 0x356125, 0xCE70C9, 0xB8CB30, +0xFD6CBF, 0xA200A4, 0xE46C05, 0xA0DD5A, 0x476F21, 0xD21262, +0x845CB9, 0x496170, 0xE0566B, 0x015299, 0x375550, 0xB7D51E, +0xC4F133, 0x5F6E13, 0xE4305D, 0xA92E85, 0xC3B21D, 0x3632A1, +0xA4B708, 0xD4B1EA, 0x21F716, 0xE4698F, 0x77FF27, 0x80030C, +0x2D408D, 0xA0CD4F, 0x99A520, 0xD3A2B3, 0x0A5D2F, 0x42F9B4, +0xCBDA11, 0xD0BE7D, 0xC1DB9B, 0xBD17AB, 0x81A2CA, 0x5C6A08, +0x17552E, 0x550027, 0xF0147F, 0x8607E1, 0x640B14, 0x8D4196, +0xDEBE87, 0x2AFDDA, 0xB6256B, 0x34897B, 0xFEF305, 0x9EBFB9, +0x4F6A68, 0xA82A4A, 0x5AC44F, 0xBCF82D, 0x985AD7, 0x95C7F4, +0x8D4D0D, 0xA63A20, 0x5F57A4, 0xB13F14, 0x953880, 0x0120CC, +0x86DD71, 0xB6DEC9, 0xF560BF, 0x11654D, 0x6B0701, 0xACB08C, +0xD0C0B2, 0x485551, 0x0EFB1E, 0xC37295, 0x3B06A3, 0x3540C0, +0x7BDC06, 0xCC45E0, 0xFA294E, 0xC8CAD6, 0x41F3E8, 0xDE647C, +0xD8649B, 0x31BED9, 0xC397A4, 0xD45877, 0xC5E369, 0x13DAF0, +0x3C3ABA, 0x461846, 0x5F7555, 0xF5BDD2, 0xC6926E, 0x5D2EAC, +0xED440E, 0x423E1C, 0x87C461, 0xE9FD29, 0xF3D6E7, 0xCA7C22, +0x35916F, 0xC5E008, 0x8DD7FF, 0xE26A6E, 0xC6FDB0, 0xC10893, +0x745D7C, 0xB2AD6B, 0x9D6ECD, 0x7B723E, 0x6A11C6, 0xA9CFF7, +0xDF7329, 0xBAC9B5, 0x5100B7, 0x0DB2E2, 0x24BA74, 0x607DE5, +0x8AD874, 0x2C150D, 0x0C1881, 0x94667E, 0x162901, 0x767A9F, +0xBEFDFD, 0xEF4556, 0x367ED9, 0x13D9EC, 0xB9BA8B, 0xFC97C4, +0x27A831, 0xC36EF1, 0x36C594, 0x56A8D8, 0xB5A8B4, 0x0ECCCF, +0x2D8912, 0x34576F, 0x89562C, 0xE3CE99, 0xB920D6, 0xAA5E6B, +0x9C2A3E, 0xCC5F11, 0x4A0BFD, 0xFBF4E1, 0x6D3B8E, 0x2C86E2, +0x84D4E9, 0xA9B4FC, 0xD1EEEF, 0xC9352E, 0x61392F, 0x442138, +0xC8D91B, 0x0AFC81, 0x6A4AFB, 0xD81C2F, 0x84B453, 0x8C994E, +0xCC2254, 0xDC552A, 0xD6C6C0, 0x96190B, 0xB8701A, 0x649569, +0x605A26, 0xEE523F, 0x0F117F, 0x11B5F4, 0xF5CBFC, 0x2DBC34, +0xEEBC34, 0xCC5DE8, 0x605EDD, 0x9B8E67, 0xEF3392, 0xB817C9, +0x9B5861, 0xBC57E1, 0xC68351, 0x103ED8, 0x4871DD, 0xDD1C2D, +0xA118AF, 0x462C21, 0xD7F359, 0x987AD9, 0xC0549E, 0xFA864F, +0xFC0656, 0xAE79E5, 0x362289, 0x22AD38, 0xDC9367, 0xAAE855, +0x382682, 0x9BE7CA, 0xA40D51, 0xB13399, 0x0ED7A9, 0x480569, +0xF0B265, 0xA7887F, 0x974C88, 0x36D1F9, 0xB39221, 0x4A827B, +0x21CF98, 0xDC9F40, 0x5547DC, 0x3A74E1, 0x42EB67, 0xDF9DFE, +0x5FD45E, 0xA4677B, 0x7AACBA, 0xA2F655, 0x23882B, 0x55BA41, +0x086E59, 0x862A21, 0x834739, 0xE6E389, 0xD49EE5, 0x40FB49, +0xE956FF, 0xCA0F1C, 0x8A59C5, 0x2BFA94, 0xC5C1D3, 0xCFC50F, +0xAE5ADB, 0x86C547, 0x624385, 0x3B8621, 0x94792C, 0x876110, +0x7B4C2A, 0x1A2C80, 0x12BF43, 0x902688, 0x893C78, 0xE4C4A8, +0x7BDBE5, 0xC23AC4, 0xEAF426, 0x8A67F7, 0xBF920D, 0x2BA365, +0xB1933D, 0x0B7CBD, 0xDC51A4, 0x63DD27, 0xDDE169, 0x19949A, +0x9529A8, 0x28CE68, 0xB4ED09, 0x209F44, 0xCA984E, 0x638270, +0x237C7E, 0x32B90F, 0x8EF5A7, 0xE75614, 0x08F121, 0x2A9DB5, +0x4D7E6F, 0x5119A5, 0xABF9B5, 0xD6DF82, 0x61DD96, 0x023616, +0x9F3AC4, 0xA1A283, 0x6DED72, 0x7A8D39, 0xA9B882, 0x5C326B, +0x5B2746, 0xED3400, 0x7700D2, 0x55F4FC, 0x4D5901, 0x8071E0, +#endif +}; + +static const double PIo2[] = { + 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */ + 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */ + 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */ + 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */ + 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */ + 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */ + 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */ + 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */ +}; + +int __rem_pio2_large(double *x, double *y, int e0, int nx, int prec) +{ + int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih; + double z,fw,f[20],fq[20],q[20]; + + /* initialize jk*/ + jk = init_jk[prec]; + jp = jk; + + /* determine jx,jv,q0, note that 3>q0 */ + jx = nx-1; + jv = (e0-3)/24; if(jv<0) jv=0; + q0 = e0-24*(jv+1); + + /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */ + j = jv-jx; m = jx+jk; + for (i=0; i<=m; i++,j++) + f[i] = j<0 ? 0.0 : (double)ipio2[j]; + + /* compute q[0],q[1],...q[jk] */ + for (i=0; i<=jk; i++) { + for (j=0,fw=0.0; j<=jx; j++) + fw += x[j]*f[jx+i-j]; + q[i] = fw; + } + + jz = jk; +recompute: + /* distill q[] into iq[] reversingly */ + for (i=0,j=jz,z=q[jz]; j>0; i++,j--) { + fw = (double)(int32_t)(0x1p-24*z); + iq[i] = (int32_t)(z - 0x1p24*fw); + z = q[j-1]+fw; + } + + /* compute n */ + z = scalbn(z,q0); /* actual value of z */ + z -= 8.0*floor(z*0.125); /* trim off integer >= 8 */ + n = (int32_t)z; + z -= (double)n; + ih = 0; + if (q0 > 0) { /* need iq[jz-1] to determine n */ + i = iq[jz-1]>>(24-q0); n += i; + iq[jz-1] -= i<<(24-q0); + ih = iq[jz-1]>>(23-q0); + } + else if (q0 == 0) ih = iq[jz-1]>>23; + else if (z >= 0.5) ih = 2; + + if (ih > 0) { /* q > 0.5 */ + n += 1; carry = 0; + for (i=0; i 0) { /* rare case: chance is 1 in 12 */ + switch(q0) { + case 1: + iq[jz-1] &= 0x7fffff; break; + case 2: + iq[jz-1] &= 0x3fffff; break; + } + } + if (ih == 2) { + z = 1.0 - z; + if (carry != 0) + z -= scalbn(1.0,q0); + } + } + + /* check if recomputation is needed */ + if (z == 0.0) { + j = 0; + for (i=jz-1; i>=jk; i--) j |= iq[i]; + if (j == 0) { /* need recomputation */ + for (k=1; iq[jk-k]==0; k++); /* k = no. of terms needed */ + + for (i=jz+1; i<=jz+k; i++) { /* add q[jz+1] to q[jz+k] */ + f[jx+i] = (double)ipio2[jv+i]; + for (j=0,fw=0.0; j<=jx; j++) + fw += x[j]*f[jx+i-j]; + q[i] = fw; + } + jz += k; + goto recompute; + } + } + + /* chop off zero terms */ + if (z == 0.0) { + jz -= 1; + q0 -= 24; + while (iq[jz] == 0) { + jz--; + q0 -= 24; + } + } else { /* break z into 24-bit if necessary */ + z = scalbn(z,-q0); + if (z >= 0x1p24) { + fw = (double)(int32_t)(0x1p-24*z); + iq[jz] = (int32_t)(z - 0x1p24*fw); + jz += 1; + q0 += 24; + iq[jz] = (int32_t)fw; + } else + iq[jz] = (int32_t)z; + } + + /* convert integer "bit" chunk to floating-point value */ + fw = scalbn(1.0,q0); + for (i=jz; i>=0; i--) { + q[i] = fw*(double)iq[i]; + fw *= 0x1p-24; + } + + /* compute PIo2[0,...,jp]*q[jz,...,0] */ + for(i=jz; i>=0; i--) { + for (fw=0.0,k=0; k<=jp && k<=jz-i; k++) + fw += PIo2[k]*q[i+k]; + fq[jz-i] = fw; + } + + /* compress fq[] into y[] */ + switch(prec) { + case 0: + fw = 0.0; + for (i=jz; i>=0; i--) + fw += fq[i]; + y[0] = ih==0 ? fw : -fw; + break; + case 1: + case 2: + fw = 0.0; + for (i=jz; i>=0; i--) + fw += fq[i]; + // TODO: drop excess precision here once double_t is used + fw = (double)fw; + y[0] = ih==0 ? fw : -fw; + fw = fq[0]-fw; + for (i=1; i<=jz; i++) + fw += fq[i]; + y[1] = ih==0 ? fw : -fw; + break; + case 3: /* painful */ + for (i=jz; i>0; i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (i=jz; i>1; i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (fw=0.0,i=jz; i>=2; i--) + fw += fq[i]; + if (ih==0) { + y[0] = fq[0]; y[1] = fq[1]; y[2] = fw; + } else { + y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw; + } + } + return n&7; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__rem_pio2f.c b/vendor/modernc.org/libc/musl/src/math/__rem_pio2f.c new file mode 100644 index 000000000..e67656431 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__rem_pio2f.c @@ -0,0 +1,86 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_rem_pio2f.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Debugged and optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* __rem_pio2f(x,y) + * + * return the remainder of x rem pi/2 in *y + * use double precision for everything except passing x + * use __rem_pio2_large() for large x + */ + +#include "libm.h" + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif + +/* + * invpio2: 53 bits of 2/pi + * pio2_1: first 25 bits of pi/2 + * pio2_1t: pi/2 - pio2_1 + */ +static const double +toint = 1.5/EPS, +pio4 = 0x1.921fb6p-1, +invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ +pio2_1 = 1.57079631090164184570e+00, /* 0x3FF921FB, 0x50000000 */ +pio2_1t = 1.58932547735281966916e-08; /* 0x3E5110b4, 0x611A6263 */ + +int __rem_pio2f(float x, double *y) +{ + union {float f; uint32_t i;} u = {x}; + double tx[1],ty[1]; + double_t fn; + uint32_t ix; + int n, sign, e0; + + ix = u.i & 0x7fffffff; + /* 25+53 bit pi is good enough for medium size */ + if (ix < 0x4dc90fdb) { /* |x| ~< 2^28*(pi/2), medium size */ + /* Use a specialized rint() to get fn. */ + fn = (double_t)x*invpio2 + toint - toint; + n = (int32_t)fn; + *y = x - fn*pio2_1 - fn*pio2_1t; + /* Matters with directed rounding. */ + if (predict_false(*y < -pio4)) { + n--; + fn--; + *y = x - fn*pio2_1 - fn*pio2_1t; + } else if (predict_false(*y > pio4)) { + n++; + fn++; + *y = x - fn*pio2_1 - fn*pio2_1t; + } + return n; + } + if(ix>=0x7f800000) { /* x is inf or NaN */ + *y = x-x; + return 0; + } + /* scale x into [2^23, 2^24-1] */ + sign = u.i>>31; + e0 = (ix>>23) - (0x7f+23); /* e0 = ilogb(|x|)-23, positive */ + u.i = ix - (e0<<23); + tx[0] = u.f; + n = __rem_pio2_large(tx,ty,e0,1,0); + if (sign) { + *y = -ty[0]; + return -n; + } + *y = ty[0]; + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__rem_pio2l.c b/vendor/modernc.org/libc/musl/src/math/__rem_pio2l.c new file mode 100644 index 000000000..236b2def3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__rem_pio2l.c @@ -0,0 +1,155 @@ +/* origin: FreeBSD /usr/src/lib/msun/ld80/e_rem_pio2.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * Optimized by Bruce D. Evans. + */ +#include "libm.h" +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +/* ld80 and ld128 version of __rem_pio2(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __rem_pio2_large() for large x + */ + +static const long double toint = 1.5/LDBL_EPSILON; + +#if LDBL_MANT_DIG == 64 +/* u ~< 0x1p25*pi/2 */ +#define SMALL(u) (((u.i.se & 0x7fffU)<<16 | u.i.m>>48) < ((0x3fff + 25)<<16 | 0x921f>>1 | 0x8000)) +#define QUOBITS(x) ((uint32_t)(int32_t)x & 0x7fffffff) +#define ROUND1 22 +#define ROUND2 61 +#define NX 3 +#define NY 2 +/* + * invpio2: 64 bits of 2/pi + * pio2_1: first 39 bits of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 39 bits of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 39 bits of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ +static const double +pio2_1 = 1.57079632679597125389e+00, /* 0x3FF921FB, 0x54444000 */ +pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */ +pio2_3 = 6.36831716351370313614e-25; /* 0x18a2e037074000.0p-133 */ +static const long double +pio4 = 0x1.921fb54442d1846ap-1L, +invpio2 = 6.36619772367581343076e-01L, /* 0xa2f9836e4e44152a.0p-64 */ +pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */ +pio2_2t = 6.36831716351095013979e-25L, /* 0xc51701b839a25205.0p-144 */ +pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */ +#elif LDBL_MANT_DIG == 113 +/* u ~< 0x1p45*pi/2 */ +#define SMALL(u) (((u.i.se & 0x7fffU)<<16 | u.i.top) < ((0x3fff + 45)<<16 | 0x921f)) +#define QUOBITS(x) ((uint32_t)(int64_t)x & 0x7fffffff) +#define ROUND1 51 +#define ROUND2 119 +#define NX 5 +#define NY 3 +static const long double +pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, +invpio2 = 6.3661977236758134307553505349005747e-01L, /* 0x145f306dc9c882a53f84eafa3ea6a.0p-113 */ +pio2_1 = 1.5707963267948966192292994253909555e+00L, /* 0x1921fb54442d18469800000000000.0p-112 */ +pio2_1t = 2.0222662487959507323996846200947577e-21L, /* 0x13198a2e03707344a4093822299f3.0p-181 */ +pio2_2 = 2.0222662487959507323994779168837751e-21L, /* 0x13198a2e03707344a400000000000.0p-181 */ +pio2_2t = 2.0670321098263988236496903051604844e-43L, /* 0x127044533e63a0105df531d89cd91.0p-254 */ +pio2_3 = 2.0670321098263988236499468110329591e-43L, /* 0x127044533e63a0105e00000000000.0p-254 */ +pio2_3t = -2.5650587247459238361625433492959285e-65L; /* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327 */ +#endif + +int __rem_pio2l(long double x, long double *y) +{ + union ldshape u,uz; + long double z,w,t,r,fn; + double tx[NX],ty[NY]; + int ex,ey,n,i; + + u.f = x; + ex = u.i.se & 0x7fff; + if (SMALL(u)) { + /* rint(x/(pi/2)) */ + fn = x*invpio2 + toint - toint; + n = QUOBITS(fn); + r = x-fn*pio2_1; + w = fn*pio2_1t; /* 1st round good to 102/180 bits (ld80/ld128) */ + /* Matters with directed rounding. */ + if (predict_false(r - w < -pio4)) { + n--; + fn--; + r = x - fn*pio2_1; + w = fn*pio2_1t; + } else if (predict_false(r - w > pio4)) { + n++; + fn++; + r = x - fn*pio2_1; + w = fn*pio2_1t; + } + y[0] = r-w; + u.f = y[0]; + ey = u.i.se & 0x7fff; + if (ex - ey > ROUND1) { /* 2nd iteration needed, good to 141/248 (ld80/ld128) */ + t = r; + w = fn*pio2_2; + r = t-w; + w = fn*pio2_2t-((t-r)-w); + y[0] = r-w; + u.f = y[0]; + ey = u.i.se & 0x7fff; + if (ex - ey > ROUND2) { /* 3rd iteration, good to 180/316 bits */ + t = r; /* will cover all possible cases (not verified for ld128) */ + w = fn*pio2_3; + r = t-w; + w = fn*pio2_3t-((t-r)-w); + y[0] = r-w; + } + } + y[1] = (r - y[0]) - w; + return n; + } + /* + * all other (large) arguments + */ + if (ex == 0x7fff) { /* x is inf or NaN */ + y[0] = y[1] = x - x; + return 0; + } + /* set z = scalbn(|x|,-ilogb(x)+23) */ + uz.f = x; + uz.i.se = 0x3fff + 23; + z = uz.f; + for (i=0; i < NX - 1; i++) { + tx[i] = (double)(int32_t)z; + z = (z-tx[i])*0x1p24; + } + tx[i] = z; + while (tx[i] == 0) + i--; + n = __rem_pio2_large(tx, ty, ex-0x3fff-23, i+1, NY); + w = ty[1]; + if (NY == 3) + w += ty[2]; + r = ty[0] + w; + /* TODO: for ld128 this does not follow the recommendation of the + comments of __rem_pio2_large which seem wrong if |ty[0]| > |ty[1]+ty[2]| */ + w -= r - ty[0]; + if (u.i.se >> 15) { + y[0] = -r; + y[1] = -w; + return -n; + } + y[0] = r; + y[1] = w; + return n; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__signbit.c b/vendor/modernc.org/libc/musl/src/math/__signbit.c new file mode 100644 index 000000000..e700b6b75 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__signbit.c @@ -0,0 +1,13 @@ +#include "libm.h" + +// FIXME: macro in math.h +int __signbit(double x) +{ + union { + double d; + uint64_t i; + } y = { x }; + return y.i>>63; +} + + diff --git a/vendor/modernc.org/libc/musl/src/math/__signbitf.c b/vendor/modernc.org/libc/musl/src/math/__signbitf.c new file mode 100644 index 000000000..40ad3cfd0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__signbitf.c @@ -0,0 +1,11 @@ +#include "libm.h" + +// FIXME: macro in math.h +int __signbitf(float x) +{ + union { + float f; + uint32_t i; + } y = { x }; + return y.i>>31; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__signbitl.c b/vendor/modernc.org/libc/musl/src/math/__signbitl.c new file mode 100644 index 000000000..63b3dc5a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__signbitl.c @@ -0,0 +1,14 @@ +#include "libm.h" + +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +int __signbitl(long double x) +{ + union ldshape u = {x}; + return u.i.se >> 15; +} +#elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +int __signbitl(long double x) +{ + return __signbit(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__sin.c b/vendor/modernc.org/libc/musl/src/math/__sin.c new file mode 100644 index 000000000..403094966 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__sin.c @@ -0,0 +1,64 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_sin.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* __sin( x, y, iy) + * kernel sin function on ~[-pi/4, pi/4] (except on -0), pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input iy indicates whether y is 0. (if iy=0, y assume to be 0). + * + * Algorithm + * 1. Since sin(-x) = -sin(x), we need only to consider positive x. + * 2. Callers must return sin(-0) = -0 without calling here since our + * odd polynomial is not evaluated in a way that preserves -0. + * Callers may do the optimization sin(x) ~ x for tiny x. + * 3. sin(x) is approximated by a polynomial of degree 13 on + * [0,pi/4] + * 3 13 + * sin(x) ~ x + S1*x + ... + S6*x + * where + * + * |sin(x) 2 4 6 8 10 12 | -58 + * |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2 + * | x | + * + * 4. sin(x+y) = sin(x) + sin'(x')*y + * ~ sin(x) + (1-x*x/2)*y + * For better accuracy, let + * 3 2 2 2 2 + * r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6)))) + * then 3 2 + * sin(x) = x + (S1*x + (x *(r-y/2)+y)) + */ + +#include "libm.h" + +static const double +S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */ +S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ +S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ +S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ +S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ +S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ + +double __sin(double x, double y, int iy) +{ + double_t z,r,v,w; + + z = x*x; + w = z*z; + r = S2 + z*(S3 + z*S4) + z*w*(S5 + z*S6); + v = z*x; + if (iy == 0) + return x + v*(S1 + z*r); + else + return x - ((z*(0.5*y - v*r) - y) - v*S1); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__sindf.c b/vendor/modernc.org/libc/musl/src/math/__sindf.c new file mode 100644 index 000000000..8fec2a3f6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__sindf.c @@ -0,0 +1,36 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_sinf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */ +static const double +S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */ +S2 = 0x111110896efbb2.0p-59, /* 0.0083333293858894631756 */ +S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */ +S4 = 0x16cd878c3b46a7.0p-71; /* 0.0000027183114939898219064 */ + +float __sindf(double x) +{ + double_t r, s, w, z; + + /* Try to optimize for parallel evaluation as in __tandf.c. */ + z = x*x; + w = z*z; + r = S3 + z*S4; + s = z*x; + return (x + s*(S1 + z*S2)) + s*w*r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__sinl.c b/vendor/modernc.org/libc/musl/src/math/__sinl.c new file mode 100644 index 000000000..2525bbe86 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__sinl.c @@ -0,0 +1,78 @@ +/* origin: FreeBSD /usr/src/lib/msun/ld80/k_sinl.c */ +/* origin: FreeBSD /usr/src/lib/msun/ld128/k_sinl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#if LDBL_MANT_DIG == 64 +/* + * ld80 version of __sin.c. See __sin.c for most comments. + */ +/* + * Domain [-0.7854, 0.7854], range ~[-1.89e-22, 1.915e-22] + * |sin(x)/x - s(x)| < 2**-72.1 + * + * See __cosl.c for more details about the polynomial. + */ +static const long double +S1 = -0.166666666666666666671L; /* -0xaaaaaaaaaaaaaaab.0p-66 */ +static const double +S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ +S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */ +S4 = 0.0000027557319223597490, /* 0x171de3a55560f7.0p-71 */ +S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */ +S6 = 1.6059006598854211e-10, /* 0x161242b90243b5.0p-85 */ +S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */ +S8 = 2.6174587166648325e-15; /* 0x179372ea0b3f64.0p-101 */ +#define POLY(z) (S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*S8)))))) +#elif LDBL_MANT_DIG == 113 +/* + * ld128 version of __sin.c. See __sin.c for most comments. + */ +/* + * Domain [-0.7854, 0.7854], range ~[-1.53e-37, 1.659e-37] + * |sin(x)/x - s(x)| < 2**-122.1 + * + * See __cosl.c for more details about the polynomial. + */ +static const long double +S1 = -0.16666666666666666666666666666666666606732416116558L, +S2 = 0.0083333333333333333333333333333331135404851288270047L, +S3 = -0.00019841269841269841269841269839935785325638310428717L, +S4 = 0.27557319223985890652557316053039946268333231205686e-5L, +S5 = -0.25052108385441718775048214826384312253862930064745e-7L, +S6 = 0.16059043836821614596571832194524392581082444805729e-9L, +S7 = -0.76471637318198151807063387954939213287488216303768e-12L, +S8 = 0.28114572543451292625024967174638477283187397621303e-14L; +static const double +S9 = -0.82206352458348947812512122163446202498005154296863e-17, +S10 = 0.19572940011906109418080609928334380560135358385256e-19, +S11 = -0.38680813379701966970673724299207480965452616911420e-22, +S12 = 0.64038150078671872796678569586315881020659912139412e-25; +#define POLY(z) (S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*(S8+ \ + z*(S9+z*(S10+z*(S11+z*S12)))))))))) +#endif + +long double __sinl(long double x, long double y, int iy) +{ + long double z,r,v; + + z = x*x; + v = z*x; + r = POLY(z); + if (iy == 0) + return x+v*(S1+z*r); + return x-((z*(0.5*y-v*r)-y)-v*S1); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/__tan.c b/vendor/modernc.org/libc/musl/src/math/__tan.c new file mode 100644 index 000000000..8019844d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__tan.c @@ -0,0 +1,110 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_tan.c */ +/* + * ==================================================== + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* __tan( x, y, k ) + * kernel tan function on ~[-pi/4, pi/4] (except on -0), pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input odd indicates whether tan (if odd = 0) or -1/tan (if odd = 1) is returned. + * + * Algorithm + * 1. Since tan(-x) = -tan(x), we need only to consider positive x. + * 2. Callers must return tan(-0) = -0 without calling here since our + * odd polynomial is not evaluated in a way that preserves -0. + * Callers may do the optimization tan(x) ~ x for tiny x. + * 3. tan(x) is approximated by a odd polynomial of degree 27 on + * [0,0.67434] + * 3 27 + * tan(x) ~ x + T1*x + ... + T13*x + * where + * + * |tan(x) 2 4 26 | -59.2 + * |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2 + * | x | + * + * Note: tan(x+y) = tan(x) + tan'(x)*y + * ~ tan(x) + (1+x*x)*y + * Therefore, for better accuracy in computing tan(x+y), let + * 3 2 2 2 2 + * r = x *(T2+x *(T3+x *(...+x *(T12+x *T13)))) + * then + * 3 2 + * tan(x+y) = x + (T1*x + (x *(r+y)+y)) + * + * 4. For x in [0.67434,pi/4], let y = pi/4 - x, then + * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y)) + * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y))) + */ + +#include "libm.h" + +static const double T[] = { + 3.33333333333334091986e-01, /* 3FD55555, 55555563 */ + 1.33333333333201242699e-01, /* 3FC11111, 1110FE7A */ + 5.39682539762260521377e-02, /* 3FABA1BA, 1BB341FE */ + 2.18694882948595424599e-02, /* 3F9664F4, 8406D637 */ + 8.86323982359930005737e-03, /* 3F8226E3, E96E8493 */ + 3.59207910759131235356e-03, /* 3F6D6D22, C9560328 */ + 1.45620945432529025516e-03, /* 3F57DBC8, FEE08315 */ + 5.88041240820264096874e-04, /* 3F4344D8, F2F26501 */ + 2.46463134818469906812e-04, /* 3F3026F7, 1A8D1068 */ + 7.81794442939557092300e-05, /* 3F147E88, A03792A6 */ + 7.14072491382608190305e-05, /* 3F12B80F, 32F0A7E9 */ + -1.85586374855275456654e-05, /* BEF375CB, DB605373 */ + 2.59073051863633712884e-05, /* 3EFB2A70, 74BF7AD4 */ +}, +pio4 = 7.85398163397448278999e-01, /* 3FE921FB, 54442D18 */ +pio4lo = 3.06161699786838301793e-17; /* 3C81A626, 33145C07 */ + +double __tan(double x, double y, int odd) +{ + double_t z, r, v, w, s, a; + double w0, a0; + uint32_t hx; + int big, sign; + + GET_HIGH_WORD(hx,x); + big = (hx&0x7fffffff) >= 0x3FE59428; /* |x| >= 0.6744 */ + if (big) { + sign = hx>>31; + if (sign) { + x = -x; + y = -y; + } + x = (pio4 - x) + (pio4lo - y); + y = 0.0; + } + z = x * x; + w = z * z; + /* + * Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + r = T[1] + w*(T[3] + w*(T[5] + w*(T[7] + w*(T[9] + w*T[11])))); + v = z*(T[2] + w*(T[4] + w*(T[6] + w*(T[8] + w*(T[10] + w*T[12]))))); + s = z * x; + r = y + z*(s*(r + v) + y) + s*T[0]; + w = x + r; + if (big) { + s = 1 - 2*odd; + v = s - 2.0 * (x + (r - w*w/(w + s))); + return sign ? -v : v; + } + if (!odd) + return w; + /* -1.0/(x+r) has up to 2ulp error, so compute it accurately */ + w0 = w; + SET_LOW_WORD(w0, 0); + v = r - (w0 - x); /* w0+v = r+x */ + a0 = a = -1.0 / w; + SET_LOW_WORD(a0, 0); + return a0 + a*(1.0 + a0*w0 + a0*v); +} diff --git a/vendor/modernc.org/libc/musl/src/math/__tandf.c b/vendor/modernc.org/libc/musl/src/math/__tandf.c new file mode 100644 index 000000000..25047eeee --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__tandf.c @@ -0,0 +1,54 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/k_tanf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */ +static const double T[] = { + 0x15554d3418c99f.0p-54, /* 0.333331395030791399758 */ + 0x1112fd38999f72.0p-55, /* 0.133392002712976742718 */ + 0x1b54c91d865afe.0p-57, /* 0.0533812378445670393523 */ + 0x191df3908c33ce.0p-58, /* 0.0245283181166547278873 */ + 0x185dadfcecf44e.0p-61, /* 0.00297435743359967304927 */ + 0x1362b9bf971bcd.0p-59, /* 0.00946564784943673166728 */ +}; + +float __tandf(double x, int odd) +{ + double_t z,r,w,s,t,u; + + z = x*x; + /* + * Split up the polynomial into small independent terms to give + * opportunities for parallel evaluation. The chosen splitting is + * micro-optimized for Athlons (XP, X64). It costs 2 multiplications + * relative to Horner's method on sequential machines. + * + * We add the small terms from lowest degree up for efficiency on + * non-sequential machines (the lowest degree terms tend to be ready + * earlier). Apart from this, we don't care about order of + * operations, and don't need to to care since we have precision to + * spare. However, the chosen splitting is good for accuracy too, + * and would give results as accurate as Horner's method if the + * small terms were added from highest degree down. + */ + r = T[4] + z*T[5]; + t = T[2] + z*T[3]; + w = z*z; + s = z*x; + u = T[0] + z*T[1]; + r = (x + s*u) + (s*w)*(t + w*r); + return odd ? -1.0/r : r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/__tanl.c b/vendor/modernc.org/libc/musl/src/math/__tanl.c new file mode 100644 index 000000000..54abc3daf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/__tanl.c @@ -0,0 +1,143 @@ +/* origin: FreeBSD /usr/src/lib/msun/ld80/k_tanl.c */ +/* origin: FreeBSD /usr/src/lib/msun/ld128/k_tanl.c */ +/* + * ==================================================== + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#if LDBL_MANT_DIG == 64 +/* + * ld80 version of __tan.c. See __tan.c for most comments. + */ +/* + * Domain [-0.67434, 0.67434], range ~[-2.25e-22, 1.921e-22] + * |tan(x)/x - t(x)| < 2**-71.9 + * + * See __cosl.c for more details about the polynomial. + */ +static const long double +T3 = 0.333333333333333333180L, /* 0xaaaaaaaaaaaaaaa5.0p-65 */ +T5 = 0.133333333333333372290L, /* 0x88888888888893c3.0p-66 */ +T7 = 0.0539682539682504975744L, /* 0xdd0dd0dd0dc13ba2.0p-68 */ +pio4 = 0.785398163397448309628L, /* 0xc90fdaa22168c235.0p-64 */ +pio4lo = -1.25413940316708300586e-20L; /* -0xece675d1fc8f8cbb.0p-130 */ +static const double +T9 = 0.021869488536312216, /* 0x1664f4882cc1c2.0p-58 */ +T11 = 0.0088632355256619590, /* 0x1226e355c17612.0p-59 */ +T13 = 0.0035921281113786528, /* 0x1d6d3d185d7ff8.0p-61 */ +T15 = 0.0014558334756312418, /* 0x17da354aa3f96b.0p-62 */ +T17 = 0.00059003538700862256, /* 0x13559358685b83.0p-63 */ +T19 = 0.00023907843576635544, /* 0x1f56242026b5be.0p-65 */ +T21 = 0.000097154625656538905, /* 0x1977efc26806f4.0p-66 */ +T23 = 0.000038440165747303162, /* 0x14275a09b3ceac.0p-67 */ +T25 = 0.000018082171885432524, /* 0x12f5e563e5487e.0p-68 */ +T27 = 0.0000024196006108814377, /* 0x144c0d80cc6896.0p-71 */ +T29 = 0.0000078293456938132840, /* 0x106b59141a6cb3.0p-69 */ +T31 = -0.0000032609076735050182, /* -0x1b5abef3ba4b59.0p-71 */ +T33 = 0.0000023261313142559411; /* 0x13835436c0c87f.0p-71 */ +#define RPOLY(w) (T5 + w * (T9 + w * (T13 + w * (T17 + w * (T21 + \ + w * (T25 + w * (T29 + w * T33))))))) +#define VPOLY(w) (T7 + w * (T11 + w * (T15 + w * (T19 + w * (T23 + \ + w * (T27 + w * T31)))))) +#elif LDBL_MANT_DIG == 113 +/* + * ld128 version of __tan.c. See __tan.c for most comments. + */ +/* + * Domain [-0.67434, 0.67434], range ~[-3.37e-36, 1.982e-37] + * |tan(x)/x - t(x)| < 2**-117.8 (XXX should be ~1e-37) + * + * See __cosl.c for more details about the polynomial. + */ +static const long double +T3 = 0x1.5555555555555555555555555553p-2L, +T5 = 0x1.1111111111111111111111111eb5p-3L, +T7 = 0x1.ba1ba1ba1ba1ba1ba1ba1b694cd6p-5L, +T9 = 0x1.664f4882c10f9f32d6bbe09d8bcdp-6L, +T11 = 0x1.226e355e6c23c8f5b4f5762322eep-7L, +T13 = 0x1.d6d3d0e157ddfb5fed8e84e27b37p-9L, +T15 = 0x1.7da36452b75e2b5fce9ee7c2c92ep-10L, +T17 = 0x1.355824803674477dfcf726649efep-11L, +T19 = 0x1.f57d7734d1656e0aceb716f614c2p-13L, +T21 = 0x1.967e18afcb180ed942dfdc518d6cp-14L, +T23 = 0x1.497d8eea21e95bc7e2aa79b9f2cdp-15L, +T25 = 0x1.0b132d39f055c81be49eff7afd50p-16L, +T27 = 0x1.b0f72d33eff7bfa2fbc1059d90b6p-18L, +T29 = 0x1.5ef2daf21d1113df38d0fbc00267p-19L, +T31 = 0x1.1c77d6eac0234988cdaa04c96626p-20L, +T33 = 0x1.cd2a5a292b180e0bdd701057dfe3p-22L, +T35 = 0x1.75c7357d0298c01a31d0a6f7d518p-23L, +T37 = 0x1.2f3190f4718a9a520f98f50081fcp-24L, +pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, +pio4lo = 0x1.cd129024e088a67cc74020bbea60p-116L; +static const double +T39 = 0.000000028443389121318352, /* 0x1e8a7592977938.0p-78 */ +T41 = 0.000000011981013102001973, /* 0x19baa1b1223219.0p-79 */ +T43 = 0.0000000038303578044958070, /* 0x107385dfb24529.0p-80 */ +T45 = 0.0000000034664378216909893, /* 0x1dc6c702a05262.0p-81 */ +T47 = -0.0000000015090641701997785, /* -0x19ecef3569ebb6.0p-82 */ +T49 = 0.0000000029449552300483952, /* 0x194c0668da786a.0p-81 */ +T51 = -0.0000000022006995706097711, /* -0x12e763b8845268.0p-81 */ +T53 = 0.0000000015468200913196612, /* 0x1a92fc98c29554.0p-82 */ +T55 = -0.00000000061311613386849674, /* -0x151106cbc779a9.0p-83 */ +T57 = 1.4912469681508012e-10; /* 0x147edbdba6f43a.0p-85 */ +#define RPOLY(w) (T5 + w * (T9 + w * (T13 + w * (T17 + w * (T21 + \ + w * (T25 + w * (T29 + w * (T33 + w * (T37 + w * (T41 + \ + w * (T45 + w * (T49 + w * (T53 + w * T57))))))))))))) +#define VPOLY(w) (T7 + w * (T11 + w * (T15 + w * (T19 + w * (T23 + \ + w * (T27 + w * (T31 + w * (T35 + w * (T39 + w * (T43 + \ + w * (T47 + w * (T51 + w * T55)))))))))))) +#endif + +long double __tanl(long double x, long double y, int odd) { + long double z, r, v, w, s, a, t; + int big, sign; + + big = fabsl(x) >= 0.67434; + if (big) { + sign = 0; + if (x < 0) { + sign = 1; + x = -x; + y = -y; + } + x = (pio4 - x) + (pio4lo - y); + y = 0.0; + } + z = x * x; + w = z * z; + r = RPOLY(w); + v = z * VPOLY(w); + s = z * x; + r = y + z * (s * (r + v) + y) + T3 * s; + w = x + r; + if (big) { + s = 1 - 2*odd; + v = s - 2.0 * (x + (r - w * w / (w + s))); + return sign ? -v : v; + } + if (!odd) + return w; + /* + * if allow error up to 2 ulp, simply return + * -1.0 / (x+r) here + */ + /* compute -1.0 / (x+r) accurately */ + z = w; + z = z + 0x1p32 - 0x1p32; + v = r - (z - x); /* z+v = r+x */ + t = a = -1.0 / w; /* a = -1.0/w */ + t = t + 0x1p32 - 0x1p32; + s = 1.0 + t * z; + return t + a * (s + t * v); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/ceil.c b/vendor/modernc.org/libc/musl/src/math/aarch64/ceil.c new file mode 100644 index 000000000..ac80c1dce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/ceil.c @@ -0,0 +1,7 @@ +#include + +double ceil(double x) +{ + __asm__ ("frintp %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/ceilf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/ceilf.c new file mode 100644 index 000000000..1ef1e9c83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/ceilf.c @@ -0,0 +1,7 @@ +#include + +float ceilf(float x) +{ + __asm__ ("frintp %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fabs.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fabs.c new file mode 100644 index 000000000..5c3ecaf44 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fabs.c @@ -0,0 +1,7 @@ +#include + +double fabs(double x) +{ + __asm__ ("fabs %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fabsf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fabsf.c new file mode 100644 index 000000000..7fde98179 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fabsf.c @@ -0,0 +1,7 @@ +#include + +float fabsf(float x) +{ + __asm__ ("fabs %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/floor.c b/vendor/modernc.org/libc/musl/src/math/aarch64/floor.c new file mode 100644 index 000000000..50ffdb281 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/floor.c @@ -0,0 +1,7 @@ +#include + +double floor(double x) +{ + __asm__ ("frintm %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/floorf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/floorf.c new file mode 100644 index 000000000..8d007e9f8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/floorf.c @@ -0,0 +1,7 @@ +#include + +float floorf(float x) +{ + __asm__ ("frintm %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fma.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fma.c new file mode 100644 index 000000000..2450ea7e1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fma.c @@ -0,0 +1,7 @@ +#include + +double fma(double x, double y, double z) +{ + __asm__ ("fmadd %d0, %d1, %d2, %d3" : "=w"(x) : "w"(x), "w"(y), "w"(z)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fmaf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fmaf.c new file mode 100644 index 000000000..9a147213a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fmaf.c @@ -0,0 +1,7 @@ +#include + +float fmaf(float x, float y, float z) +{ + __asm__ ("fmadd %s0, %s1, %s2, %s3" : "=w"(x) : "w"(x), "w"(y), "w"(z)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fmax.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fmax.c new file mode 100644 index 000000000..86dcb3b45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fmax.c @@ -0,0 +1,7 @@ +#include + +double fmax(double x, double y) +{ + __asm__ ("fmaxnm %d0, %d1, %d2" : "=w"(x) : "w"(x), "w"(y)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fmaxf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fmaxf.c new file mode 100644 index 000000000..ee5eac2d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fmaxf.c @@ -0,0 +1,7 @@ +#include + +float fmaxf(float x, float y) +{ + __asm__ ("fmaxnm %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fmin.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fmin.c new file mode 100644 index 000000000..f1e99808e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fmin.c @@ -0,0 +1,7 @@ +#include + +double fmin(double x, double y) +{ + __asm__ ("fminnm %d0, %d1, %d2" : "=w"(x) : "w"(x), "w"(y)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/fminf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/fminf.c new file mode 100644 index 000000000..80468f676 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/fminf.c @@ -0,0 +1,7 @@ +#include + +float fminf(float x, float y) +{ + __asm__ ("fminnm %s0, %s1, %s2" : "=w"(x) : "w"(x), "w"(y)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/llrint.c b/vendor/modernc.org/libc/musl/src/math/aarch64/llrint.c new file mode 100644 index 000000000..a9e07a93f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/llrint.c @@ -0,0 +1,10 @@ +#include + +long long llrint(double x) +{ + long long n; + __asm__ ( + "frintx %d1, %d1\n" + "fcvtzs %x0, %d1\n" : "=r"(n), "+w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/llrintf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/llrintf.c new file mode 100644 index 000000000..12b6804f7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/llrintf.c @@ -0,0 +1,10 @@ +#include + +long long llrintf(float x) +{ + long long n; + __asm__ ( + "frintx %s1, %s1\n" + "fcvtzs %x0, %s1\n" : "=r"(n), "+w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/llround.c b/vendor/modernc.org/libc/musl/src/math/aarch64/llround.c new file mode 100644 index 000000000..e09ddd482 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/llround.c @@ -0,0 +1,8 @@ +#include + +long long llround(double x) +{ + long long n; + __asm__ ("fcvtas %x0, %d1" : "=r"(n) : "w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/llroundf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/llroundf.c new file mode 100644 index 000000000..16699598a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/llroundf.c @@ -0,0 +1,8 @@ +#include + +long long llroundf(float x) +{ + long long n; + __asm__ ("fcvtas %x0, %s1" : "=r"(n) : "w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/lrint.c b/vendor/modernc.org/libc/musl/src/math/aarch64/lrint.c new file mode 100644 index 000000000..cb7785ad1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/lrint.c @@ -0,0 +1,10 @@ +#include + +long lrint(double x) +{ + long n; + __asm__ ( + "frintx %d1, %d1\n" + "fcvtzs %x0, %d1\n" : "=r"(n), "+w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/lrintf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/lrintf.c new file mode 100644 index 000000000..4d750d699 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/lrintf.c @@ -0,0 +1,10 @@ +#include + +long lrintf(float x) +{ + long n; + __asm__ ( + "frintx %s1, %s1\n" + "fcvtzs %x0, %s1\n" : "=r"(n), "+w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/lround.c b/vendor/modernc.org/libc/musl/src/math/aarch64/lround.c new file mode 100644 index 000000000..85656c78d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/lround.c @@ -0,0 +1,8 @@ +#include + +long lround(double x) +{ + long n; + __asm__ ("fcvtas %x0, %d1" : "=r"(n) : "w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/lroundf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/lroundf.c new file mode 100644 index 000000000..32e51f3cc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/lroundf.c @@ -0,0 +1,8 @@ +#include + +long lroundf(float x) +{ + long n; + __asm__ ("fcvtas %x0, %s1" : "=r"(n) : "w"(x)); + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyint.c b/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyint.c new file mode 100644 index 000000000..9c3fdb445 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyint.c @@ -0,0 +1,7 @@ +#include + +double nearbyint(double x) +{ + __asm__ ("frinti %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyintf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyintf.c new file mode 100644 index 000000000..8e7f61df8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/nearbyintf.c @@ -0,0 +1,7 @@ +#include + +float nearbyintf(float x) +{ + __asm__ ("frinti %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/rint.c b/vendor/modernc.org/libc/musl/src/math/aarch64/rint.c new file mode 100644 index 000000000..45b194b5e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/rint.c @@ -0,0 +1,7 @@ +#include + +double rint(double x) +{ + __asm__ ("frintx %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/rintf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/rintf.c new file mode 100644 index 000000000..1ae7dd254 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/rintf.c @@ -0,0 +1,7 @@ +#include + +float rintf(float x) +{ + __asm__ ("frintx %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/round.c b/vendor/modernc.org/libc/musl/src/math/aarch64/round.c new file mode 100644 index 000000000..897a84cc2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/round.c @@ -0,0 +1,7 @@ +#include + +double round(double x) +{ + __asm__ ("frinta %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/roundf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/roundf.c new file mode 100644 index 000000000..91637eaa1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/roundf.c @@ -0,0 +1,7 @@ +#include + +float roundf(float x) +{ + __asm__ ("frinta %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/sqrt.c b/vendor/modernc.org/libc/musl/src/math/aarch64/sqrt.c new file mode 100644 index 000000000..fe93c3e6a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/sqrt.c @@ -0,0 +1,7 @@ +#include + +double sqrt(double x) +{ + __asm__ ("fsqrt %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/sqrtf.c new file mode 100644 index 000000000..275c7f399 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/sqrtf.c @@ -0,0 +1,7 @@ +#include + +float sqrtf(float x) +{ + __asm__ ("fsqrt %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/trunc.c b/vendor/modernc.org/libc/musl/src/math/aarch64/trunc.c new file mode 100644 index 000000000..e592147a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/trunc.c @@ -0,0 +1,7 @@ +#include + +double trunc(double x) +{ + __asm__ ("frintz %d0, %d1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/aarch64/truncf.c b/vendor/modernc.org/libc/musl/src/math/aarch64/truncf.c new file mode 100644 index 000000000..20ef30f12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/aarch64/truncf.c @@ -0,0 +1,7 @@ +#include + +float truncf(float x) +{ + __asm__ ("frintz %s0, %s1" : "=w"(x) : "w"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/acos.c b/vendor/modernc.org/libc/musl/src/math/acos.c new file mode 100644 index 000000000..ea9c87bf0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acos.c @@ -0,0 +1,101 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_acos.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* acos(x) + * Method : + * acos(x) = pi/2 - asin(x) + * acos(-x) = pi/2 + asin(x) + * For |x|<=0.5 + * acos(x) = pi/2 - (x + x*x^2*R(x^2)) (see asin.c) + * For x>0.5 + * acos(x) = pi/2 - (pi/2 - 2asin(sqrt((1-x)/2))) + * = 2asin(sqrt((1-x)/2)) + * = 2s + 2s*z*R(z) ...z=(1-x)/2, s=sqrt(z) + * = 2f + (2c + 2s*z*R(z)) + * where f=hi part of s, and c = (z-f*f)/(s+f) is the correction term + * for f so that f+c ~ sqrt(z). + * For x<-0.5 + * acos(x) = pi - 2asin(sqrt((1-|x|)/2)) + * = pi - 0.5*(s+s*z*R(z)), where z=(1-|x|)/2,s=sqrt(z) + * + * Special cases: + * if x is NaN, return x itself; + * if |x|>1, return NaN with invalid signal. + * + * Function needed: sqrt + */ + +#include "libm.h" + +static const double +pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ +pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ +pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ +pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ +pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ +pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ +pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ +pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ +qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ +qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ +qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ +qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ + +static double R(double z) +{ + double_t p, q; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + return p/q; +} + +double acos(double x) +{ + double z,w,s,c,df; + uint32_t hx,ix; + + GET_HIGH_WORD(hx, x); + ix = hx & 0x7fffffff; + /* |x| >= 1 or nan */ + if (ix >= 0x3ff00000) { + uint32_t lx; + + GET_LOW_WORD(lx,x); + if ((ix-0x3ff00000 | lx) == 0) { + /* acos(1)=0, acos(-1)=pi */ + if (hx >> 31) + return 2*pio2_hi + 0x1p-120f; + return 0; + } + return 0/(x-x); + } + /* |x| < 0.5 */ + if (ix < 0x3fe00000) { + if (ix <= 0x3c600000) /* |x| < 2**-57 */ + return pio2_hi + 0x1p-120f; + return pio2_hi - (x - (pio2_lo-x*R(x*x))); + } + /* x < -0.5 */ + if (hx >> 31) { + z = (1.0+x)*0.5; + s = sqrt(z); + w = R(z)*s-pio2_lo; + return 2*(pio2_hi - (s+w)); + } + /* x > 0.5 */ + z = (1.0-x)*0.5; + s = sqrt(z); + df = s; + SET_LOW_WORD(df,0); + c = (z-df*df)/(s+df); + w = R(z)*s+c; + return 2*(df+w); +} diff --git a/vendor/modernc.org/libc/musl/src/math/acosf.c b/vendor/modernc.org/libc/musl/src/math/acosf.c new file mode 100644 index 000000000..8ee1a71d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acosf.c @@ -0,0 +1,71 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_acosf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */ +pio2_lo = 7.5497894159e-08, /* 0x33a22168 */ +pS0 = 1.6666586697e-01, +pS1 = -4.2743422091e-02, +pS2 = -8.6563630030e-03, +qS1 = -7.0662963390e-01; + +static float R(float z) +{ + float_t p, q; + p = z*(pS0+z*(pS1+z*pS2)); + q = 1.0f+z*qS1; + return p/q; +} + +float acosf(float x) +{ + float z,w,s,c,df; + uint32_t hx,ix; + + GET_FLOAT_WORD(hx, x); + ix = hx & 0x7fffffff; + /* |x| >= 1 or nan */ + if (ix >= 0x3f800000) { + if (ix == 0x3f800000) { + if (hx >> 31) + return 2*pio2_hi + 0x1p-120f; + return 0; + } + return 0/(x-x); + } + /* |x| < 0.5 */ + if (ix < 0x3f000000) { + if (ix <= 0x32800000) /* |x| < 2**-26 */ + return pio2_hi + 0x1p-120f; + return pio2_hi - (x - (pio2_lo-x*R(x*x))); + } + /* x < -0.5 */ + if (hx >> 31) { + z = (1+x)*0.5f; + s = sqrtf(z); + w = R(z)*s-pio2_lo; + return 2*(pio2_hi - (s+w)); + } + /* x > 0.5 */ + z = (1-x)*0.5f; + s = sqrtf(z); + GET_FLOAT_WORD(hx,s); + SET_FLOAT_WORD(df,hx&0xfffff000); + c = (z-df*df)/(s+df); + w = R(z)*s+c; + return 2*(df+w); +} diff --git a/vendor/modernc.org/libc/musl/src/math/acosh.c b/vendor/modernc.org/libc/musl/src/math/acosh.c new file mode 100644 index 000000000..badbf9081 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acosh.c @@ -0,0 +1,24 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==2 +#undef sqrt +#define sqrt sqrtl +#endif + +/* acosh(x) = log(x + sqrt(x*x-1)) */ +double acosh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + unsigned e = u.i >> 52 & 0x7ff; + + /* x < 1 domain error is handled in the called functions */ + + if (e < 0x3ff + 1) + /* |x| < 2, up to 2ulp error in [1,1.125] */ + return log1p(x-1 + sqrt((x-1)*(x-1)+2*(x-1))); + if (e < 0x3ff + 26) + /* |x| < 0x1p26 */ + return log(2*x - 1/(x+sqrt(x*x-1))); + /* |x| >= 0x1p26 or nan */ + return log(x) + 0.693147180559945309417232121458176568; +} diff --git a/vendor/modernc.org/libc/musl/src/math/acoshf.c b/vendor/modernc.org/libc/musl/src/math/acoshf.c new file mode 100644 index 000000000..8a4ec4d57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acoshf.c @@ -0,0 +1,26 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==2 +#undef sqrtf +#define sqrtf sqrtl +#elif FLT_EVAL_METHOD==1 +#undef sqrtf +#define sqrtf sqrt +#endif + +/* acosh(x) = log(x + sqrt(x*x-1)) */ +float acoshf(float x) +{ + union {float f; uint32_t i;} u = {x}; + uint32_t a = u.i & 0x7fffffff; + + if (a < 0x3f800000+(1<<23)) + /* |x| < 2, invalid if x < 1 or nan */ + /* up to 2ulp error in [1,1.125] */ + return log1pf(x-1 + sqrtf((x-1)*(x-1)+2*(x-1))); + if (a < 0x3f800000+(12<<23)) + /* |x| < 0x1p12 */ + return logf(2*x - 1/(x+sqrtf(x*x-1))); + /* x >= 0x1p12 */ + return logf(x) + 0.693147180559945309417232121458176568f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/acoshl.c b/vendor/modernc.org/libc/musl/src/math/acoshl.c new file mode 100644 index 000000000..8d4b43f64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acoshl.c @@ -0,0 +1,29 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double acoshl(long double x) +{ + return acosh(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* acosh(x) = log(x + sqrt(x*x-1)) */ +long double acoshl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + + if (e < 0x3fff + 1) + /* |x| < 2, invalid if x < 1 or nan */ + return log1pl(x-1 + sqrtl((x-1)*(x-1)+2*(x-1))); + if (e < 0x3fff + 32) + /* |x| < 0x1p32 */ + return logl(2*x - 1/(x+sqrtl(x*x-1))); + return logl(x) + 0.693147180559945309417232121458176568L; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double acoshl(long double x) +{ + return acosh(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/acosl.c b/vendor/modernc.org/libc/musl/src/math/acosl.c new file mode 100644 index 000000000..c03bdf023 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/acosl.c @@ -0,0 +1,67 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_acosl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * See comments in acos.c. + * Converted to long double by David Schultz . + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double acosl(long double x) +{ + return acos(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#include "__invtrigl.h" +#if LDBL_MANT_DIG == 64 +#define CLEARBOTTOM(u) (u.i.m &= -1ULL << 32) +#elif LDBL_MANT_DIG == 113 +#define CLEARBOTTOM(u) (u.i.lo = 0) +#endif + +long double acosl(long double x) +{ + union ldshape u = {x}; + long double z, s, c, f; + uint16_t e = u.i.se & 0x7fff; + + /* |x| >= 1 or nan */ + if (e >= 0x3fff) { + if (x == 1) + return 0; + if (x == -1) + return 2*pio2_hi + 0x1p-120f; + return 0/(x-x); + } + /* |x| < 0.5 */ + if (e < 0x3fff - 1) { + if (e < 0x3fff - LDBL_MANT_DIG - 1) + return pio2_hi + 0x1p-120f; + return pio2_hi - (__invtrigl_R(x*x)*x - pio2_lo + x); + } + /* x < -0.5 */ + if (u.i.se >> 15) { + z = (1 + x)*0.5; + s = sqrtl(z); + return 2*(pio2_hi - (__invtrigl_R(z)*s - pio2_lo + s)); + } + /* x > 0.5 */ + z = (1 - x)*0.5; + s = sqrtl(z); + u.f = s; + CLEARBOTTOM(u); + f = u.f; + c = (z - f*f)/(s + f); + return 2*(__invtrigl_R(z)*s + c + f); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/fabs.c b/vendor/modernc.org/libc/musl/src/math/arm/fabs.c new file mode 100644 index 000000000..f890520a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/fabs.c @@ -0,0 +1,15 @@ +#include + +#if __ARM_PCS_VFP + +double fabs(double x) +{ + __asm__ ("vabs.f64 %P0, %P1" : "=w"(x) : "w"(x)); + return x; +} + +#else + +#include "../fabs.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/fabsf.c b/vendor/modernc.org/libc/musl/src/math/arm/fabsf.c new file mode 100644 index 000000000..4a217c988 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/fabsf.c @@ -0,0 +1,15 @@ +#include + +#if __ARM_PCS_VFP && !BROKEN_VFP_ASM + +float fabsf(float x) +{ + __asm__ ("vabs.f32 %0, %1" : "=t"(x) : "t"(x)); + return x; +} + +#else + +#include "../fabsf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/fma.c b/vendor/modernc.org/libc/musl/src/math/arm/fma.c new file mode 100644 index 000000000..2a9b8efa7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/fma.c @@ -0,0 +1,15 @@ +#include + +#if __ARM_FEATURE_FMA && __ARM_FP&8 && !__SOFTFP__ + +double fma(double x, double y, double z) +{ + __asm__ ("vfma.f64 %P0, %P1, %P2" : "+w"(z) : "w"(x), "w"(y)); + return z; +} + +#else + +#include "../fma.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/fmaf.c b/vendor/modernc.org/libc/musl/src/math/arm/fmaf.c new file mode 100644 index 000000000..a1793d27f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/fmaf.c @@ -0,0 +1,15 @@ +#include + +#if __ARM_FEATURE_FMA && __ARM_FP&4 && !__SOFTFP__ && !BROKEN_VFP_ASM + +float fmaf(float x, float y, float z) +{ + __asm__ ("vfma.f32 %0, %1, %2" : "+t"(z) : "t"(x), "t"(y)); + return z; +} + +#else + +#include "../fmaf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/sqrt.c b/vendor/modernc.org/libc/musl/src/math/arm/sqrt.c new file mode 100644 index 000000000..874af9606 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/sqrt.c @@ -0,0 +1,15 @@ +#include + +#if __ARM_PCS_VFP || (__VFP_FP__ && !__SOFTFP__) + +double sqrt(double x) +{ + __asm__ ("vsqrt.f64 %P0, %P1" : "=w"(x) : "w"(x)); + return x; +} + +#else + +#include "../sqrt.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/arm/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/arm/sqrtf.c new file mode 100644 index 000000000..32693293b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/arm/sqrtf.c @@ -0,0 +1,15 @@ +#include + +#if (__ARM_PCS_VFP || (__VFP_FP__ && !__SOFTFP__)) && !BROKEN_VFP_ASM + +float sqrtf(float x) +{ + __asm__ ("vsqrt.f32 %0, %1" : "=t"(x) : "t"(x)); + return x; +} + +#else + +#include "../sqrtf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/asin.c b/vendor/modernc.org/libc/musl/src/math/asin.c new file mode 100644 index 000000000..c926b1885 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asin.c @@ -0,0 +1,107 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_asin.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* asin(x) + * Method : + * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ... + * we approximate asin(x) on [0,0.5] by + * asin(x) = x + x*x^2*R(x^2) + * where + * R(x^2) is a rational approximation of (asin(x)-x)/x^3 + * and its remez error is bounded by + * |(asin(x)-x)/x^3 - R(x^2)| < 2^(-58.75) + * + * For x in [0.5,1] + * asin(x) = pi/2-2*asin(sqrt((1-x)/2)) + * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2; + * then for x>0.98 + * asin(x) = pi/2 - 2*(s+s*z*R(z)) + * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo) + * For x<=0.98, let pio4_hi = pio2_hi/2, then + * f = hi part of s; + * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z) + * and + * asin(x) = pi/2 - 2*(s+s*z*R(z)) + * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo) + * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c)) + * + * Special cases: + * if x is NaN, return x itself; + * if |x|>1, return NaN with invalid signal. + * + */ + +#include "libm.h" + +static const double +pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ +pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ +/* coefficients for R(x^2) */ +pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ +pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ +pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ +pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ +pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ +pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ +qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ +qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ +qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ +qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ + +static double R(double z) +{ + double_t p, q; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + return p/q; +} + +double asin(double x) +{ + double z,r,s; + uint32_t hx,ix; + + GET_HIGH_WORD(hx, x); + ix = hx & 0x7fffffff; + /* |x| >= 1 or nan */ + if (ix >= 0x3ff00000) { + uint32_t lx; + GET_LOW_WORD(lx, x); + if ((ix-0x3ff00000 | lx) == 0) + /* asin(1) = +-pi/2 with inexact */ + return x*pio2_hi + 0x1p-120f; + return 0/(x-x); + } + /* |x| < 0.5 */ + if (ix < 0x3fe00000) { + /* if 0x1p-1022 <= |x| < 0x1p-26, avoid raising underflow */ + if (ix < 0x3e500000 && ix >= 0x00100000) + return x; + return x + x*R(x*x); + } + /* 1 > |x| >= 0.5 */ + z = (1 - fabs(x))*0.5; + s = sqrt(z); + r = R(z); + if (ix >= 0x3fef3333) { /* if |x| > 0.975 */ + x = pio2_hi-(2*(s+s*r)-pio2_lo); + } else { + double f,c; + /* f+c = sqrt(z) */ + f = s; + SET_LOW_WORD(f,0); + c = (z-f*f)/(s+f); + x = 0.5*pio2_hi - (2*s*r - (pio2_lo-2*c) - (0.5*pio2_hi-2*f)); + } + if (hx >> 31) + return -x; + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/asinf.c b/vendor/modernc.org/libc/musl/src/math/asinf.c new file mode 100644 index 000000000..bcd304a34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asinf.c @@ -0,0 +1,61 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_asinf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +#include "libm.h" + +static const double +pio2 = 1.570796326794896558e+00; + +static const float +/* coefficients for R(x^2) */ +pS0 = 1.6666586697e-01, +pS1 = -4.2743422091e-02, +pS2 = -8.6563630030e-03, +qS1 = -7.0662963390e-01; + +static float R(float z) +{ + float_t p, q; + p = z*(pS0+z*(pS1+z*pS2)); + q = 1.0f+z*qS1; + return p/q; +} + +float asinf(float x) +{ + double s; + float z; + uint32_t hx,ix; + + GET_FLOAT_WORD(hx, x); + ix = hx & 0x7fffffff; + if (ix >= 0x3f800000) { /* |x| >= 1 */ + if (ix == 0x3f800000) /* |x| == 1 */ + return x*pio2 + 0x1p-120f; /* asin(+-1) = +-pi/2 with inexact */ + return 0/(x-x); /* asin(|x|>1) is NaN */ + } + if (ix < 0x3f000000) { /* |x| < 0.5 */ + /* if 0x1p-126 <= |x| < 0x1p-12, avoid raising underflow */ + if (ix < 0x39800000 && ix >= 0x00800000) + return x; + return x + x*R(x*x); + } + /* 1 > |x| >= 0.5 */ + z = (1 - fabsf(x))*0.5f; + s = sqrt(z); + x = pio2 - 2*(s+s*R(z)); + if (hx >> 31) + return -x; + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/asinh.c b/vendor/modernc.org/libc/musl/src/math/asinh.c new file mode 100644 index 000000000..0829f228e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asinh.c @@ -0,0 +1,28 @@ +#include "libm.h" + +/* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */ +double asinh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + unsigned e = u.i >> 52 & 0x7ff; + unsigned s = u.i >> 63; + + /* |x| */ + u.i &= (uint64_t)-1/2; + x = u.f; + + if (e >= 0x3ff + 26) { + /* |x| >= 0x1p26 or inf or nan */ + x = log(x) + 0.693147180559945309417232121458176568; + } else if (e >= 0x3ff + 1) { + /* |x| >= 2 */ + x = log(2*x + 1/(sqrt(x*x+1)+x)); + } else if (e >= 0x3ff - 26) { + /* |x| >= 0x1p-26, up to 1.6ulp error in [0.125,0.5] */ + x = log1p(x + x*x/(sqrt(x*x+1)+1)); + } else { + /* |x| < 0x1p-26, raise inexact if x != 0 */ + FORCE_EVAL(x + 0x1p120f); + } + return s ? -x : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/asinhf.c b/vendor/modernc.org/libc/musl/src/math/asinhf.c new file mode 100644 index 000000000..fc9f0911b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asinhf.c @@ -0,0 +1,28 @@ +#include "libm.h" + +/* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */ +float asinhf(float x) +{ + union {float f; uint32_t i;} u = {.f = x}; + uint32_t i = u.i & 0x7fffffff; + unsigned s = u.i >> 31; + + /* |x| */ + u.i = i; + x = u.f; + + if (i >= 0x3f800000 + (12<<23)) { + /* |x| >= 0x1p12 or inf or nan */ + x = logf(x) + 0.693147180559945309417232121458176568f; + } else if (i >= 0x3f800000 + (1<<23)) { + /* |x| >= 2 */ + x = logf(2*x + 1/(sqrtf(x*x+1)+x)); + } else if (i >= 0x3f800000 - (12<<23)) { + /* |x| >= 0x1p-12, up to 1.6ulp error in [0.125,0.5] */ + x = log1pf(x + x*x/(sqrtf(x*x+1)+1)); + } else { + /* |x| < 0x1p-12, raise inexact if x!=0 */ + FORCE_EVAL(x + 0x1p120f); + } + return s ? -x : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/asinhl.c b/vendor/modernc.org/libc/musl/src/math/asinhl.c new file mode 100644 index 000000000..8635f52e8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asinhl.c @@ -0,0 +1,41 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double asinhl(long double x) +{ + return asinh(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */ +long double asinhl(long double x) +{ + union ldshape u = {x}; + unsigned e = u.i.se & 0x7fff; + unsigned s = u.i.se >> 15; + + /* |x| */ + u.i.se = e; + x = u.f; + + if (e >= 0x3fff + 32) { + /* |x| >= 0x1p32 or inf or nan */ + x = logl(x) + 0.693147180559945309417232121458176568L; + } else if (e >= 0x3fff + 1) { + /* |x| >= 2 */ + x = logl(2*x + 1/(sqrtl(x*x+1)+x)); + } else if (e >= 0x3fff - 32) { + /* |x| >= 0x1p-32 */ + x = log1pl(x + x*x/(sqrtl(x*x+1)+1)); + } else { + /* |x| < 0x1p-32, raise inexact if x!=0 */ + FORCE_EVAL(x + 0x1p120f); + } + return s ? -x : x; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double asinhl(long double x) +{ + return asinh(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/asinl.c b/vendor/modernc.org/libc/musl/src/math/asinl.c new file mode 100644 index 000000000..347c53568 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/asinl.c @@ -0,0 +1,71 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_asinl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * See comments in asin.c. + * Converted to long double by David Schultz . + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double asinl(long double x) +{ + return asin(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#include "__invtrigl.h" +#if LDBL_MANT_DIG == 64 +#define CLOSETO1(u) (u.i.m>>56 >= 0xf7) +#define CLEARBOTTOM(u) (u.i.m &= -1ULL << 32) +#elif LDBL_MANT_DIG == 113 +#define CLOSETO1(u) (u.i.top >= 0xee00) +#define CLEARBOTTOM(u) (u.i.lo = 0) +#endif + +long double asinl(long double x) +{ + union ldshape u = {x}; + long double z, r, s; + uint16_t e = u.i.se & 0x7fff; + int sign = u.i.se >> 15; + + if (e >= 0x3fff) { /* |x| >= 1 or nan */ + /* asin(+-1)=+-pi/2 with inexact */ + if (x == 1 || x == -1) + return x*pio2_hi + 0x1p-120f; + return 0/(x-x); + } + if (e < 0x3fff - 1) { /* |x| < 0.5 */ + if (e < 0x3fff - (LDBL_MANT_DIG+1)/2) { + /* return x with inexact if x!=0 */ + FORCE_EVAL(x + 0x1p120f); + return x; + } + return x + x*__invtrigl_R(x*x); + } + /* 1 > |x| >= 0.5 */ + z = (1.0 - fabsl(x))*0.5; + s = sqrtl(z); + r = __invtrigl_R(z); + if (CLOSETO1(u)) { + x = pio2_hi - (2*(s+s*r)-pio2_lo); + } else { + long double f, c; + u.f = s; + CLEARBOTTOM(u); + f = u.f; + c = (z - f*f)/(s + f); + x = 0.5*pio2_hi-(2*s*r - (pio2_lo-2*c) - (0.5*pio2_hi-2*f)); + } + return sign ? -x : x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/atan.c b/vendor/modernc.org/libc/musl/src/math/atan.c new file mode 100644 index 000000000..63b0ab25e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atan.c @@ -0,0 +1,116 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_atan.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* atan(x) + * Method + * 1. Reduce x to positive by atan(x) = -atan(-x). + * 2. According to the integer k=4t+0.25 chopped, t=x, the argument + * is further reduced to one of the following intervals and the + * arctangent of t is evaluated by the corresponding formula: + * + * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) + * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) ) + * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) ) + * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) ) + * [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + + +#include "libm.h" + +static const double atanhi[] = { + 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */ + 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */ + 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */ + 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */ +}; + +static const double atanlo[] = { + 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */ + 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */ + 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */ + 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */ +}; + +static const double aT[] = { + 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */ + -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */ + 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */ + -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */ + 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */ + -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */ + 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */ + -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */ + 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */ + -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */ + 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ +}; + +double atan(double x) +{ + double_t w,s1,s2,z; + uint32_t ix,sign; + int id; + + GET_HIGH_WORD(ix, x); + sign = ix >> 31; + ix &= 0x7fffffff; + if (ix >= 0x44100000) { /* if |x| >= 2^66 */ + if (isnan(x)) + return x; + z = atanhi[3] + 0x1p-120f; + return sign ? -z : z; + } + if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ + if (ix < 0x3e400000) { /* |x| < 2^-27 */ + if (ix < 0x00100000) + /* raise underflow for subnormal x */ + FORCE_EVAL((float)x); + return x; + } + id = -1; + } else { + x = fabs(x); + if (ix < 0x3ff30000) { /* |x| < 1.1875 */ + if (ix < 0x3fe60000) { /* 7/16 <= |x| < 11/16 */ + id = 0; + x = (2.0*x-1.0)/(2.0+x); + } else { /* 11/16 <= |x| < 19/16 */ + id = 1; + x = (x-1.0)/(x+1.0); + } + } else { + if (ix < 0x40038000) { /* |x| < 2.4375 */ + id = 2; + x = (x-1.5)/(1.0+1.5*x); + } else { /* 2.4375 <= |x| < 2^66 */ + id = 3; + x = -1.0/x; + } + } + } + /* end of argument reduction */ + z = x*x; + w = z*z; + /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ + s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10]))))); + s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9])))); + if (id < 0) + return x - x*(s1+s2); + z = atanhi[id] - (x*(s1+s2) - atanlo[id] - x); + return sign ? -z : z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/atan2.c b/vendor/modernc.org/libc/musl/src/math/atan2.c new file mode 100644 index 000000000..5a1903c62 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atan2.c @@ -0,0 +1,107 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_atan2.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ +/* atan2(y,x) + * Method : + * 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x). + * 2. Reduce x to positive by (if x and y are unexceptional): + * ARG (x+iy) = arctan(y/x) ... if x > 0, + * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0, + * + * Special cases: + * + * ATAN2((anything), NaN ) is NaN; + * ATAN2(NAN , (anything) ) is NaN; + * ATAN2(+-0, +(anything but NaN)) is +-0 ; + * ATAN2(+-0, -(anything but NaN)) is +-pi ; + * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2; + * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ; + * ATAN2(+-(anything but INF and NaN), -INF) is +-pi; + * ATAN2(+-INF,+INF ) is +-pi/4 ; + * ATAN2(+-INF,-INF ) is +-3pi/4; + * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2; + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "libm.h" + +static const double +pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */ +pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */ + +double atan2(double y, double x) +{ + double z; + uint32_t m,lx,ly,ix,iy; + + if (isnan(x) || isnan(y)) + return x+y; + EXTRACT_WORDS(ix, lx, x); + EXTRACT_WORDS(iy, ly, y); + if ((ix-0x3ff00000 | lx) == 0) /* x = 1.0 */ + return atan(y); + m = ((iy>>31)&1) | ((ix>>30)&2); /* 2*sign(x)+sign(y) */ + ix = ix & 0x7fffffff; + iy = iy & 0x7fffffff; + + /* when y = 0 */ + if ((iy|ly) == 0) { + switch(m) { + case 0: + case 1: return y; /* atan(+-0,+anything)=+-0 */ + case 2: return pi; /* atan(+0,-anything) = pi */ + case 3: return -pi; /* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if ((ix|lx) == 0) + return m&1 ? -pi/2 : pi/2; + /* when x is INF */ + if (ix == 0x7ff00000) { + if (iy == 0x7ff00000) { + switch(m) { + case 0: return pi/4; /* atan(+INF,+INF) */ + case 1: return -pi/4; /* atan(-INF,+INF) */ + case 2: return 3*pi/4; /* atan(+INF,-INF) */ + case 3: return -3*pi/4; /* atan(-INF,-INF) */ + } + } else { + switch(m) { + case 0: return 0.0; /* atan(+...,+INF) */ + case 1: return -0.0; /* atan(-...,+INF) */ + case 2: return pi; /* atan(+...,-INF) */ + case 3: return -pi; /* atan(-...,-INF) */ + } + } + } + /* |y/x| > 0x1p64 */ + if (ix+(64<<20) < iy || iy == 0x7ff00000) + return m&1 ? -pi/2 : pi/2; + + /* z = atan(|y/x|) without spurious underflow */ + if ((m&2) && iy+(64<<20) < ix) /* |y/x| < 0x1p-64, x<0 */ + z = 0; + else + z = atan(fabs(y/x)); + switch (m) { + case 0: return z; /* atan(+,+) */ + case 1: return -z; /* atan(-,+) */ + case 2: return pi - (z-pi_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z-pi_lo) - pi; /* atan(-,-) */ + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/atan2f.c b/vendor/modernc.org/libc/musl/src/math/atan2f.c new file mode 100644 index 000000000..c634d00fc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atan2f.c @@ -0,0 +1,83 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_atan2f.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +pi = 3.1415927410e+00, /* 0x40490fdb */ +pi_lo = -8.7422776573e-08; /* 0xb3bbbd2e */ + +float atan2f(float y, float x) +{ + float z; + uint32_t m,ix,iy; + + if (isnan(x) || isnan(y)) + return x+y; + GET_FLOAT_WORD(ix, x); + GET_FLOAT_WORD(iy, y); + if (ix == 0x3f800000) /* x=1.0 */ + return atanf(y); + m = ((iy>>31)&1) | ((ix>>30)&2); /* 2*sign(x)+sign(y) */ + ix &= 0x7fffffff; + iy &= 0x7fffffff; + + /* when y = 0 */ + if (iy == 0) { + switch (m) { + case 0: + case 1: return y; /* atan(+-0,+anything)=+-0 */ + case 2: return pi; /* atan(+0,-anything) = pi */ + case 3: return -pi; /* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if (ix == 0) + return m&1 ? -pi/2 : pi/2; + /* when x is INF */ + if (ix == 0x7f800000) { + if (iy == 0x7f800000) { + switch (m) { + case 0: return pi/4; /* atan(+INF,+INF) */ + case 1: return -pi/4; /* atan(-INF,+INF) */ + case 2: return 3*pi/4; /*atan(+INF,-INF)*/ + case 3: return -3*pi/4; /*atan(-INF,-INF)*/ + } + } else { + switch (m) { + case 0: return 0.0f; /* atan(+...,+INF) */ + case 1: return -0.0f; /* atan(-...,+INF) */ + case 2: return pi; /* atan(+...,-INF) */ + case 3: return -pi; /* atan(-...,-INF) */ + } + } + } + /* |y/x| > 0x1p26 */ + if (ix+(26<<23) < iy || iy == 0x7f800000) + return m&1 ? -pi/2 : pi/2; + + /* z = atan(|y/x|) with correct underflow */ + if ((m&2) && iy+(26<<23) < ix) /*|y/x| < 0x1p-26, x < 0 */ + z = 0.0; + else + z = atanf(fabsf(y/x)); + switch (m) { + case 0: return z; /* atan(+,+) */ + case 1: return -z; /* atan(-,+) */ + case 2: return pi - (z-pi_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z-pi_lo) - pi; /* atan(-,-) */ + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/atan2l.c b/vendor/modernc.org/libc/musl/src/math/atan2l.c new file mode 100644 index 000000000..f0937a979 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atan2l.c @@ -0,0 +1,85 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_atan2l.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ +/* + * See comments in atan2.c. + * Converted to long double by David Schultz . + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double atan2l(long double y, long double x) +{ + return atan2(y, x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#include "__invtrigl.h" + +long double atan2l(long double y, long double x) +{ + union ldshape ux, uy; + long double z; + int m, ex, ey; + + if (isnan(x) || isnan(y)) + return x+y; + if (x == 1) + return atanl(y); + ux.f = x; + uy.f = y; + ex = ux.i.se & 0x7fff; + ey = uy.i.se & 0x7fff; + m = 2*(ux.i.se>>15) | uy.i.se>>15; + if (y == 0) { + switch(m) { + case 0: + case 1: return y; /* atan(+-0,+anything)=+-0 */ + case 2: return 2*pio2_hi; /* atan(+0,-anything) = pi */ + case 3: return -2*pio2_hi; /* atan(-0,-anything) =-pi */ + } + } + if (x == 0) + return m&1 ? -pio2_hi : pio2_hi; + if (ex == 0x7fff) { + if (ey == 0x7fff) { + switch(m) { + case 0: return pio2_hi/2; /* atan(+INF,+INF) */ + case 1: return -pio2_hi/2; /* atan(-INF,+INF) */ + case 2: return 1.5*pio2_hi; /* atan(+INF,-INF) */ + case 3: return -1.5*pio2_hi; /* atan(-INF,-INF) */ + } + } else { + switch(m) { + case 0: return 0.0; /* atan(+...,+INF) */ + case 1: return -0.0; /* atan(-...,+INF) */ + case 2: return 2*pio2_hi; /* atan(+...,-INF) */ + case 3: return -2*pio2_hi; /* atan(-...,-INF) */ + } + } + } + if (ex+120 < ey || ey == 0x7fff) + return m&1 ? -pio2_hi : pio2_hi; + /* z = atan(|y/x|) without spurious underflow */ + if ((m&2) && ey+120 < ex) /* |y/x| < 0x1p-120, x<0 */ + z = 0.0; + else + z = atanl(fabsl(y/x)); + switch (m) { + case 0: return z; /* atan(+,+) */ + case 1: return -z; /* atan(-,+) */ + case 2: return 2*pio2_hi-(z-2*pio2_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z-2*pio2_lo)-2*pio2_hi; /* atan(-,-) */ + } +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/atanf.c b/vendor/modernc.org/libc/musl/src/math/atanf.c new file mode 100644 index 000000000..178341b67 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atanf.c @@ -0,0 +1,94 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_atanf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + + +#include "libm.h" + +static const float atanhi[] = { + 4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */ + 7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */ + 9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */ + 1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */ +}; + +static const float atanlo[] = { + 5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */ + 3.7748947079e-08, /* atan(1.0)lo 0x33222168 */ + 3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */ + 7.5497894159e-08, /* atan(inf)lo 0x33a22168 */ +}; + +static const float aT[] = { + 3.3333328366e-01, + -1.9999158382e-01, + 1.4253635705e-01, + -1.0648017377e-01, + 6.1687607318e-02, +}; + +float atanf(float x) +{ + float_t w,s1,s2,z; + uint32_t ix,sign; + int id; + + GET_FLOAT_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x4c800000) { /* if |x| >= 2**26 */ + if (isnan(x)) + return x; + z = atanhi[3] + 0x1p-120f; + return sign ? -z : z; + } + if (ix < 0x3ee00000) { /* |x| < 0.4375 */ + if (ix < 0x39800000) { /* |x| < 2**-12 */ + if (ix < 0x00800000) + /* raise underflow for subnormal x */ + FORCE_EVAL(x*x); + return x; + } + id = -1; + } else { + x = fabsf(x); + if (ix < 0x3f980000) { /* |x| < 1.1875 */ + if (ix < 0x3f300000) { /* 7/16 <= |x| < 11/16 */ + id = 0; + x = (2.0f*x - 1.0f)/(2.0f + x); + } else { /* 11/16 <= |x| < 19/16 */ + id = 1; + x = (x - 1.0f)/(x + 1.0f); + } + } else { + if (ix < 0x401c0000) { /* |x| < 2.4375 */ + id = 2; + x = (x - 1.5f)/(1.0f + 1.5f*x); + } else { /* 2.4375 <= |x| < 2**26 */ + id = 3; + x = -1.0f/x; + } + } + } + /* end of argument reduction */ + z = x*x; + w = z*z; + /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ + s1 = z*(aT[0]+w*(aT[2]+w*aT[4])); + s2 = w*(aT[1]+w*aT[3]); + if (id < 0) + return x - x*(s1+s2); + z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x); + return sign ? -z : z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/atanh.c b/vendor/modernc.org/libc/musl/src/math/atanh.c new file mode 100644 index 000000000..63a035d70 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atanh.c @@ -0,0 +1,29 @@ +#include "libm.h" + +/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */ +double atanh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + unsigned e = u.i >> 52 & 0x7ff; + unsigned s = u.i >> 63; + double_t y; + + /* |x| */ + u.i &= (uint64_t)-1/2; + y = u.f; + + if (e < 0x3ff - 1) { + if (e < 0x3ff - 32) { + /* handle underflow */ + if (e == 0) + FORCE_EVAL((float)y); + } else { + /* |x| < 0.5, up to 1.7ulp error */ + y = 0.5*log1p(2*y + 2*y*y/(1-y)); + } + } else { + /* avoid overflow */ + y = 0.5*log1p(2*(y/(1-y))); + } + return s ? -y : y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/atanhf.c b/vendor/modernc.org/libc/musl/src/math/atanhf.c new file mode 100644 index 000000000..65f07c0f4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atanhf.c @@ -0,0 +1,28 @@ +#include "libm.h" + +/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */ +float atanhf(float x) +{ + union {float f; uint32_t i;} u = {.f = x}; + unsigned s = u.i >> 31; + float_t y; + + /* |x| */ + u.i &= 0x7fffffff; + y = u.f; + + if (u.i < 0x3f800000 - (1<<23)) { + if (u.i < 0x3f800000 - (32<<23)) { + /* handle underflow */ + if (u.i < (1<<23)) + FORCE_EVAL((float)(y*y)); + } else { + /* |x| < 0.5, up to 1.7ulp error */ + y = 0.5f*log1pf(2*y + 2*y*y/(1-y)); + } + } else { + /* avoid overflow */ + y = 0.5f*log1pf(2*(y/(1-y))); + } + return s ? -y : y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/atanhl.c b/vendor/modernc.org/libc/musl/src/math/atanhl.c new file mode 100644 index 000000000..87cd1cdb5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atanhl.c @@ -0,0 +1,35 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double atanhl(long double x) +{ + return atanh(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */ +long double atanhl(long double x) +{ + union ldshape u = {x}; + unsigned e = u.i.se & 0x7fff; + unsigned s = u.i.se >> 15; + + /* |x| */ + u.i.se = e; + x = u.f; + + if (e < 0x3ff - 1) { + if (e < 0x3ff - LDBL_MANT_DIG/2) { + /* handle underflow */ + if (e == 0) + FORCE_EVAL((float)x); + } else { + /* |x| < 0.5, up to 1.7ulp error */ + x = 0.5*log1pl(2*x + 2*x*x/(1-x)); + } + } else { + /* avoid overflow */ + x = 0.5*log1pl(2*(x/(1-x))); + } + return s ? -x : x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/atanl.c b/vendor/modernc.org/libc/musl/src/math/atanl.c new file mode 100644 index 000000000..c3b0c9268 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/atanl.c @@ -0,0 +1,184 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_atanl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * See comments in atan.c. + * Converted to long double by David Schultz . + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double atanl(long double x) +{ + return atan(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +#if LDBL_MANT_DIG == 64 +#define EXPMAN(u) ((u.i.se & 0x7fff)<<8 | (u.i.m>>55 & 0xff)) + +static const long double atanhi[] = { + 4.63647609000806116202e-01L, + 7.85398163397448309628e-01L, + 9.82793723247329067960e-01L, + 1.57079632679489661926e+00L, +}; + +static const long double atanlo[] = { + 1.18469937025062860669e-20L, + -1.25413940316708300586e-20L, + 2.55232234165405176172e-20L, + -2.50827880633416601173e-20L, +}; + +static const long double aT[] = { + 3.33333333333333333017e-01L, + -1.99999999999999632011e-01L, + 1.42857142857046531280e-01L, + -1.11111111100562372733e-01L, + 9.09090902935647302252e-02L, + -7.69230552476207730353e-02L, + 6.66661718042406260546e-02L, + -5.88158892835030888692e-02L, + 5.25499891539726639379e-02L, + -4.70119845393155721494e-02L, + 4.03539201366454414072e-02L, + -2.91303858419364158725e-02L, + 1.24822046299269234080e-02L, +}; + +static long double T_even(long double x) +{ + return aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + + x * (aT[8] + x * (aT[10] + x * aT[12]))))); +} + +static long double T_odd(long double x) +{ + return aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + + x * (aT[9] + x * aT[11])))); +} +#elif LDBL_MANT_DIG == 113 +#define EXPMAN(u) ((u.i.se & 0x7fff)<<8 | u.i.top>>8) + +static const long double atanhi[] = { + 4.63647609000806116214256231461214397e-01L, + 7.85398163397448309615660845819875699e-01L, + 9.82793723247329067985710611014666038e-01L, + 1.57079632679489661923132169163975140e+00L, +}; + +static const long double atanlo[] = { + 4.89509642257333492668618435220297706e-36L, + 2.16795253253094525619926100651083806e-35L, + -2.31288434538183565909319952098066272e-35L, + 4.33590506506189051239852201302167613e-35L, +}; + +static const long double aT[] = { + 3.33333333333333333333333333333333125e-01L, + -1.99999999999999999999999999999180430e-01L, + 1.42857142857142857142857142125269827e-01L, + -1.11111111111111111111110834490810169e-01L, + 9.09090909090909090908522355708623681e-02L, + -7.69230769230769230696553844935357021e-02L, + 6.66666666666666660390096773046256096e-02L, + -5.88235294117646671706582985209643694e-02L, + 5.26315789473666478515847092020327506e-02L, + -4.76190476189855517021024424991436144e-02L, + 4.34782608678695085948531993458097026e-02L, + -3.99999999632663469330634215991142368e-02L, + 3.70370363987423702891250829918659723e-02L, + -3.44827496515048090726669907612335954e-02L, + 3.22579620681420149871973710852268528e-02L, + -3.03020767654269261041647570626778067e-02L, + 2.85641979882534783223403715930946138e-02L, + -2.69824879726738568189929461383741323e-02L, + 2.54194698498808542954187110873675769e-02L, + -2.35083879708189059926183138130183215e-02L, + 2.04832358998165364349957325067131428e-02L, + -1.54489555488544397858507248612362957e-02L, + 8.64492360989278761493037861575248038e-03L, + -2.58521121597609872727919154569765469e-03L, +}; + +static long double T_even(long double x) +{ + return (aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + x * (aT[8] + + x * (aT[10] + x * (aT[12] + x * (aT[14] + x * (aT[16] + + x * (aT[18] + x * (aT[20] + x * aT[22]))))))))))); +} + +static long double T_odd(long double x) +{ + return (aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + x * (aT[9] + + x * (aT[11] + x * (aT[13] + x * (aT[15] + x * (aT[17] + + x * (aT[19] + x * (aT[21] + x * aT[23]))))))))))); +} +#endif + +long double atanl(long double x) +{ + union ldshape u = {x}; + long double w, s1, s2, z; + int id; + unsigned e = u.i.se & 0x7fff; + unsigned sign = u.i.se >> 15; + unsigned expman; + + if (e >= 0x3fff + LDBL_MANT_DIG + 1) { /* if |x| is large, atan(x)~=pi/2 */ + if (isnan(x)) + return x; + return sign ? -atanhi[3] : atanhi[3]; + } + /* Extract the exponent and the first few bits of the mantissa. */ + expman = EXPMAN(u); + if (expman < ((0x3fff - 2) << 8) + 0xc0) { /* |x| < 0.4375 */ + if (e < 0x3fff - (LDBL_MANT_DIG+1)/2) { /* if |x| is small, atanl(x)~=x */ + /* raise underflow if subnormal */ + if (e == 0) + FORCE_EVAL((float)x); + return x; + } + id = -1; + } else { + x = fabsl(x); + if (expman < (0x3fff << 8) + 0x30) { /* |x| < 1.1875 */ + if (expman < ((0x3fff - 1) << 8) + 0x60) { /* 7/16 <= |x| < 11/16 */ + id = 0; + x = (2.0*x-1.0)/(2.0+x); + } else { /* 11/16 <= |x| < 19/16 */ + id = 1; + x = (x-1.0)/(x+1.0); + } + } else { + if (expman < ((0x3fff + 1) << 8) + 0x38) { /* |x| < 2.4375 */ + id = 2; + x = (x-1.5)/(1.0+1.5*x); + } else { /* 2.4375 <= |x| */ + id = 3; + x = -1.0/x; + } + } + } + /* end of argument reduction */ + z = x*x; + w = z*z; + /* break sum aT[i]z**(i+1) into odd and even poly */ + s1 = z*T_even(w); + s2 = w*T_odd(w); + if (id < 0) + return x - x*(s1+s2); + z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x); + return sign ? -z : z; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/cbrt.c b/vendor/modernc.org/libc/musl/src/math/cbrt.c new file mode 100644 index 000000000..7599d3e37 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cbrt.c @@ -0,0 +1,103 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cbrt.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * Optimized by Bruce D. Evans. + */ +/* cbrt(x) + * Return cube root of x + */ + +#include +#include + +static const uint32_t +B1 = 715094163, /* B1 = (1023-1023/3-0.03306235651)*2**20 */ +B2 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */ + +/* |1/cbrt(x) - p(x)| < 2**-23.5 (~[-7.93e-8, 7.929e-8]). */ +static const double +P0 = 1.87595182427177009643, /* 0x3ffe03e6, 0x0f61e692 */ +P1 = -1.88497979543377169875, /* 0xbffe28e0, 0x92f02420 */ +P2 = 1.621429720105354466140, /* 0x3ff9f160, 0x4a49d6c2 */ +P3 = -0.758397934778766047437, /* 0xbfe844cb, 0xbee751d9 */ +P4 = 0.145996192886612446982; /* 0x3fc2b000, 0xd4e4edd7 */ + +double cbrt(double x) +{ + union {double f; uint64_t i;} u = {x}; + double_t r,s,t,w; + uint32_t hx = u.i>>32 & 0x7fffffff; + + if (hx >= 0x7ff00000) /* cbrt(NaN,INF) is itself */ + return x+x; + + /* + * Rough cbrt to 5 bits: + * cbrt(2**e*(1+m) ~= 2**(e/3)*(1+(e%3+m)/3) + * where e is integral and >= 0, m is real and in [0, 1), and "/" and + * "%" are integer division and modulus with rounding towards minus + * infinity. The RHS is always >= the LHS and has a maximum relative + * error of about 1 in 16. Adding a bias of -0.03306235651 to the + * (e%3+m)/3 term reduces the error to about 1 in 32. With the IEEE + * floating point representation, for finite positive normal values, + * ordinary integer divison of the value in bits magically gives + * almost exactly the RHS of the above provided we first subtract the + * exponent bias (1023 for doubles) and later add it back. We do the + * subtraction virtually to keep e >= 0 so that ordinary integer + * division rounds towards minus infinity; this is also efficient. + */ + if (hx < 0x00100000) { /* zero or subnormal? */ + u.f = x*0x1p54; + hx = u.i>>32 & 0x7fffffff; + if (hx == 0) + return x; /* cbrt(0) is itself */ + hx = hx/3 + B2; + } else + hx = hx/3 + B1; + u.i &= 1ULL<<63; + u.i |= (uint64_t)hx << 32; + t = u.f; + + /* + * New cbrt to 23 bits: + * cbrt(x) = t*cbrt(x/t**3) ~= t*P(t**3/x) + * where P(r) is a polynomial of degree 4 that approximates 1/cbrt(r) + * to within 2**-23.5 when |r - 1| < 1/10. The rough approximation + * has produced t such than |t/cbrt(x) - 1| ~< 1/32, and cubing this + * gives us bounds for r = t**3/x. + * + * Try to optimize for parallel evaluation as in __tanf.c. + */ + r = (t*t)*(t/x); + t = t*((P0+r*(P1+r*P2))+((r*r)*r)*(P3+r*P4)); + + /* + * Round t away from zero to 23 bits (sloppily except for ensuring that + * the result is larger in magnitude than cbrt(x) but not much more than + * 2 23-bit ulps larger). With rounding towards zero, the error bound + * would be ~5/6 instead of ~4/6. With a maximum error of 2 23-bit ulps + * in the rounded t, the infinite-precision error in the Newton + * approximation barely affects third digit in the final error + * 0.667; the error in the rounded t can be up to about 3 23-bit ulps + * before the final error is larger than 0.667 ulps. + */ + u.f = t; + u.i = (u.i + 0x80000000) & 0xffffffffc0000000ULL; + t = u.f; + + /* one step Newton iteration to 53 bits with error < 0.667 ulps */ + s = t*t; /* t*t is exact */ + r = x/s; /* error <= 0.5 ulps; |r| < |t| */ + w = t+t; /* t+t is exact */ + r = (r-t)/(w+r); /* r-t is exact; w+r ~= 3*t */ + t = t+t*r; /* error <= 0.5 + 0.5/3 + epsilon */ + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/cbrtf.c b/vendor/modernc.org/libc/musl/src/math/cbrtf.c new file mode 100644 index 000000000..89c2c8655 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cbrtf.c @@ -0,0 +1,66 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cbrtf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Debugged and optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* cbrtf(x) + * Return cube root of x + */ + +#include +#include + +static const unsigned +B1 = 709958130, /* B1 = (127-127.0/3-0.03306235651)*2**23 */ +B2 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */ + +float cbrtf(float x) +{ + double_t r,T; + union {float f; uint32_t i;} u = {x}; + uint32_t hx = u.i & 0x7fffffff; + + if (hx >= 0x7f800000) /* cbrt(NaN,INF) is itself */ + return x + x; + + /* rough cbrt to 5 bits */ + if (hx < 0x00800000) { /* zero or subnormal? */ + if (hx == 0) + return x; /* cbrt(+-0) is itself */ + u.f = x*0x1p24f; + hx = u.i & 0x7fffffff; + hx = hx/3 + B2; + } else + hx = hx/3 + B1; + u.i &= 0x80000000; + u.i |= hx; + + /* + * First step Newton iteration (solving t*t-x/t == 0) to 16 bits. In + * double precision so that its terms can be arranged for efficiency + * without causing overflow or underflow. + */ + T = u.f; + r = T*T*T; + T = T*((double_t)x+x+r)/(x+r+r); + + /* + * Second step Newton iteration to 47 bits. In double precision for + * efficiency and accuracy. + */ + r = T*T*T; + T = T*((double_t)x+x+r)/(x+r+r); + + /* rounding to 24 bits is perfect in round-to-nearest mode */ + return T; +} diff --git a/vendor/modernc.org/libc/musl/src/math/cbrtl.c b/vendor/modernc.org/libc/musl/src/math/cbrtl.c new file mode 100644 index 000000000..ceff9136e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cbrtl.c @@ -0,0 +1,124 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cbrtl.c */ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2009-2011, Bruce D. Evans, Steven G. Kargl, David Schultz. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * The argument reduction and testing for exceptional cases was + * written by Steven G. Kargl with input from Bruce D. Evans + * and David A. Schultz. + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double cbrtl(long double x) +{ + return cbrt(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +static const unsigned B1 = 709958130; /* B1 = (127-127.0/3-0.03306235651)*2**23 */ + +long double cbrtl(long double x) +{ + union ldshape u = {x}, v; + union {float f; uint32_t i;} uft; + long double r, s, t, w; + double_t dr, dt, dx; + float_t ft; + int e = u.i.se & 0x7fff; + int sign = u.i.se & 0x8000; + + /* + * If x = +-Inf, then cbrt(x) = +-Inf. + * If x = NaN, then cbrt(x) = NaN. + */ + if (e == 0x7fff) + return x + x; + if (e == 0) { + /* Adjust subnormal numbers. */ + u.f *= 0x1p120; + e = u.i.se & 0x7fff; + /* If x = +-0, then cbrt(x) = +-0. */ + if (e == 0) + return x; + e -= 120; + } + e -= 0x3fff; + u.i.se = 0x3fff; + x = u.f; + switch (e % 3) { + case 1: + case -2: + x *= 2; + e--; + break; + case 2: + case -1: + x *= 4; + e -= 2; + break; + } + v.f = 1.0; + v.i.se = sign | (0x3fff + e/3); + + /* + * The following is the guts of s_cbrtf, with the handling of + * special values removed and extra care for accuracy not taken, + * but with most of the extra accuracy not discarded. + */ + + /* ~5-bit estimate: */ + uft.f = x; + uft.i = (uft.i & 0x7fffffff)/3 + B1; + ft = uft.f; + + /* ~16-bit estimate: */ + dx = x; + dt = ft; + dr = dt * dt * dt; + dt = dt * (dx + dx + dr) / (dx + dr + dr); + + /* ~47-bit estimate: */ + dr = dt * dt * dt; + dt = dt * (dx + dx + dr) / (dx + dr + dr); + +#if LDBL_MANT_DIG == 64 + /* + * dt is cbrtl(x) to ~47 bits (after x has been reduced to 1 <= x < 8). + * Round it away from zero to 32 bits (32 so that t*t is exact, and + * away from zero for technical reasons). + */ + t = dt + (0x1.0p32L + 0x1.0p-31L) - 0x1.0p32; +#elif LDBL_MANT_DIG == 113 + /* + * Round dt away from zero to 47 bits. Since we don't trust the 47, + * add 2 47-bit ulps instead of 1 to round up. Rounding is slow and + * might be avoidable in this case, since on most machines dt will + * have been evaluated in 53-bit precision and the technical reasons + * for rounding up might not apply to either case in cbrtl() since + * dt is much more accurate than needed. + */ + t = dt + 0x2.0p-46 + 0x1.0p60L - 0x1.0p60; +#endif + + /* + * Final step Newton iteration to 64 or 113 bits with + * error < 0.667 ulps + */ + s = t*t; /* t*t is exact */ + r = x/s; /* error <= 0.5 ulps; |r| < |t| */ + w = t+t; /* t+t is exact */ + r = (r-t)/(w+r); /* r-t is exact; w+r ~= 3*t */ + t = t+t*r; /* error <= 0.5 + 0.5/3 + epsilon */ + + t *= v.f; + return t; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/ceil.c b/vendor/modernc.org/libc/musl/src/math/ceil.c new file mode 100644 index 000000000..b13e6f2d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ceil.c @@ -0,0 +1,31 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const double_t toint = 1/EPS; + +double ceil(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = u.i >> 52 & 0x7ff; + double_t y; + + if (e >= 0x3ff+52 || x == 0) + return x; + /* y = int(x) - x, where int(x) is an integer neighbor of x */ + if (u.i >> 63) + y = x - toint + toint - x; + else + y = x + toint - toint - x; + /* special case because of non-nearest rounding modes */ + if (e <= 0x3ff-1) { + FORCE_EVAL(y); + return u.i >> 63 ? -0.0 : 1; + } + if (y < 0) + return x + y + 1; + return x + y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ceilf.c b/vendor/modernc.org/libc/musl/src/math/ceilf.c new file mode 100644 index 000000000..869835f39 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ceilf.c @@ -0,0 +1,27 @@ +#include "libm.h" + +float ceilf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = (int)(u.i >> 23 & 0xff) - 0x7f; + uint32_t m; + + if (e >= 23) + return x; + if (e >= 0) { + m = 0x007fffff >> e; + if ((u.i & m) == 0) + return x; + FORCE_EVAL(x + 0x1p120f); + if (u.i >> 31 == 0) + u.i += m; + u.i &= ~m; + } else { + FORCE_EVAL(x + 0x1p120f); + if (u.i >> 31) + u.f = -0.0; + else if (u.i << 1) + u.f = 1.0; + } + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ceill.c b/vendor/modernc.org/libc/musl/src/math/ceill.c new file mode 100644 index 000000000..60a83020d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ceill.c @@ -0,0 +1,34 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double ceill(long double x) +{ + return ceil(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double ceill(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + long double y; + + if (e >= 0x3fff+LDBL_MANT_DIG-1 || x == 0) + return x; + /* y = int(x) - x, where int(x) is an integer neighbor of x */ + if (u.i.se >> 15) + y = x - toint + toint - x; + else + y = x + toint - toint - x; + /* special case because of non-nearest rounding modes */ + if (e <= 0x3fff-1) { + FORCE_EVAL(y); + return u.i.se >> 15 ? -0.0 : 1; + } + if (y < 0) + return x + y + 1; + return x + y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/copysign.c b/vendor/modernc.org/libc/musl/src/math/copysign.c new file mode 100644 index 000000000..b09331b68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/copysign.c @@ -0,0 +1,8 @@ +#include "libm.h" + +double copysign(double x, double y) { + union {double f; uint64_t i;} ux={x}, uy={y}; + ux.i &= -1ULL/2; + ux.i |= uy.i & 1ULL<<63; + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/copysignf.c b/vendor/modernc.org/libc/musl/src/math/copysignf.c new file mode 100644 index 000000000..0af6ae9b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/copysignf.c @@ -0,0 +1,10 @@ +#include +#include + +float copysignf(float x, float y) +{ + union {float f; uint32_t i;} ux={x}, uy={y}; + ux.i &= 0x7fffffff; + ux.i |= uy.i & 0x80000000; + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/copysignl.c b/vendor/modernc.org/libc/musl/src/math/copysignl.c new file mode 100644 index 000000000..9dd933cfa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/copysignl.c @@ -0,0 +1,16 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double copysignl(long double x, long double y) +{ + return copysign(x, y); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double copysignl(long double x, long double y) +{ + union ldshape ux = {x}, uy = {y}; + ux.i.se &= 0x7fff; + ux.i.se |= uy.i.se & 0x8000; + return ux.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/cos.c b/vendor/modernc.org/libc/musl/src/math/cos.c new file mode 100644 index 000000000..ee97f68bb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cos.c @@ -0,0 +1,77 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cos.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* cos(x) + * Return cosine function of x. + * + * kernel function: + * __sin ... sine function on [-pi/4,pi/4] + * __cos ... cosine function on [-pi/4,pi/4] + * __rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "libm.h" + +double cos(double x) +{ + double y[2]; + uint32_t ix; + unsigned n; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + + /* |x| ~< pi/4 */ + if (ix <= 0x3fe921fb) { + if (ix < 0x3e46a09e) { /* |x| < 2**-27 * sqrt(2) */ + /* raise inexact if x!=0 */ + FORCE_EVAL(x + 0x1p120f); + return 1.0; + } + return __cos(x, 0); + } + + /* cos(Inf or NaN) is NaN */ + if (ix >= 0x7ff00000) + return x-x; + + /* argument reduction */ + n = __rem_pio2(x, y); + switch (n&3) { + case 0: return __cos(y[0], y[1]); + case 1: return -__sin(y[0], y[1], 1); + case 2: return -__cos(y[0], y[1]); + default: + return __sin(y[0], y[1], 1); + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/cosf.c b/vendor/modernc.org/libc/musl/src/math/cosf.c new file mode 100644 index 000000000..23f3e5bf6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cosf.c @@ -0,0 +1,78 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_cosf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* Small multiples of pi/2 rounded to double precision. */ +static const double +c1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */ +c2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */ +c3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */ +c4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */ + +float cosf(float x) +{ + double y; + uint32_t ix; + unsigned n, sign; + + GET_FLOAT_WORD(ix, x); + sign = ix >> 31; + ix &= 0x7fffffff; + + if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if (ix < 0x39800000) { /* |x| < 2**-12 */ + /* raise inexact if x != 0 */ + FORCE_EVAL(x + 0x1p120f); + return 1.0f; + } + return __cosdf(x); + } + if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */ + if (ix > 0x4016cbe3) /* |x| ~> 3*pi/4 */ + return -__cosdf(sign ? x+c2pio2 : x-c2pio2); + else { + if (sign) + return __sindf(x + c1pio2); + else + return __sindf(c1pio2 - x); + } + } + if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */ + if (ix > 0x40afeddf) /* |x| ~> 7*pi/4 */ + return __cosdf(sign ? x+c4pio2 : x-c4pio2); + else { + if (sign) + return __sindf(-x - c3pio2); + else + return __sindf(x - c3pio2); + } + } + + /* cos(Inf or NaN) is NaN */ + if (ix >= 0x7f800000) + return x-x; + + /* general argument reduction needed */ + n = __rem_pio2f(x,&y); + switch (n&3) { + case 0: return __cosdf(y); + case 1: return __sindf(-y); + case 2: return -__cosdf(y); + default: + return __sindf(y); + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/cosh.c b/vendor/modernc.org/libc/musl/src/math/cosh.c new file mode 100644 index 000000000..490c15fb1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cosh.c @@ -0,0 +1,40 @@ +#include "libm.h" + +/* cosh(x) = (exp(x) + 1/exp(x))/2 + * = 1 + 0.5*(exp(x)-1)*(exp(x)-1)/exp(x) + * = 1 + x*x/2 + o(x^4) + */ +double cosh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + uint32_t w; + double t; + + /* |x| */ + u.i &= (uint64_t)-1/2; + x = u.f; + w = u.i >> 32; + + /* |x| < log(2) */ + if (w < 0x3fe62e42) { + if (w < 0x3ff00000 - (26<<20)) { + /* raise inexact if x!=0 */ + FORCE_EVAL(x + 0x1p120f); + return 1; + } + t = expm1(x); + return 1 + t*t/(2*(1+t)); + } + + /* |x| < log(DBL_MAX) */ + if (w < 0x40862e42) { + t = exp(x); + /* note: if x>log(0x1p26) then the 1/t is not needed */ + return 0.5*(t + 1/t); + } + + /* |x| > log(DBL_MAX) or nan */ + /* note: the result is stored to handle overflow */ + t = __expo2(x, 1.0); + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/coshf.c b/vendor/modernc.org/libc/musl/src/math/coshf.c new file mode 100644 index 000000000..e739cff93 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/coshf.c @@ -0,0 +1,33 @@ +#include "libm.h" + +float coshf(float x) +{ + union {float f; uint32_t i;} u = {.f = x}; + uint32_t w; + float t; + + /* |x| */ + u.i &= 0x7fffffff; + x = u.f; + w = u.i; + + /* |x| < log(2) */ + if (w < 0x3f317217) { + if (w < 0x3f800000 - (12<<23)) { + FORCE_EVAL(x + 0x1p120f); + return 1; + } + t = expm1f(x); + return 1 + t*t/(2*(1+t)); + } + + /* |x| < log(FLT_MAX) */ + if (w < 0x42b17217) { + t = expf(x); + return 0.5f*(t + 1/t); + } + + /* |x| > log(FLT_MAX) or nan */ + t = __expo2f(x, 1.0f); + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/coshl.c b/vendor/modernc.org/libc/musl/src/math/coshl.c new file mode 100644 index 000000000..06a56fe3b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/coshl.c @@ -0,0 +1,47 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double coshl(long double x) +{ + return cosh(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +long double coshl(long double x) +{ + union ldshape u = {x}; + unsigned ex = u.i.se & 0x7fff; + uint32_t w; + long double t; + + /* |x| */ + u.i.se = ex; + x = u.f; + w = u.i.m >> 32; + + /* |x| < log(2) */ + if (ex < 0x3fff-1 || (ex == 0x3fff-1 && w < 0xb17217f7)) { + if (ex < 0x3fff-32) { + FORCE_EVAL(x + 0x1p120f); + return 1; + } + t = expm1l(x); + return 1 + t*t/(2*(1+t)); + } + + /* |x| < log(LDBL_MAX) */ + if (ex < 0x3fff+13 || (ex == 0x3fff+13 && w < 0xb17217f7)) { + t = expl(x); + return 0.5*(t + 1/t); + } + + /* |x| > log(LDBL_MAX) or nan */ + t = expl(0.5*x); + return 0.5*t*t; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double coshl(long double x) +{ + return cosh(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/cosl.c b/vendor/modernc.org/libc/musl/src/math/cosl.c new file mode 100644 index 000000000..79c41c77f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/cosl.c @@ -0,0 +1,39 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double cosl(long double x) { + return cos(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double cosl(long double x) +{ + union ldshape u = {x}; + unsigned n; + long double y[2], hi, lo; + + u.i.se &= 0x7fff; + if (u.i.se == 0x7fff) + return x - x; + x = u.f; + if (x < M_PI_4) { + if (u.i.se < 0x3fff - LDBL_MANT_DIG) + /* raise inexact if x!=0 */ + return 1.0 + x; + return __cosl(x, 0); + } + n = __rem_pio2l(x, y); + hi = y[0]; + lo = y[1]; + switch (n & 3) { + case 0: + return __cosl(hi, lo); + case 1: + return -__sinl(hi, lo, 1); + case 2: + return -__cosl(hi, lo); + case 3: + default: + return __sinl(hi, lo, 1); + } +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/erf.c b/vendor/modernc.org/libc/musl/src/math/erf.c new file mode 100644 index 000000000..2f30a298f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/erf.c @@ -0,0 +1,273 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_erf.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* double erf(double x) + * double erfc(double x) + * x + * 2 |\ + * erf(x) = --------- | exp(-t*t)dt + * sqrt(pi) \| + * 0 + * + * erfc(x) = 1-erf(x) + * Note that + * erf(-x) = -erf(x) + * erfc(-x) = 2 - erfc(x) + * + * Method: + * 1. For |x| in [0, 0.84375] + * erf(x) = x + x*R(x^2) + * erfc(x) = 1 - erf(x) if x in [-.84375,0.25] + * = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375] + * where R = P/Q where P is an odd poly of degree 8 and + * Q is an odd poly of degree 10. + * -57.90 + * | R - (erf(x)-x)/x | <= 2 + * + * + * Remark. The formula is derived by noting + * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....) + * and that + * 2/sqrt(pi) = 1.128379167095512573896158903121545171688 + * is close to one. The interval is chosen because the fix + * point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is + * near 0.6174), and by some experiment, 0.84375 is chosen to + * guarantee the error is less than one ulp for erf. + * + * 2. For |x| in [0.84375,1.25], let s = |x| - 1, and + * c = 0.84506291151 rounded to single (24 bits) + * erf(x) = sign(x) * (c + P1(s)/Q1(s)) + * erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0 + * 1+(c+P1(s)/Q1(s)) if x < 0 + * |P1/Q1 - (erf(|x|)-c)| <= 2**-59.06 + * Remark: here we use the taylor series expansion at x=1. + * erf(1+s) = erf(1) + s*Poly(s) + * = 0.845.. + P1(s)/Q1(s) + * That is, we use rational approximation to approximate + * erf(1+s) - (c = (single)0.84506291151) + * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25] + * where + * P1(s) = degree 6 poly in s + * Q1(s) = degree 6 poly in s + * + * 3. For x in [1.25,1/0.35(~2.857143)], + * erfc(x) = (1/x)*exp(-x*x-0.5625+R1/S1) + * erf(x) = 1 - erfc(x) + * where + * R1(z) = degree 7 poly in z, (z=1/x^2) + * S1(z) = degree 8 poly in z + * + * 4. For x in [1/0.35,28] + * erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0 + * = 2.0 - (1/x)*exp(-x*x-0.5625+R2/S2) if -6 x >= 28 + * erf(x) = sign(x) *(1 - tiny) (raise inexact) + * erfc(x) = tiny*tiny (raise underflow) if x > 0 + * = 2 - tiny if x<0 + * + * 7. Special case: + * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1, + * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2, + * erfc/erf(NaN) is NaN + */ + +#include "libm.h" + +static const double +erx = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx8 = 1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */ +pp0 = 1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ +pp1 = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ +pp2 = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ +pp3 = -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ +pp4 = -2.37630166566501626084e-05, /* 0xBEF8EAD6, 0x120016AC */ +qq1 = 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ +qq2 = 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ +qq3 = 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ +qq4 = 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ +qq5 = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ +pa1 = 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ +pa2 = -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ +pa3 = 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ +pa4 = -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ +pa5 = 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ +pa6 = -2.16637559486879084300e-03, /* 0xBF61BF38, 0x0A96073F */ +qa1 = 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ +qa2 = 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ +qa3 = 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ +qa4 = 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ +qa5 = 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ +qa6 = 1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ +ra1 = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ +ra2 = -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ +ra3 = -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ +ra4 = -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ +ra5 = -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ +ra6 = -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ +ra7 = -9.81432934416914548592e+00, /* 0xC023A0EF, 0xC69AC25C */ +sa1 = 1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ +sa2 = 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ +sa3 = 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ +sa4 = 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ +sa5 = 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ +sa6 = 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ +sa7 = 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ +sa8 = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ +rb1 = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ +rb2 = -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ +rb3 = -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ +rb4 = -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ +rb5 = -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ +rb6 = -4.83519191608651397019e+02, /* 0xC07E384E, 0x9BDC383F */ +sb1 = 3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ +sb2 = 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ +sb3 = 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ +sb4 = 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ +sb5 = 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ +sb6 = 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ +sb7 = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */ + +static double erfc1(double x) +{ + double_t s,P,Q; + + s = fabs(x) - 1; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = 1+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + return 1 - erx - P/Q; +} + +static double erfc2(uint32_t ix, double x) +{ + double_t s,R,S; + double z; + + if (ix < 0x3ff40000) /* |x| < 1.25 */ + return erfc1(x); + + x = fabs(x); + s = 1/(x*x); + if (ix < 0x4006db6d) { /* |x| < 1/.35 ~ 2.85714 */ + R = ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S = 1.0+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); + } else { /* |x| > 1/.35 */ + R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S = 1.0+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); + } + z = x; + SET_LOW_WORD(z,0); + return exp(-z*z-0.5625)*exp((z-x)*(z+x)+R/S)/x; +} + +double erf(double x) +{ + double r,s,z,y; + uint32_t ix; + int sign; + + GET_HIGH_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7ff00000) { + /* erf(nan)=nan, erf(+-inf)=+-1 */ + return 1-2*sign + 1/x; + } + if (ix < 0x3feb0000) { /* |x| < 0.84375 */ + if (ix < 0x3e300000) { /* |x| < 2**-28 */ + /* avoid underflow */ + return 0.125*(8*x + efx8*x); + } + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = 1.0+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + y = r/s; + return x + x*y; + } + if (ix < 0x40180000) /* 0.84375 <= |x| < 6 */ + y = 1 - erfc2(ix,x); + else + y = 1 - 0x1p-1022; + return sign ? -y : y; +} + +double erfc(double x) +{ + double r,s,z,y; + uint32_t ix; + int sign; + + GET_HIGH_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7ff00000) { + /* erfc(nan)=nan, erfc(+-inf)=0,2 */ + return 2*sign + 1/x; + } + if (ix < 0x3feb0000) { /* |x| < 0.84375 */ + if (ix < 0x3c700000) /* |x| < 2**-56 */ + return 1.0 - x; + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = 1.0+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + y = r/s; + if (sign || ix < 0x3fd00000) { /* x < 1/4 */ + return 1.0 - (x+x*y); + } + return 0.5 - (x - 0.5 + x*y); + } + if (ix < 0x403c0000) { /* 0.84375 <= |x| < 28 */ + return sign ? 2 - erfc2(ix,x) : erfc2(ix,x); + } + return sign ? 2 - 0x1p-1022 : 0x1p-1022*0x1p-1022; +} diff --git a/vendor/modernc.org/libc/musl/src/math/erff.c b/vendor/modernc.org/libc/musl/src/math/erff.c new file mode 100644 index 000000000..ed5f39757 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/erff.c @@ -0,0 +1,183 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_erff.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +erx = 8.4506291151e-01, /* 0x3f58560b */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx8 = 1.0270333290e+00, /* 0x3f8375d4 */ +pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ +pp1 = -3.2504209876e-01, /* 0xbea66beb */ +pp2 = -2.8481749818e-02, /* 0xbce9528f */ +pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ +pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ +qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ +qq2 = 6.5022252500e-02, /* 0x3d852a63 */ +qq3 = 5.0813062117e-03, /* 0x3ba68116 */ +qq4 = 1.3249473704e-04, /* 0x390aee49 */ +qq5 = -3.9602282413e-06, /* 0xb684e21a */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ +pa1 = 4.1485610604e-01, /* 0x3ed46805 */ +pa2 = -3.7220788002e-01, /* 0xbebe9208 */ +pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ +pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ +pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ +pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ +qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ +qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ +qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ +qa4 = 1.2617121637e-01, /* 0x3e013307 */ +qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ +qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.8649440333e-03, /* 0xbc21a093 */ +ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ +ra2 = -1.0558626175e+01, /* 0xc128f022 */ +ra3 = -6.2375331879e+01, /* 0xc2798057 */ +ra4 = -1.6239666748e+02, /* 0xc322658c */ +ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ +ra6 = -8.1287437439e+01, /* 0xc2a2932b */ +ra7 = -9.8143291473e+00, /* 0xc11d077e */ +sa1 = 1.9651271820e+01, /* 0x419d35ce */ +sa2 = 1.3765776062e+02, /* 0x4309a863 */ +sa3 = 4.3456588745e+02, /* 0x43d9486f */ +sa4 = 6.4538726807e+02, /* 0x442158c9 */ +sa5 = 4.2900814819e+02, /* 0x43d6810b */ +sa6 = 1.0863500214e+02, /* 0x42d9451f */ +sa7 = 6.5702495575e+00, /* 0x40d23f7c */ +sa8 = -6.0424413532e-02, /* 0xbd777f97 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.8649431020e-03, /* 0xbc21a092 */ +rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ +rb2 = -1.7757955551e+01, /* 0xc18e104b */ +rb3 = -1.6063638306e+02, /* 0xc320a2ea */ +rb4 = -6.3756646729e+02, /* 0xc41f6441 */ +rb5 = -1.0250950928e+03, /* 0xc480230b */ +rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ +sb1 = 3.0338060379e+01, /* 0x41f2b459 */ +sb2 = 3.2579251099e+02, /* 0x43a2e571 */ +sb3 = 1.5367296143e+03, /* 0x44c01759 */ +sb4 = 3.1998581543e+03, /* 0x4547fdbb */ +sb5 = 2.5530502930e+03, /* 0x451f90ce */ +sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ +sb7 = -2.2440952301e+01; /* 0xc1b38712 */ + +static float erfc1(float x) +{ + float_t s,P,Q; + + s = fabsf(x) - 1; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + Q = 1+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + return 1 - erx - P/Q; +} + +static float erfc2(uint32_t ix, float x) +{ + float_t s,R,S; + float z; + + if (ix < 0x3fa00000) /* |x| < 1.25 */ + return erfc1(x); + + x = fabsf(x); + s = 1/(x*x); + if (ix < 0x4036db6d) { /* |x| < 1/0.35 */ + R = ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))); + S = 1.0f+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))); + } else { /* |x| >= 1/0.35 */ + R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))); + S = 1.0f+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))); + } + GET_FLOAT_WORD(ix, x); + SET_FLOAT_WORD(z, ix&0xffffe000); + return expf(-z*z - 0.5625f) * expf((z-x)*(z+x) + R/S)/x; +} + +float erff(float x) +{ + float r,s,z,y; + uint32_t ix; + int sign; + + GET_FLOAT_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7f800000) { + /* erf(nan)=nan, erf(+-inf)=+-1 */ + return 1-2*sign + 1/x; + } + if (ix < 0x3f580000) { /* |x| < 0.84375 */ + if (ix < 0x31800000) { /* |x| < 2**-28 */ + /*avoid underflow */ + return 0.125f*(8*x + efx8*x); + } + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = 1+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + y = r/s; + return x + x*y; + } + if (ix < 0x40c00000) /* |x| < 6 */ + y = 1 - erfc2(ix,x); + else + y = 1 - 0x1p-120f; + return sign ? -y : y; +} + +float erfcf(float x) +{ + float r,s,z,y; + uint32_t ix; + int sign; + + GET_FLOAT_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7f800000) { + /* erfc(nan)=nan, erfc(+-inf)=0,2 */ + return 2*sign + 1/x; + } + + if (ix < 0x3f580000) { /* |x| < 0.84375 */ + if (ix < 0x23800000) /* |x| < 2**-56 */ + return 1.0f - x; + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = 1.0f+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + y = r/s; + if (sign || ix < 0x3e800000) /* x < 1/4 */ + return 1.0f - (x+x*y); + return 0.5f - (x - 0.5f + x*y); + } + if (ix < 0x41e00000) { /* |x| < 28 */ + return sign ? 2 - erfc2(ix,x) : erfc2(ix,x); + } + return sign ? 2 - 0x1p-120f : 0x1p-120f*0x1p-120f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/erfl.c b/vendor/modernc.org/libc/musl/src/math/erfl.c new file mode 100644 index 000000000..e267c2310 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/erfl.c @@ -0,0 +1,353 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_erfl.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* double erf(double x) + * double erfc(double x) + * x + * 2 |\ + * erf(x) = --------- | exp(-t*t)dt + * sqrt(pi) \| + * 0 + * + * erfc(x) = 1-erf(x) + * Note that + * erf(-x) = -erf(x) + * erfc(-x) = 2 - erfc(x) + * + * Method: + * 1. For |x| in [0, 0.84375] + * erf(x) = x + x*R(x^2) + * erfc(x) = 1 - erf(x) if x in [-.84375,0.25] + * = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375] + * Remark. The formula is derived by noting + * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....) + * and that + * 2/sqrt(pi) = 1.128379167095512573896158903121545171688 + * is close to one. The interval is chosen because the fix + * point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is + * near 0.6174), and by some experiment, 0.84375 is chosen to + * guarantee the error is less than one ulp for erf. + * + * 2. For |x| in [0.84375,1.25], let s = |x| - 1, and + * c = 0.84506291151 rounded to single (24 bits) + * erf(x) = sign(x) * (c + P1(s)/Q1(s)) + * erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0 + * 1+(c+P1(s)/Q1(s)) if x < 0 + * Remark: here we use the taylor series expansion at x=1. + * erf(1+s) = erf(1) + s*Poly(s) + * = 0.845.. + P1(s)/Q1(s) + * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25] + * + * 3. For x in [1.25,1/0.35(~2.857143)], + * erfc(x) = (1/x)*exp(-x*x-0.5625+R1(z)/S1(z)) + * z=1/x^2 + * erf(x) = 1 - erfc(x) + * + * 4. For x in [1/0.35,107] + * erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0 + * = 2.0 - (1/x)*exp(-x*x-0.5625+R2(z)/S2(z)) + * if -6.666 x >= 107 + * erf(x) = sign(x) *(1 - tiny) (raise inexact) + * erfc(x) = tiny*tiny (raise underflow) if x > 0 + * = 2 - tiny if x<0 + * + * 7. Special case: + * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1, + * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2, + * erfc/erf(NaN) is NaN + */ + + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double erfl(long double x) +{ + return erf(x); +} +long double erfcl(long double x) +{ + return erfc(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +static const long double +erx = 0.845062911510467529296875L, + +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +/* 8 * (2/sqrt(pi) - 1) */ +efx8 = 1.0270333367641005911692712249723613735048E0L, +pp[6] = { + 1.122751350964552113068262337278335028553E6L, + -2.808533301997696164408397079650699163276E6L, + -3.314325479115357458197119660818768924100E5L, + -6.848684465326256109712135497895525446398E4L, + -2.657817695110739185591505062971929859314E3L, + -1.655310302737837556654146291646499062882E2L, +}, +qq[6] = { + 8.745588372054466262548908189000448124232E6L, + 3.746038264792471129367533128637019611485E6L, + 7.066358783162407559861156173539693900031E5L, + 7.448928604824620999413120955705448117056E4L, + 4.511583986730994111992253980546131408924E3L, + 1.368902937933296323345610240009071254014E2L, + /* 1.000000000000000000000000000000000000000E0 */ +}, + +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +/* erf(x+1) = 0.845062911510467529296875 + pa(x)/qa(x) + -0.15625 <= x <= +.25 + Peak relative error 8.5e-22 */ +pa[8] = { + -1.076952146179812072156734957705102256059E0L, + 1.884814957770385593365179835059971587220E2L, + -5.339153975012804282890066622962070115606E1L, + 4.435910679869176625928504532109635632618E1L, + 1.683219516032328828278557309642929135179E1L, + -2.360236618396952560064259585299045804293E0L, + 1.852230047861891953244413872297940938041E0L, + 9.394994446747752308256773044667843200719E-2L, +}, +qa[7] = { + 4.559263722294508998149925774781887811255E2L, + 3.289248982200800575749795055149780689738E2L, + 2.846070965875643009598627918383314457912E2L, + 1.398715859064535039433275722017479994465E2L, + 6.060190733759793706299079050985358190726E1L, + 2.078695677795422351040502569964299664233E1L, + 4.641271134150895940966798357442234498546E0L, + /* 1.000000000000000000000000000000000000000E0 */ +}, + +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + ra(x^2)/sa(x^2)) + 1/2.85711669921875 < 1/x < 1/1.25 + Peak relative error 3.1e-21 */ +ra[] = { + 1.363566591833846324191000679620738857234E-1L, + 1.018203167219873573808450274314658434507E1L, + 1.862359362334248675526472871224778045594E2L, + 1.411622588180721285284945138667933330348E3L, + 5.088538459741511988784440103218342840478E3L, + 8.928251553922176506858267311750789273656E3L, + 7.264436000148052545243018622742770549982E3L, + 2.387492459664548651671894725748959751119E3L, + 2.220916652813908085449221282808458466556E2L, +}, +sa[] = { + -1.382234625202480685182526402169222331847E1L, + -3.315638835627950255832519203687435946482E2L, + -2.949124863912936259747237164260785326692E3L, + -1.246622099070875940506391433635999693661E4L, + -2.673079795851665428695842853070996219632E4L, + -2.880269786660559337358397106518918220991E4L, + -1.450600228493968044773354186390390823713E4L, + -2.874539731125893533960680525192064277816E3L, + -1.402241261419067750237395034116942296027E2L, + /* 1.000000000000000000000000000000000000000E0 */ +}, + +/* + * Coefficients for approximation to erfc in [1/.35,107] + */ +/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rb(x^2)/sb(x^2)) + 1/6.6666259765625 < 1/x < 1/2.85711669921875 + Peak relative error 4.2e-22 */ +rb[] = { + -4.869587348270494309550558460786501252369E-5L, + -4.030199390527997378549161722412466959403E-3L, + -9.434425866377037610206443566288917589122E-2L, + -9.319032754357658601200655161585539404155E-1L, + -4.273788174307459947350256581445442062291E0L, + -8.842289940696150508373541814064198259278E0L, + -7.069215249419887403187988144752613025255E0L, + -1.401228723639514787920274427443330704764E0L, +}, +sb[] = { + 4.936254964107175160157544545879293019085E-3L, + 1.583457624037795744377163924895349412015E-1L, + 1.850647991850328356622940552450636420484E0L, + 9.927611557279019463768050710008450625415E0L, + 2.531667257649436709617165336779212114570E1L, + 2.869752886406743386458304052862814690045E1L, + 1.182059497870819562441683560749192539345E1L, + /* 1.000000000000000000000000000000000000000E0 */ +}, +/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rc(x^2)/sc(x^2)) + 1/107 <= 1/x <= 1/6.6666259765625 + Peak relative error 1.1e-21 */ +rc[] = { + -8.299617545269701963973537248996670806850E-5L, + -6.243845685115818513578933902532056244108E-3L, + -1.141667210620380223113693474478394397230E-1L, + -7.521343797212024245375240432734425789409E-1L, + -1.765321928311155824664963633786967602934E0L, + -1.029403473103215800456761180695263439188E0L, +}, +sc[] = { + 8.413244363014929493035952542677768808601E-3L, + 2.065114333816877479753334599639158060979E-1L, + 1.639064941530797583766364412782135680148E0L, + 4.936788463787115555582319302981666347450E0L, + 5.005177727208955487404729933261347679090E0L, + /* 1.000000000000000000000000000000000000000E0 */ +}; + +static long double erfc1(long double x) +{ + long double s,P,Q; + + s = fabsl(x) - 1; + P = pa[0] + s * (pa[1] + s * (pa[2] + + s * (pa[3] + s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7])))))); + Q = qa[0] + s * (qa[1] + s * (qa[2] + + s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s)))))); + return 1 - erx - P / Q; +} + +static long double erfc2(uint32_t ix, long double x) +{ + union ldshape u; + long double s,z,R,S; + + if (ix < 0x3fffa000) /* 0.84375 <= |x| < 1.25 */ + return erfc1(x); + + x = fabsl(x); + s = 1 / (x * x); + if (ix < 0x4000b6db) { /* 1.25 <= |x| < 2.857 ~ 1/.35 */ + R = ra[0] + s * (ra[1] + s * (ra[2] + s * (ra[3] + s * (ra[4] + + s * (ra[5] + s * (ra[6] + s * (ra[7] + s * ra[8]))))))); + S = sa[0] + s * (sa[1] + s * (sa[2] + s * (sa[3] + s * (sa[4] + + s * (sa[5] + s * (sa[6] + s * (sa[7] + s * (sa[8] + s)))))))); + } else if (ix < 0x4001d555) { /* 2.857 <= |x| < 6.6666259765625 */ + R = rb[0] + s * (rb[1] + s * (rb[2] + s * (rb[3] + s * (rb[4] + + s * (rb[5] + s * (rb[6] + s * rb[7])))))); + S = sb[0] + s * (sb[1] + s * (sb[2] + s * (sb[3] + s * (sb[4] + + s * (sb[5] + s * (sb[6] + s)))))); + } else { /* 6.666 <= |x| < 107 (erfc only) */ + R = rc[0] + s * (rc[1] + s * (rc[2] + s * (rc[3] + + s * (rc[4] + s * rc[5])))); + S = sc[0] + s * (sc[1] + s * (sc[2] + s * (sc[3] + + s * (sc[4] + s)))); + } + u.f = x; + u.i.m &= -1ULL << 40; + z = u.f; + return expl(-z*z - 0.5625) * expl((z - x) * (z + x) + R / S) / x; +} + +long double erfl(long double x) +{ + long double r, s, z, y; + union ldshape u = {x}; + uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48; + int sign = u.i.se >> 15; + + if (ix >= 0x7fff0000) + /* erf(nan)=nan, erf(+-inf)=+-1 */ + return 1 - 2*sign + 1/x; + if (ix < 0x3ffed800) { /* |x| < 0.84375 */ + if (ix < 0x3fde8000) { /* |x| < 2**-33 */ + return 0.125 * (8 * x + efx8 * x); /* avoid underflow */ + } + z = x * x; + r = pp[0] + z * (pp[1] + + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); + s = qq[0] + z * (qq[1] + + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); + y = r / s; + return x + x * y; + } + if (ix < 0x4001d555) /* |x| < 6.6666259765625 */ + y = 1 - erfc2(ix,x); + else + y = 1 - 0x1p-16382L; + return sign ? -y : y; +} + +long double erfcl(long double x) +{ + long double r, s, z, y; + union ldshape u = {x}; + uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48; + int sign = u.i.se >> 15; + + if (ix >= 0x7fff0000) + /* erfc(nan) = nan, erfc(+-inf) = 0,2 */ + return 2*sign + 1/x; + if (ix < 0x3ffed800) { /* |x| < 0.84375 */ + if (ix < 0x3fbe0000) /* |x| < 2**-65 */ + return 1.0 - x; + z = x * x; + r = pp[0] + z * (pp[1] + + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); + s = qq[0] + z * (qq[1] + + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); + y = r / s; + if (ix < 0x3ffd8000) /* x < 1/4 */ + return 1.0 - (x + x * y); + return 0.5 - (x - 0.5 + x * y); + } + if (ix < 0x4005d600) /* |x| < 107 */ + return sign ? 2 - erfc2(ix,x) : erfc2(ix,x); + y = 0x1p-16382L; + return sign ? 2 - y : y*y; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double erfl(long double x) +{ + return erf(x); +} +long double erfcl(long double x) +{ + return erfc(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/exp.c b/vendor/modernc.org/libc/musl/src/math/exp.c new file mode 100644 index 000000000..b764d73cf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp.c @@ -0,0 +1,134 @@ +/* + * Double-precision e^x function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp_data.h" + +#define N (1 << EXP_TABLE_BITS) +#define InvLn2N __exp_data.invln2N +#define NegLn2hiN __exp_data.negln2hiN +#define NegLn2loN __exp_data.negln2loN +#define Shift __exp_data.shift +#define T __exp_data.tab +#define C2 __exp_data.poly[5 - EXP_POLY_ORDER] +#define C3 __exp_data.poly[6 - EXP_POLY_ORDER] +#define C4 __exp_data.poly[7 - EXP_POLY_ORDER] +#define C5 __exp_data.poly[8 - EXP_POLY_ORDER] + +/* Handle cases that may overflow or underflow when computing the result that + is scale*(1+TMP) without intermediate rounding. The bit representation of + scale is in SBITS, however it has a computed exponent that may have + overflown into the sign bit so that needs to be adjusted before using it as + a double. (int32_t)KI is the k used in the argument reduction and exponent + adjustment of scale, positive k here means the result may overflow and + negative k means the result may underflow. */ +static inline double specialcase(double_t tmp, uint64_t sbits, uint64_t ki) +{ + double_t scale, y; + + if ((ki & 0x80000000) == 0) { + /* k > 0, the exponent of scale might have overflowed by <= 460. */ + sbits -= 1009ull << 52; + scale = asdouble(sbits); + y = 0x1p1009 * (scale + scale * tmp); + return eval_as_double(y); + } + /* k < 0, need special care in the subnormal range. */ + sbits += 1022ull << 52; + scale = asdouble(sbits); + y = scale + scale * tmp; + if (y < 1.0) { + /* Round y to the right precision before scaling it into the subnormal + range to avoid double rounding that can cause 0.5+E/2 ulp error where + E is the worst-case ulp error outside the subnormal range. So this + is only useful if the goal is better than 1 ulp worst-case error. */ + double_t hi, lo; + lo = scale - y + scale * tmp; + hi = 1.0 + y; + lo = 1.0 - hi + y + lo; + y = eval_as_double(hi + lo) - 1.0; + /* Avoid -0.0 with downward rounding. */ + if (WANT_ROUNDING && y == 0.0) + y = 0.0; + /* The underflow exception needs to be signaled explicitly. */ + fp_force_eval(fp_barrier(0x1p-1022) * 0x1p-1022); + } + y = 0x1p-1022 * y; + return eval_as_double(y); +} + +/* Top 12 bits of a double (sign and exponent bits). */ +static inline uint32_t top12(double x) +{ + return asuint64(x) >> 52; +} + +double exp(double x) +{ + uint32_t abstop; + uint64_t ki, idx, top, sbits; + double_t kd, z, r, r2, scale, tail, tmp; + + abstop = top12(x) & 0x7ff; + if (predict_false(abstop - top12(0x1p-54) >= top12(512.0) - top12(0x1p-54))) { + if (abstop - top12(0x1p-54) >= 0x80000000) + /* Avoid spurious underflow for tiny x. */ + /* Note: 0 is common input. */ + return WANT_ROUNDING ? 1.0 + x : 1.0; + if (abstop >= top12(1024.0)) { + if (asuint64(x) == asuint64(-INFINITY)) + return 0.0; + if (abstop >= top12(INFINITY)) + return 1.0 + x; + if (asuint64(x) >> 63) + return __math_uflow(0); + else + return __math_oflow(0); + } + /* Large x is special cased below. */ + abstop = 0; + } + + /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]. */ + /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]. */ + z = InvLn2N * x; +#if TOINT_INTRINSICS + kd = roundtoint(z); + ki = converttoint(z); +#elif EXP_USE_TOINT_NARROW + /* z - kd is in [-0.5-2^-16, 0.5] in all rounding modes. */ + kd = eval_as_double(z + Shift); + ki = asuint64(kd) >> 16; + kd = (double_t)(int32_t)ki; +#else + /* z - kd is in [-1, 1] in non-nearest rounding modes. */ + kd = eval_as_double(z + Shift); + ki = asuint64(kd); + kd -= Shift; +#endif + r = x + kd * NegLn2hiN + kd * NegLn2loN; + /* 2^(k/N) ~= scale * (1 + tail). */ + idx = 2 * (ki % N); + top = ki << (52 - EXP_TABLE_BITS); + tail = asdouble(T[idx]); + /* This is only a valid scale when -1023*N < k < 1024*N. */ + sbits = T[idx + 1] + top; + /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1). */ + /* Evaluation is optimized assuming superscalar pipelined execution. */ + r2 = r * r; + /* Without fma the worst case error is 0.25/N ulp larger. */ + /* Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp. */ + tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5); + if (predict_false(abstop == 0)) + return specialcase(tmp, sbits, ki); + scale = asdouble(sbits); + /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there + is no spurious underflow here even without fma. */ + return eval_as_double(scale + scale * tmp); +} diff --git a/vendor/modernc.org/libc/musl/src/math/exp10.c b/vendor/modernc.org/libc/musl/src/math/exp10.c new file mode 100644 index 000000000..26899ebac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp10.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE +#include +#include + +double exp10(double x) +{ + static const double p10[] = { + 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, + 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, + 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + 1e10, 1e11, 1e12, 1e13, 1e14, 1e15 + }; + double n, y = modf(x, &n); + union {double f; uint64_t i;} u = {n}; + /* fabs(n) < 16 without raising invalid on nan */ + if ((u.i>>52 & 0x7ff) < 0x3ff+4) { + if (!y) return p10[(int)n+15]; + y = exp2(3.32192809488736234787031942948939 * y); + return y * p10[(int)n+15]; + } + return pow(10.0, x); +} + +weak_alias(exp10, pow10); diff --git a/vendor/modernc.org/libc/musl/src/math/exp10f.c b/vendor/modernc.org/libc/musl/src/math/exp10f.c new file mode 100644 index 000000000..d009f0a84 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp10f.c @@ -0,0 +1,22 @@ +#define _GNU_SOURCE +#include +#include + +float exp10f(float x) +{ + static const float p10[] = { + 1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f, 1e-2f, 1e-1f, + 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7 + }; + float n, y = modff(x, &n); + union {float f; uint32_t i;} u = {n}; + /* fabsf(n) < 8 without raising invalid on nan */ + if ((u.i>>23 & 0xff) < 0x7f+3) { + if (!y) return p10[(int)n+7]; + y = exp2f(3.32192809488736234787031942948939f * y); + return y * p10[(int)n+7]; + } + return exp2(3.32192809488736234787031942948939 * x); +} + +weak_alias(exp10f, pow10f); diff --git a/vendor/modernc.org/libc/musl/src/math/exp10l.c b/vendor/modernc.org/libc/musl/src/math/exp10l.c new file mode 100644 index 000000000..f3da1a082 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp10l.c @@ -0,0 +1,32 @@ +#define _GNU_SOURCE +#include +#include +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double exp10l(long double x) +{ + return exp10(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double exp10l(long double x) +{ + static const long double p10[] = { + 1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L, + 1e-9L, 1e-8L, 1e-7L, 1e-6L, 1e-5L, 1e-4L, 1e-3L, 1e-2L, 1e-1L, + 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + 1e10, 1e11, 1e12, 1e13, 1e14, 1e15 + }; + long double n, y = modfl(x, &n); + union ldshape u = {n}; + /* fabsl(n) < 16 without raising invalid on nan */ + if ((u.i.se & 0x7fff) < 0x3fff+4) { + if (!y) return p10[(int)n+15]; + y = exp2l(3.32192809488736234787031942948939L * y); + return y * p10[(int)n+15]; + } + return powl(10.0, x); +} +#endif + +weak_alias(exp10l, pow10l); diff --git a/vendor/modernc.org/libc/musl/src/math/exp2.c b/vendor/modernc.org/libc/musl/src/math/exp2.c new file mode 100644 index 000000000..e0ff54bd8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp2.c @@ -0,0 +1,121 @@ +/* + * Double-precision 2^x function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp_data.h" + +#define N (1 << EXP_TABLE_BITS) +#define Shift __exp_data.exp2_shift +#define T __exp_data.tab +#define C1 __exp_data.exp2_poly[0] +#define C2 __exp_data.exp2_poly[1] +#define C3 __exp_data.exp2_poly[2] +#define C4 __exp_data.exp2_poly[3] +#define C5 __exp_data.exp2_poly[4] + +/* Handle cases that may overflow or underflow when computing the result that + is scale*(1+TMP) without intermediate rounding. The bit representation of + scale is in SBITS, however it has a computed exponent that may have + overflown into the sign bit so that needs to be adjusted before using it as + a double. (int32_t)KI is the k used in the argument reduction and exponent + adjustment of scale, positive k here means the result may overflow and + negative k means the result may underflow. */ +static inline double specialcase(double_t tmp, uint64_t sbits, uint64_t ki) +{ + double_t scale, y; + + if ((ki & 0x80000000) == 0) { + /* k > 0, the exponent of scale might have overflowed by 1. */ + sbits -= 1ull << 52; + scale = asdouble(sbits); + y = 2 * (scale + scale * tmp); + return eval_as_double(y); + } + /* k < 0, need special care in the subnormal range. */ + sbits += 1022ull << 52; + scale = asdouble(sbits); + y = scale + scale * tmp; + if (y < 1.0) { + /* Round y to the right precision before scaling it into the subnormal + range to avoid double rounding that can cause 0.5+E/2 ulp error where + E is the worst-case ulp error outside the subnormal range. So this + is only useful if the goal is better than 1 ulp worst-case error. */ + double_t hi, lo; + lo = scale - y + scale * tmp; + hi = 1.0 + y; + lo = 1.0 - hi + y + lo; + y = eval_as_double(hi + lo) - 1.0; + /* Avoid -0.0 with downward rounding. */ + if (WANT_ROUNDING && y == 0.0) + y = 0.0; + /* The underflow exception needs to be signaled explicitly. */ + fp_force_eval(fp_barrier(0x1p-1022) * 0x1p-1022); + } + y = 0x1p-1022 * y; + return eval_as_double(y); +} + +/* Top 12 bits of a double (sign and exponent bits). */ +static inline uint32_t top12(double x) +{ + return asuint64(x) >> 52; +} + +double exp2(double x) +{ + uint32_t abstop; + uint64_t ki, idx, top, sbits; + double_t kd, r, r2, scale, tail, tmp; + + abstop = top12(x) & 0x7ff; + if (predict_false(abstop - top12(0x1p-54) >= top12(512.0) - top12(0x1p-54))) { + if (abstop - top12(0x1p-54) >= 0x80000000) + /* Avoid spurious underflow for tiny x. */ + /* Note: 0 is common input. */ + return WANT_ROUNDING ? 1.0 + x : 1.0; + if (abstop >= top12(1024.0)) { + if (asuint64(x) == asuint64(-INFINITY)) + return 0.0; + if (abstop >= top12(INFINITY)) + return 1.0 + x; + if (!(asuint64(x) >> 63)) + return __math_oflow(0); + else if (asuint64(x) >= asuint64(-1075.0)) + return __math_uflow(0); + } + if (2 * asuint64(x) > 2 * asuint64(928.0)) + /* Large x is special cased below. */ + abstop = 0; + } + + /* exp2(x) = 2^(k/N) * 2^r, with 2^r in [2^(-1/2N),2^(1/2N)]. */ + /* x = k/N + r, with int k and r in [-1/2N, 1/2N]. */ + kd = eval_as_double(x + Shift); + ki = asuint64(kd); /* k. */ + kd -= Shift; /* k/N for int k. */ + r = x - kd; + /* 2^(k/N) ~= scale * (1 + tail). */ + idx = 2 * (ki % N); + top = ki << (52 - EXP_TABLE_BITS); + tail = asdouble(T[idx]); + /* This is only a valid scale when -1023*N < k < 1024*N. */ + sbits = T[idx + 1] + top; + /* exp2(x) = 2^(k/N) * 2^r ~= scale + scale * (tail + 2^r - 1). */ + /* Evaluation is optimized assuming superscalar pipelined execution. */ + r2 = r * r; + /* Without fma the worst case error is 0.5/N ulp larger. */ + /* Worst case error is less than 0.5+0.86/N+(abs poly error * 2^53) ulp. */ + tmp = tail + r * C1 + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5); + if (predict_false(abstop == 0)) + return specialcase(tmp, sbits, ki); + scale = asdouble(sbits); + /* Note: tmp == 0 or |tmp| > 2^-65 and scale > 2^-928, so there + is no spurious underflow here even without fma. */ + return eval_as_double(scale + scale * tmp); +} diff --git a/vendor/modernc.org/libc/musl/src/math/exp2f.c b/vendor/modernc.org/libc/musl/src/math/exp2f.c new file mode 100644 index 000000000..0360482ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp2f.c @@ -0,0 +1,69 @@ +/* + * Single-precision 2^x function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp2f_data.h" + +/* +EXP2F_TABLE_BITS = 5 +EXP2F_POLY_ORDER = 3 + +ULP error: 0.502 (nearest rounding.) +Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.) +Wrong count: 168353 (all nearest rounding wrong results with fma.) +Non-nearest ULP error: 1 (rounded ULP error) +*/ + +#define N (1 << EXP2F_TABLE_BITS) +#define T __exp2f_data.tab +#define C __exp2f_data.poly +#define SHIFT __exp2f_data.shift_scaled + +static inline uint32_t top12(float x) +{ + return asuint(x) >> 20; +} + +float exp2f(float x) +{ + uint32_t abstop; + uint64_t ki, t; + double_t kd, xd, z, r, r2, y, s; + + xd = (double_t)x; + abstop = top12(x) & 0x7ff; + if (predict_false(abstop >= top12(128.0f))) { + /* |x| >= 128 or x is nan. */ + if (asuint(x) == asuint(-INFINITY)) + return 0.0f; + if (abstop >= top12(INFINITY)) + return x + x; + if (x > 0.0f) + return __math_oflowf(0); + if (x <= -150.0f) + return __math_uflowf(0); + } + + /* x = k/N + r with r in [-1/(2N), 1/(2N)] and int k. */ + kd = eval_as_double(xd + SHIFT); + ki = asuint64(kd); + kd -= SHIFT; /* k/N for int k. */ + r = xd - kd; + + /* exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1) */ + t = T[ki % N]; + t += ki << (52 - EXP2F_TABLE_BITS); + s = asdouble(t); + z = C[0] * r + C[1]; + r2 = r * r; + y = C[2] * r + 1; + y = z * r2 + y; + y = y * s; + return eval_as_float(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/exp2f_data.c b/vendor/modernc.org/libc/musl/src/math/exp2f_data.c new file mode 100644 index 000000000..be324727f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp2f_data.c @@ -0,0 +1,35 @@ +/* + * Shared data between expf, exp2f and powf. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "exp2f_data.h" + +#define N (1 << EXP2F_TABLE_BITS) + +const struct exp2f_data __exp2f_data = { + /* tab[i] = uint(2^(i/N)) - (i << 52-BITS) + used for computing 2^(k/N) for an int |k| < 150 N as + double(tab[k%N] + (k << 52-BITS)) */ + .tab = { +0x3ff0000000000000, 0x3fefd9b0d3158574, 0x3fefb5586cf9890f, 0x3fef9301d0125b51, +0x3fef72b83c7d517b, 0x3fef54873168b9aa, 0x3fef387a6e756238, 0x3fef1e9df51fdee1, +0x3fef06fe0a31b715, 0x3feef1a7373aa9cb, 0x3feedea64c123422, 0x3feece086061892d, +0x3feebfdad5362a27, 0x3feeb42b569d4f82, 0x3feeab07dd485429, 0x3feea47eb03a5585, +0x3feea09e667f3bcd, 0x3fee9f75e8ec5f74, 0x3feea11473eb0187, 0x3feea589994cce13, +0x3feeace5422aa0db, 0x3feeb737b0cdc5e5, 0x3feec49182a3f090, 0x3feed503b23e255d, +0x3feee89f995ad3ad, 0x3feeff76f2fb5e47, 0x3fef199bdd85529c, 0x3fef3720dcef9069, +0x3fef5818dcfba487, 0x3fef7c97337b9b5f, 0x3fefa4afa2a490da, 0x3fefd0765b6e4540, + }, + .shift_scaled = 0x1.8p+52 / N, + .poly = { + 0x1.c6af84b912394p-5, 0x1.ebfce50fac4f3p-3, 0x1.62e42ff0c52d6p-1, + }, + .shift = 0x1.8p+52, + .invln2_scaled = 0x1.71547652b82fep+0 * N, + .poly_scaled = { + 0x1.c6af84b912394p-5/N/N/N, 0x1.ebfce50fac4f3p-3/N/N, 0x1.62e42ff0c52d6p-1/N, + }, +}; diff --git a/vendor/modernc.org/libc/musl/src/math/exp2f_data.h b/vendor/modernc.org/libc/musl/src/math/exp2f_data.h new file mode 100644 index 000000000..fe744f15b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp2f_data.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _EXP2F_DATA_H +#define _EXP2F_DATA_H + +#include +#include + +/* Shared between expf, exp2f and powf. */ +#define EXP2F_TABLE_BITS 5 +#define EXP2F_POLY_ORDER 3 +extern hidden const struct exp2f_data { + uint64_t tab[1 << EXP2F_TABLE_BITS]; + double shift_scaled; + double poly[EXP2F_POLY_ORDER]; + double shift; + double invln2_scaled; + double poly_scaled[EXP2F_POLY_ORDER]; +} __exp2f_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/exp2l.c b/vendor/modernc.org/libc/musl/src/math/exp2l.c new file mode 100644 index 000000000..3565c1e67 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp2l.c @@ -0,0 +1,619 @@ +/* origin: FreeBSD /usr/src/lib/msun/ld80/s_exp2l.c and /usr/src/lib/msun/ld128/s_exp2l.c */ +/*- + * Copyright (c) 2005-2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double exp2l(long double x) +{ + return exp2(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +#define TBLBITS 7 +#define TBLSIZE (1 << TBLBITS) + +static const double +redux = 0x1.8p63 / TBLSIZE, +P1 = 0x1.62e42fefa39efp-1, +P2 = 0x1.ebfbdff82c58fp-3, +P3 = 0x1.c6b08d7049fap-5, +P4 = 0x1.3b2ab6fba4da5p-7, +P5 = 0x1.5d8804780a736p-10, +P6 = 0x1.430918835e33dp-13; + +static const double tbl[TBLSIZE * 2] = { + 0x1.6a09e667f3bcdp-1, -0x1.bdd3413b2648p-55, + 0x1.6c012750bdabfp-1, -0x1.2895667ff0cp-57, + 0x1.6dfb23c651a2fp-1, -0x1.bbe3a683c88p-58, + 0x1.6ff7df9519484p-1, -0x1.83c0f25860fp-56, + 0x1.71f75e8ec5f74p-1, -0x1.16e4786887bp-56, + 0x1.73f9a48a58174p-1, -0x1.0a8d96c65d5p-55, + 0x1.75feb564267c9p-1, -0x1.0245957316ep-55, + 0x1.780694fde5d3fp-1, 0x1.866b80a0216p-55, + 0x1.7a11473eb0187p-1, -0x1.41577ee0499p-56, + 0x1.7c1ed0130c132p-1, 0x1.f124cd1164ep-55, + 0x1.7e2f336cf4e62p-1, 0x1.05d02ba157ap-57, + 0x1.80427543e1a12p-1, -0x1.27c86626d97p-55, + 0x1.82589994cce13p-1, -0x1.d4c1dd41533p-55, + 0x1.8471a4623c7adp-1, -0x1.8d684a341cep-56, + 0x1.868d99b4492edp-1, -0x1.fc6f89bd4f68p-55, + 0x1.88ac7d98a6699p-1, 0x1.994c2f37cb5p-55, + 0x1.8ace5422aa0dbp-1, 0x1.6e9f156864bp-55, + 0x1.8cf3216b5448cp-1, -0x1.0d55e32e9e4p-57, + 0x1.8f1ae99157736p-1, 0x1.5cc13a2e397p-56, + 0x1.9145b0b91ffc6p-1, -0x1.dd6792e5825p-55, + 0x1.93737b0cdc5e5p-1, -0x1.75fc781b58p-58, + 0x1.95a44cbc8520fp-1, -0x1.64b7c96a5fp-57, + 0x1.97d829fde4e5p-1, -0x1.d185b7c1b86p-55, + 0x1.9a0f170ca07bap-1, -0x1.173bd91cee6p-55, + 0x1.9c49182a3f09p-1, 0x1.c7c46b071f2p-57, + 0x1.9e86319e32323p-1, 0x1.824ca78e64cp-57, + 0x1.a0c667b5de565p-1, -0x1.359495d1cd5p-55, + 0x1.a309bec4a2d33p-1, 0x1.6305c7ddc368p-55, + 0x1.a5503b23e255dp-1, -0x1.d2f6edb8d42p-55, + 0x1.a799e1330b358p-1, 0x1.bcb7ecac564p-55, + 0x1.a9e6b5579fdbfp-1, 0x1.0fac90ef7fdp-55, + 0x1.ac36bbfd3f37ap-1, -0x1.f9234cae76dp-56, + 0x1.ae89f995ad3adp-1, 0x1.7a1cd345dcc8p-55, + 0x1.b0e07298db666p-1, -0x1.bdef54c80e4p-55, + 0x1.b33a2b84f15fbp-1, -0x1.2805e3084d8p-58, + 0x1.b59728de5593ap-1, -0x1.c71dfbbba6ep-55, + 0x1.b7f76f2fb5e47p-1, -0x1.5584f7e54acp-57, + 0x1.ba5b030a1064ap-1, -0x1.efcd30e5429p-55, + 0x1.bcc1e904bc1d2p-1, 0x1.23dd07a2d9fp-56, + 0x1.bf2c25bd71e09p-1, -0x1.efdca3f6b9c8p-55, + 0x1.c199bdd85529cp-1, 0x1.11065895049p-56, + 0x1.c40ab5fffd07ap-1, 0x1.b4537e083c6p-55, + 0x1.c67f12e57d14bp-1, 0x1.2884dff483c8p-55, + 0x1.c8f6d9406e7b5p-1, 0x1.1acbc48805cp-57, + 0x1.cb720dcef9069p-1, 0x1.503cbd1e94ap-57, + 0x1.cdf0b555dc3fap-1, -0x1.dd83b53829dp-56, + 0x1.d072d4a07897cp-1, -0x1.cbc3743797a8p-55, + 0x1.d2f87080d89f2p-1, -0x1.d487b719d858p-55, + 0x1.d5818dcfba487p-1, 0x1.2ed02d75b37p-56, + 0x1.d80e316c98398p-1, -0x1.11ec18bedep-55, + 0x1.da9e603db3285p-1, 0x1.c2300696db5p-55, + 0x1.dd321f301b46p-1, 0x1.2da5778f019p-55, + 0x1.dfc97337b9b5fp-1, -0x1.1a5cd4f184b8p-55, + 0x1.e264614f5a129p-1, -0x1.7b627817a148p-55, + 0x1.e502ee78b3ff6p-1, 0x1.39e8980a9cdp-56, + 0x1.e7a51fbc74c83p-1, 0x1.2d522ca0c8ep-55, + 0x1.ea4afa2a490dap-1, -0x1.e9c23179c288p-55, + 0x1.ecf482d8e67f1p-1, -0x1.c93f3b411ad8p-55, + 0x1.efa1bee615a27p-1, 0x1.dc7f486a4b68p-55, + 0x1.f252b376bba97p-1, 0x1.3a1a5bf0d8e8p-55, + 0x1.f50765b6e454p-1, 0x1.9d3e12dd8a18p-55, + 0x1.f7bfdad9cbe14p-1, -0x1.dbb12d00635p-55, + 0x1.fa7c1819e90d8p-1, 0x1.74853f3a593p-56, + 0x1.fd3c22b8f71f1p-1, 0x1.2eb74966578p-58, + 0x1p+0, 0x0p+0, + 0x1.0163da9fb3335p+0, 0x1.b61299ab8cd8p-54, + 0x1.02c9a3e778061p+0, -0x1.19083535b08p-56, + 0x1.04315e86e7f85p+0, -0x1.0a31c1977c98p-54, + 0x1.059b0d3158574p+0, 0x1.d73e2a475b4p-55, + 0x1.0706b29ddf6dep+0, -0x1.c91dfe2b13cp-55, + 0x1.0874518759bc8p+0, 0x1.186be4bb284p-57, + 0x1.09e3ecac6f383p+0, 0x1.14878183161p-54, + 0x1.0b5586cf9890fp+0, 0x1.8a62e4adc61p-54, + 0x1.0cc922b7247f7p+0, 0x1.01edc16e24f8p-54, + 0x1.0e3ec32d3d1a2p+0, 0x1.03a1727c58p-59, + 0x1.0fb66affed31bp+0, -0x1.b9bedc44ebcp-57, + 0x1.11301d0125b51p+0, -0x1.6c51039449bp-54, + 0x1.12abdc06c31ccp+0, -0x1.1b514b36ca8p-58, + 0x1.1429aaea92dep+0, -0x1.32fbf9af1368p-54, + 0x1.15a98c8a58e51p+0, 0x1.2406ab9eeabp-55, + 0x1.172b83c7d517bp+0, -0x1.19041b9d78ap-55, + 0x1.18af9388c8deap+0, -0x1.11023d1970f8p-54, + 0x1.1a35beb6fcb75p+0, 0x1.e5b4c7b4969p-55, + 0x1.1bbe084045cd4p+0, -0x1.95386352ef6p-54, + 0x1.1d4873168b9aap+0, 0x1.e016e00a264p-54, + 0x1.1ed5022fcd91dp+0, -0x1.1df98027bb78p-54, + 0x1.2063b88628cd6p+0, 0x1.dc775814a85p-55, + 0x1.21f49917ddc96p+0, 0x1.2a97e9494a6p-55, + 0x1.2387a6e756238p+0, 0x1.9b07eb6c7058p-54, + 0x1.251ce4fb2a63fp+0, 0x1.ac155bef4f5p-55, + 0x1.26b4565e27cddp+0, 0x1.2bd339940eap-55, + 0x1.284dfe1f56381p+0, -0x1.a4c3a8c3f0d8p-54, + 0x1.29e9df51fdee1p+0, 0x1.612e8afad12p-55, + 0x1.2b87fd0dad99p+0, -0x1.10adcd6382p-59, + 0x1.2d285a6e4030bp+0, 0x1.0024754db42p-54, + 0x1.2ecafa93e2f56p+0, 0x1.1ca0f45d524p-56, + 0x1.306fe0a31b715p+0, 0x1.6f46ad23183p-55, + 0x1.32170fc4cd831p+0, 0x1.a9ce78e1804p-55, + 0x1.33c08b26416ffp+0, 0x1.327218436598p-54, + 0x1.356c55f929ff1p+0, -0x1.b5cee5c4e46p-55, + 0x1.371a7373aa9cbp+0, -0x1.63aeabf42ebp-54, + 0x1.38cae6d05d866p+0, -0x1.e958d3c99048p-54, + 0x1.3a7db34e59ff7p+0, -0x1.5e436d661f6p-56, + 0x1.3c32dc313a8e5p+0, -0x1.efff8375d2ap-54, + 0x1.3dea64c123422p+0, 0x1.ada0911f09fp-55, + 0x1.3fa4504ac801cp+0, -0x1.7d023f956fap-54, + 0x1.4160a21f72e2ap+0, -0x1.ef3691c309p-58, + 0x1.431f5d950a897p+0, -0x1.1c7dde35f7ap-55, + 0x1.44e086061892dp+0, 0x1.89b7a04ef8p-59, + 0x1.46a41ed1d0057p+0, 0x1.c944bd1648a8p-54, + 0x1.486a2b5c13cdp+0, 0x1.3c1a3b69062p-56, + 0x1.4a32af0d7d3dep+0, 0x1.9cb62f3d1be8p-54, + 0x1.4bfdad5362a27p+0, 0x1.d4397afec42p-56, + 0x1.4dcb299fddd0dp+0, 0x1.8ecdbbc6a78p-54, + 0x1.4f9b2769d2ca7p+0, -0x1.4b309d25958p-54, + 0x1.516daa2cf6642p+0, -0x1.f768569bd94p-55, + 0x1.5342b569d4f82p+0, -0x1.07abe1db13dp-55, + 0x1.551a4ca5d920fp+0, -0x1.d689cefede6p-55, + 0x1.56f4736b527dap+0, 0x1.9bb2c011d938p-54, + 0x1.58d12d497c7fdp+0, 0x1.295e15b9a1ep-55, + 0x1.5ab07dd485429p+0, 0x1.6324c0546478p-54, + 0x1.5c9268a5946b7p+0, 0x1.c4b1b81698p-60, + 0x1.5e76f15ad2148p+0, 0x1.ba6f93080e68p-54, + 0x1.605e1b976dc09p+0, -0x1.3e2429b56de8p-54, + 0x1.6247eb03a5585p+0, -0x1.383c17e40b48p-54, + 0x1.6434634ccc32p+0, -0x1.c483c759d89p-55, + 0x1.6623882552225p+0, -0x1.bb60987591cp-54, + 0x1.68155d44ca973p+0, 0x1.038ae44f74p-57, +}; + +/* + * exp2l(x): compute the base 2 exponential of x + * + * Accuracy: Peak error < 0.511 ulp. + * + * Method: (equally-spaced tables) + * + * Reduce x: + * x = 2**k + y, for integer k and |y| <= 1/2. + * Thus we have exp2l(x) = 2**k * exp2(y). + * + * Reduce y: + * y = i/TBLSIZE + z for integer i near y * TBLSIZE. + * Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z), + * with |z| <= 2**-(TBLBITS+1). + * + * We compute exp2(i/TBLSIZE) via table lookup and exp2(z) via a + * degree-6 minimax polynomial with maximum error under 2**-69. + * The table entries each have 104 bits of accuracy, encoded as + * a pair of double precision values. + */ +long double exp2l(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + long double r, z; + uint32_t i0; + union {uint32_t u; int32_t i;} k; + + /* Filter out exceptional cases. */ + if (e >= 0x3fff + 13) { /* |x| >= 8192 or x is NaN */ + if (u.i.se >= 0x3fff + 14 && u.i.se >> 15 == 0) + /* overflow */ + return x * 0x1p16383L; + if (e == 0x7fff) /* -inf or -nan */ + return -1/x; + if (x < -16382) { + if (x <= -16446 || x - 0x1p63 + 0x1p63 != x) + /* underflow */ + FORCE_EVAL((float)(-0x1p-149/x)); + if (x <= -16446) + return 0; + } + } else if (e < 0x3fff - 64) { + return 1 + x; + } + + /* + * Reduce x, computing z, i0, and k. The low bits of x + redux + * contain the 16-bit integer part of the exponent (k) followed by + * TBLBITS fractional bits (i0). We use bit tricks to extract these + * as integers, then set z to the remainder. + * + * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8. + * Then the low-order word of x + redux is 0x000abc12, + * We split this into k = 0xabc and i0 = 0x12 (adjusted to + * index into the table), then we compute z = 0x0.003456p0. + */ + u.f = x + redux; + i0 = u.i.m + TBLSIZE / 2; + k.u = i0 / TBLSIZE * TBLSIZE; + k.i /= TBLSIZE; + i0 %= TBLSIZE; + u.f -= redux; + z = x - u.f; + + /* Compute r = exp2l(y) = exp2lt[i0] * p(z). */ + long double t_hi = tbl[2*i0]; + long double t_lo = tbl[2*i0 + 1]; + /* XXX This gives > 1 ulp errors outside of FE_TONEAREST mode */ + r = t_lo + (t_hi + t_lo) * z * (P1 + z * (P2 + z * (P3 + z * (P4 + + z * (P5 + z * P6))))) + t_hi; + + return scalbnl(r, k.i); +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +#define TBLBITS 7 +#define TBLSIZE (1 << TBLBITS) + +static const long double + P1 = 0x1.62e42fefa39ef35793c7673007e6p-1L, + P2 = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L, + P3 = 0x1.c6b08d704a0bf8b33a762bad3459p-5L, + P4 = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L, + P5 = 0x1.5d87fe78a67311071dee13fd11d9p-10L, + P6 = 0x1.430912f86c7876f4b663b23c5fe5p-13L; + +static const double + P7 = 0x1.ffcbfc588b041p-17, + P8 = 0x1.62c0223a5c7c7p-20, + P9 = 0x1.b52541ff59713p-24, + P10 = 0x1.e4cf56a391e22p-28, + redux = 0x1.8p112 / TBLSIZE; + +static const long double tbl[TBLSIZE] = { + 0x1.6a09e667f3bcc908b2fb1366dfeap-1L, + 0x1.6c012750bdabeed76a99800f4edep-1L, + 0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L, + 0x1.6ff7df9519483cf87e1b4f3e1e98p-1L, + 0x1.71f75e8ec5f73dd2370f2ef0b148p-1L, + 0x1.73f9a48a58173bd5c9a4e68ab074p-1L, + 0x1.75feb564267c8bf6e9aa33a489a8p-1L, + 0x1.780694fde5d3f619ae02808592a4p-1L, + 0x1.7a11473eb0186d7d51023f6ccb1ap-1L, + 0x1.7c1ed0130c1327c49334459378dep-1L, + 0x1.7e2f336cf4e62105d02ba1579756p-1L, + 0x1.80427543e1a11b60de67649a3842p-1L, + 0x1.82589994cce128acf88afab34928p-1L, + 0x1.8471a4623c7acce52f6b97c6444cp-1L, + 0x1.868d99b4492ec80e41d90ac2556ap-1L, + 0x1.88ac7d98a669966530bcdf2d4cc0p-1L, + 0x1.8ace5422aa0db5ba7c55a192c648p-1L, + 0x1.8cf3216b5448bef2aa1cd161c57ap-1L, + 0x1.8f1ae991577362b982745c72eddap-1L, + 0x1.9145b0b91ffc588a61b469f6b6a0p-1L, + 0x1.93737b0cdc5e4f4501c3f2540ae8p-1L, + 0x1.95a44cbc8520ee9b483695a0e7fep-1L, + 0x1.97d829fde4e4f8b9e920f91e8eb6p-1L, + 0x1.9a0f170ca07b9ba3109b8c467844p-1L, + 0x1.9c49182a3f0901c7c46b071f28dep-1L, + 0x1.9e86319e323231824ca78e64c462p-1L, + 0x1.a0c667b5de564b29ada8b8cabbacp-1L, + 0x1.a309bec4a2d3358c171f770db1f4p-1L, + 0x1.a5503b23e255c8b424491caf88ccp-1L, + 0x1.a799e1330b3586f2dfb2b158f31ep-1L, + 0x1.a9e6b5579fdbf43eb243bdff53a2p-1L, + 0x1.ac36bbfd3f379c0db966a3126988p-1L, + 0x1.ae89f995ad3ad5e8734d17731c80p-1L, + 0x1.b0e07298db66590842acdfc6fb4ep-1L, + 0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L, + 0x1.b59728de559398e3881111648738p-1L, + 0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L, + 0x1.ba5b030a10649840cb3c6af5b74cp-1L, + 0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L, + 0x1.bf2c25bd71e088408d7025190cd0p-1L, + 0x1.c199bdd85529c2220cb12a0916bap-1L, + 0x1.c40ab5fffd07a6d14df820f17deap-1L, + 0x1.c67f12e57d14b4a2137fd20f2a26p-1L, + 0x1.c8f6d9406e7b511acbc48805c3f6p-1L, + 0x1.cb720dcef90691503cbd1e949d0ap-1L, + 0x1.cdf0b555dc3f9c44f8958fac4f12p-1L, + 0x1.d072d4a07897b8d0f22f21a13792p-1L, + 0x1.d2f87080d89f18ade123989ea50ep-1L, + 0x1.d5818dcfba48725da05aeb66dff8p-1L, + 0x1.d80e316c98397bb84f9d048807a0p-1L, + 0x1.da9e603db3285708c01a5b6d480cp-1L, + 0x1.dd321f301b4604b695de3c0630c0p-1L, + 0x1.dfc97337b9b5eb968cac39ed284cp-1L, + 0x1.e264614f5a128a12761fa17adc74p-1L, + 0x1.e502ee78b3ff6273d130153992d0p-1L, + 0x1.e7a51fbc74c834b548b2832378a4p-1L, + 0x1.ea4afa2a490d9858f73a18f5dab4p-1L, + 0x1.ecf482d8e67f08db0312fb949d50p-1L, + 0x1.efa1bee615a27771fd21a92dabb6p-1L, + 0x1.f252b376bba974e8696fc3638f24p-1L, + 0x1.f50765b6e4540674f84b762861a6p-1L, + 0x1.f7bfdad9cbe138913b4bfe72bd78p-1L, + 0x1.fa7c1819e90d82e90a7e74b26360p-1L, + 0x1.fd3c22b8f71f10975ba4b32bd006p-1L, + 0x1.0000000000000000000000000000p+0L, + 0x1.0163da9fb33356d84a66ae336e98p+0L, + 0x1.02c9a3e778060ee6f7caca4f7a18p+0L, + 0x1.04315e86e7f84bd738f9a20da442p+0L, + 0x1.059b0d31585743ae7c548eb68c6ap+0L, + 0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L, + 0x1.0874518759bc808c35f25d942856p+0L, + 0x1.09e3ecac6f3834521e060c584d5cp+0L, + 0x1.0b5586cf9890f6298b92b7184200p+0L, + 0x1.0cc922b7247f7407b705b893dbdep+0L, + 0x1.0e3ec32d3d1a2020742e4f8af794p+0L, + 0x1.0fb66affed31af232091dd8a169ep+0L, + 0x1.11301d0125b50a4ebbf1aed9321cp+0L, + 0x1.12abdc06c31cbfb92bad324d6f84p+0L, + 0x1.1429aaea92ddfb34101943b2588ep+0L, + 0x1.15a98c8a58e512480d573dd562aep+0L, + 0x1.172b83c7d517adcdf7c8c50eb162p+0L, + 0x1.18af9388c8de9bbbf70b9a3c269cp+0L, + 0x1.1a35beb6fcb753cb698f692d2038p+0L, + 0x1.1bbe084045cd39ab1e72b442810ep+0L, + 0x1.1d4873168b9aa7805b8028990be8p+0L, + 0x1.1ed5022fcd91cb8819ff61121fbep+0L, + 0x1.2063b88628cd63b8eeb0295093f6p+0L, + 0x1.21f49917ddc962552fd29294bc20p+0L, + 0x1.2387a6e75623866c1fadb1c159c0p+0L, + 0x1.251ce4fb2a63f3582ab7de9e9562p+0L, + 0x1.26b4565e27cdd257a673281d3068p+0L, + 0x1.284dfe1f5638096cf15cf03c9fa0p+0L, + 0x1.29e9df51fdee12c25d15f5a25022p+0L, + 0x1.2b87fd0dad98ffddea46538fca24p+0L, + 0x1.2d285a6e4030b40091d536d0733ep+0L, + 0x1.2ecafa93e2f5611ca0f45d5239a4p+0L, + 0x1.306fe0a31b7152de8d5a463063bep+0L, + 0x1.32170fc4cd8313539cf1c3009330p+0L, + 0x1.33c08b26416ff4c9c8610d96680ep+0L, + 0x1.356c55f929ff0c94623476373be4p+0L, + 0x1.371a7373aa9caa7145502f45452ap+0L, + 0x1.38cae6d05d86585a9cb0d9bed530p+0L, + 0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L, + 0x1.3c32dc313a8e484001f228b58cf0p+0L, + 0x1.3dea64c12342235b41223e13d7eep+0L, + 0x1.3fa4504ac801ba0bf701aa417b9cp+0L, + 0x1.4160a21f72e29f84325b8f3dbacap+0L, + 0x1.431f5d950a896dc704439410b628p+0L, + 0x1.44e086061892d03136f409df0724p+0L, + 0x1.46a41ed1d005772512f459229f0ap+0L, + 0x1.486a2b5c13cd013c1a3b69062f26p+0L, + 0x1.4a32af0d7d3de672d8bcf46f99b4p+0L, + 0x1.4bfdad5362a271d4397afec42e36p+0L, + 0x1.4dcb299fddd0d63b36ef1a9e19dep+0L, + 0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L, + 0x1.516daa2cf6641c112f52c84d6066p+0L, + 0x1.5342b569d4f81df0a83c49d86bf4p+0L, + 0x1.551a4ca5d920ec52ec620243540cp+0L, + 0x1.56f4736b527da66ecb004764e61ep+0L, + 0x1.58d12d497c7fd252bc2b7343d554p+0L, + 0x1.5ab07dd48542958c93015191e9a8p+0L, + 0x1.5c9268a5946b701c4b1b81697ed4p+0L, + 0x1.5e76f15ad21486e9be4c20399d12p+0L, + 0x1.605e1b976dc08b076f592a487066p+0L, + 0x1.6247eb03a5584b1f0fa06fd2d9eap+0L, + 0x1.6434634ccc31fc76f8714c4ee122p+0L, + 0x1.66238825522249127d9e29b92ea2p+0L, + 0x1.68155d44ca973081c57227b9f69ep+0L, +}; + +static const float eps[TBLSIZE] = { + -0x1.5c50p-101, + -0x1.5d00p-106, + 0x1.8e90p-102, + -0x1.5340p-103, + 0x1.1bd0p-102, + -0x1.4600p-105, + -0x1.7a40p-104, + 0x1.d590p-102, + -0x1.d590p-101, + 0x1.b100p-103, + -0x1.0d80p-105, + 0x1.6b00p-103, + -0x1.9f00p-105, + 0x1.c400p-103, + 0x1.e120p-103, + -0x1.c100p-104, + -0x1.9d20p-103, + 0x1.a800p-108, + 0x1.4c00p-106, + -0x1.9500p-106, + 0x1.6900p-105, + -0x1.29d0p-100, + 0x1.4c60p-103, + 0x1.13a0p-102, + -0x1.5b60p-103, + -0x1.1c40p-103, + 0x1.db80p-102, + 0x1.91a0p-102, + 0x1.dc00p-105, + 0x1.44c0p-104, + 0x1.9710p-102, + 0x1.8760p-103, + -0x1.a720p-103, + 0x1.ed20p-103, + -0x1.49c0p-102, + -0x1.e000p-111, + 0x1.86a0p-103, + 0x1.2b40p-103, + -0x1.b400p-108, + 0x1.1280p-99, + -0x1.02d8p-102, + -0x1.e3d0p-103, + -0x1.b080p-105, + -0x1.f100p-107, + -0x1.16c0p-105, + -0x1.1190p-103, + -0x1.a7d2p-100, + 0x1.3450p-103, + -0x1.67c0p-105, + 0x1.4b80p-104, + -0x1.c4e0p-103, + 0x1.6000p-108, + -0x1.3f60p-105, + 0x1.93f0p-104, + 0x1.5fe0p-105, + 0x1.6f80p-107, + -0x1.7600p-106, + 0x1.21e0p-106, + -0x1.3a40p-106, + -0x1.40c0p-104, + -0x1.9860p-105, + -0x1.5d40p-108, + -0x1.1d70p-106, + 0x1.2760p-105, + 0x0.0000p+0, + 0x1.21e2p-104, + -0x1.9520p-108, + -0x1.5720p-106, + -0x1.4810p-106, + -0x1.be00p-109, + 0x1.0080p-105, + -0x1.5780p-108, + -0x1.d460p-105, + -0x1.6140p-105, + 0x1.4630p-104, + 0x1.ad50p-103, + 0x1.82e0p-105, + 0x1.1d3cp-101, + 0x1.6100p-107, + 0x1.ec30p-104, + 0x1.f200p-108, + 0x1.0b40p-103, + 0x1.3660p-102, + 0x1.d9d0p-103, + -0x1.02d0p-102, + 0x1.b070p-103, + 0x1.b9c0p-104, + -0x1.01c0p-103, + -0x1.dfe0p-103, + 0x1.1b60p-104, + -0x1.ae94p-101, + -0x1.3340p-104, + 0x1.b3d8p-102, + -0x1.6e40p-105, + -0x1.3670p-103, + 0x1.c140p-104, + 0x1.1840p-101, + 0x1.1ab0p-102, + -0x1.a400p-104, + 0x1.1f00p-104, + -0x1.7180p-103, + 0x1.4ce0p-102, + 0x1.9200p-107, + -0x1.54c0p-103, + 0x1.1b80p-105, + -0x1.1828p-101, + 0x1.5720p-102, + -0x1.a060p-100, + 0x1.9160p-102, + 0x1.a280p-104, + 0x1.3400p-107, + 0x1.2b20p-102, + 0x1.7800p-108, + 0x1.cfd0p-101, + 0x1.2ef0p-102, + -0x1.2760p-99, + 0x1.b380p-104, + 0x1.0048p-101, + -0x1.60b0p-102, + 0x1.a1ccp-100, + -0x1.a640p-104, + -0x1.08a0p-101, + 0x1.7e60p-102, + 0x1.22c0p-103, + -0x1.7200p-106, + 0x1.f0f0p-102, + 0x1.eb4ep-99, + 0x1.c6e0p-103, +}; + +/* + * exp2l(x): compute the base 2 exponential of x + * + * Accuracy: Peak error < 0.502 ulp. + * + * Method: (accurate tables) + * + * Reduce x: + * x = 2**k + y, for integer k and |y| <= 1/2. + * Thus we have exp2(x) = 2**k * exp2(y). + * + * Reduce y: + * y = i/TBLSIZE + z - eps[i] for integer i near y * TBLSIZE. + * Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z - eps[i]), + * with |z - eps[i]| <= 2**-8 + 2**-98 for the table used. + * + * We compute exp2(i/TBLSIZE) via table lookup and exp2(z - eps[i]) via + * a degree-10 minimax polynomial with maximum error under 2**-120. + * The values in exp2t[] and eps[] are chosen such that + * exp2t[i] = exp2(i/TBLSIZE + eps[i]), and eps[i] is a small offset such + * that exp2t[i] is accurate to 2**-122. + * + * Note that the range of i is +-TBLSIZE/2, so we actually index the tables + * by i0 = i + TBLSIZE/2. + * + * This method is due to Gal, with many details due to Gal and Bachelis: + * + * Gal, S. and Bachelis, B. An Accurate Elementary Mathematical Library + * for the IEEE Floating Point Standard. TOMS 17(1), 26-46 (1991). + */ +long double +exp2l(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + long double r, z, t; + uint32_t i0; + union {uint32_t u; int32_t i;} k; + + /* Filter out exceptional cases. */ + if (e >= 0x3fff + 14) { /* |x| >= 16384 or x is NaN */ + if (u.i.se >= 0x3fff + 15 && u.i.se >> 15 == 0) + /* overflow */ + return x * 0x1p16383L; + if (e == 0x7fff) /* -inf or -nan */ + return -1/x; + if (x < -16382) { + if (x <= -16495 || x - 0x1p112 + 0x1p112 != x) + /* underflow */ + FORCE_EVAL((float)(-0x1p-149/x)); + if (x <= -16446) + return 0; + } + } else if (e < 0x3fff - 114) { + return 1 + x; + } + + /* + * Reduce x, computing z, i0, and k. The low bits of x + redux + * contain the 16-bit integer part of the exponent (k) followed by + * TBLBITS fractional bits (i0). We use bit tricks to extract these + * as integers, then set z to the remainder. + * + * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8. + * Then the low-order word of x + redux is 0x000abc12, + * We split this into k = 0xabc and i0 = 0x12 (adjusted to + * index into the table), then we compute z = 0x0.003456p0. + */ + u.f = x + redux; + i0 = u.i2.lo + TBLSIZE / 2; + k.u = i0 / TBLSIZE * TBLSIZE; + k.i /= TBLSIZE; + i0 %= TBLSIZE; + u.f -= redux; + z = x - u.f; + + /* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */ + t = tbl[i0]; + z -= eps[i0]; + r = t + t * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * (P6 + + z * (P7 + z * (P8 + z * (P9 + z * P10))))))))); + + return scalbnl(r, k.i); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/exp_data.c b/vendor/modernc.org/libc/musl/src/math/exp_data.c new file mode 100644 index 000000000..21be0146a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp_data.c @@ -0,0 +1,182 @@ +/* + * Shared data between exp, exp2 and pow. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "exp_data.h" + +#define N (1 << EXP_TABLE_BITS) + +const struct exp_data __exp_data = { +// N/ln2 +.invln2N = 0x1.71547652b82fep0 * N, +// -ln2/N +.negln2hiN = -0x1.62e42fefa0000p-8, +.negln2loN = -0x1.cf79abc9e3b3ap-47, +// Used for rounding when !TOINT_INTRINSICS +#if EXP_USE_TOINT_NARROW +.shift = 0x1800000000.8p0, +#else +.shift = 0x1.8p52, +#endif +// exp polynomial coefficients. +.poly = { +// abs error: 1.555*2^-66 +// ulp error: 0.509 (0.511 without fma) +// if |x| < ln2/256+eps +// abs error if |x| < ln2/256+0x1p-15: 1.09*2^-65 +// abs error if |x| < ln2/128: 1.7145*2^-56 +0x1.ffffffffffdbdp-2, +0x1.555555555543cp-3, +0x1.55555cf172b91p-5, +0x1.1111167a4d017p-7, +}, +.exp2_shift = 0x1.8p52 / N, +// exp2 polynomial coefficients. +.exp2_poly = { +// abs error: 1.2195*2^-65 +// ulp error: 0.507 (0.511 without fma) +// if |x| < 1/256 +// abs error if |x| < 1/128: 1.9941*2^-56 +0x1.62e42fefa39efp-1, +0x1.ebfbdff82c424p-3, +0x1.c6b08d70cf4b5p-5, +0x1.3b2abd24650ccp-7, +0x1.5d7e09b4e3a84p-10, +}, +// 2^(k/N) ~= H[k]*(1 + T[k]) for int k in [0,N) +// tab[2*k] = asuint64(T[k]) +// tab[2*k+1] = asuint64(H[k]) - (k << 52)/N +.tab = { +0x0, 0x3ff0000000000000, +0x3c9b3b4f1a88bf6e, 0x3feff63da9fb3335, +0xbc7160139cd8dc5d, 0x3fefec9a3e778061, +0xbc905e7a108766d1, 0x3fefe315e86e7f85, +0x3c8cd2523567f613, 0x3fefd9b0d3158574, +0xbc8bce8023f98efa, 0x3fefd06b29ddf6de, +0x3c60f74e61e6c861, 0x3fefc74518759bc8, +0x3c90a3e45b33d399, 0x3fefbe3ecac6f383, +0x3c979aa65d837b6d, 0x3fefb5586cf9890f, +0x3c8eb51a92fdeffc, 0x3fefac922b7247f7, +0x3c3ebe3d702f9cd1, 0x3fefa3ec32d3d1a2, +0xbc6a033489906e0b, 0x3fef9b66affed31b, +0xbc9556522a2fbd0e, 0x3fef9301d0125b51, +0xbc5080ef8c4eea55, 0x3fef8abdc06c31cc, +0xbc91c923b9d5f416, 0x3fef829aaea92de0, +0x3c80d3e3e95c55af, 0x3fef7a98c8a58e51, +0xbc801b15eaa59348, 0x3fef72b83c7d517b, +0xbc8f1ff055de323d, 0x3fef6af9388c8dea, +0x3c8b898c3f1353bf, 0x3fef635beb6fcb75, +0xbc96d99c7611eb26, 0x3fef5be084045cd4, +0x3c9aecf73e3a2f60, 0x3fef54873168b9aa, +0xbc8fe782cb86389d, 0x3fef4d5022fcd91d, +0x3c8a6f4144a6c38d, 0x3fef463b88628cd6, +0x3c807a05b0e4047d, 0x3fef3f49917ddc96, +0x3c968efde3a8a894, 0x3fef387a6e756238, +0x3c875e18f274487d, 0x3fef31ce4fb2a63f, +0x3c80472b981fe7f2, 0x3fef2b4565e27cdd, +0xbc96b87b3f71085e, 0x3fef24dfe1f56381, +0x3c82f7e16d09ab31, 0x3fef1e9df51fdee1, +0xbc3d219b1a6fbffa, 0x3fef187fd0dad990, +0x3c8b3782720c0ab4, 0x3fef1285a6e4030b, +0x3c6e149289cecb8f, 0x3fef0cafa93e2f56, +0x3c834d754db0abb6, 0x3fef06fe0a31b715, +0x3c864201e2ac744c, 0x3fef0170fc4cd831, +0x3c8fdd395dd3f84a, 0x3feefc08b26416ff, +0xbc86a3803b8e5b04, 0x3feef6c55f929ff1, +0xbc924aedcc4b5068, 0x3feef1a7373aa9cb, +0xbc9907f81b512d8e, 0x3feeecae6d05d866, +0xbc71d1e83e9436d2, 0x3feee7db34e59ff7, +0xbc991919b3ce1b15, 0x3feee32dc313a8e5, +0x3c859f48a72a4c6d, 0x3feedea64c123422, +0xbc9312607a28698a, 0x3feeda4504ac801c, +0xbc58a78f4817895b, 0x3feed60a21f72e2a, +0xbc7c2c9b67499a1b, 0x3feed1f5d950a897, +0x3c4363ed60c2ac11, 0x3feece086061892d, +0x3c9666093b0664ef, 0x3feeca41ed1d0057, +0x3c6ecce1daa10379, 0x3feec6a2b5c13cd0, +0x3c93ff8e3f0f1230, 0x3feec32af0d7d3de, +0x3c7690cebb7aafb0, 0x3feebfdad5362a27, +0x3c931dbdeb54e077, 0x3feebcb299fddd0d, +0xbc8f94340071a38e, 0x3feeb9b2769d2ca7, +0xbc87deccdc93a349, 0x3feeb6daa2cf6642, +0xbc78dec6bd0f385f, 0x3feeb42b569d4f82, +0xbc861246ec7b5cf6, 0x3feeb1a4ca5d920f, +0x3c93350518fdd78e, 0x3feeaf4736b527da, +0x3c7b98b72f8a9b05, 0x3feead12d497c7fd, +0x3c9063e1e21c5409, 0x3feeab07dd485429, +0x3c34c7855019c6ea, 0x3feea9268a5946b7, +0x3c9432e62b64c035, 0x3feea76f15ad2148, +0xbc8ce44a6199769f, 0x3feea5e1b976dc09, +0xbc8c33c53bef4da8, 0x3feea47eb03a5585, +0xbc845378892be9ae, 0x3feea34634ccc320, +0xbc93cedd78565858, 0x3feea23882552225, +0x3c5710aa807e1964, 0x3feea155d44ca973, +0xbc93b3efbf5e2228, 0x3feea09e667f3bcd, +0xbc6a12ad8734b982, 0x3feea012750bdabf, +0xbc6367efb86da9ee, 0x3fee9fb23c651a2f, +0xbc80dc3d54e08851, 0x3fee9f7df9519484, +0xbc781f647e5a3ecf, 0x3fee9f75e8ec5f74, +0xbc86ee4ac08b7db0, 0x3fee9f9a48a58174, +0xbc8619321e55e68a, 0x3fee9feb564267c9, +0x3c909ccb5e09d4d3, 0x3feea0694fde5d3f, +0xbc7b32dcb94da51d, 0x3feea11473eb0187, +0x3c94ecfd5467c06b, 0x3feea1ed0130c132, +0x3c65ebe1abd66c55, 0x3feea2f336cf4e62, +0xbc88a1c52fb3cf42, 0x3feea427543e1a12, +0xbc9369b6f13b3734, 0x3feea589994cce13, +0xbc805e843a19ff1e, 0x3feea71a4623c7ad, +0xbc94d450d872576e, 0x3feea8d99b4492ed, +0x3c90ad675b0e8a00, 0x3feeaac7d98a6699, +0x3c8db72fc1f0eab4, 0x3feeace5422aa0db, +0xbc65b6609cc5e7ff, 0x3feeaf3216b5448c, +0x3c7bf68359f35f44, 0x3feeb1ae99157736, +0xbc93091fa71e3d83, 0x3feeb45b0b91ffc6, +0xbc5da9b88b6c1e29, 0x3feeb737b0cdc5e5, +0xbc6c23f97c90b959, 0x3feeba44cbc8520f, +0xbc92434322f4f9aa, 0x3feebd829fde4e50, +0xbc85ca6cd7668e4b, 0x3feec0f170ca07ba, +0x3c71affc2b91ce27, 0x3feec49182a3f090, +0x3c6dd235e10a73bb, 0x3feec86319e32323, +0xbc87c50422622263, 0x3feecc667b5de565, +0x3c8b1c86e3e231d5, 0x3feed09bec4a2d33, +0xbc91bbd1d3bcbb15, 0x3feed503b23e255d, +0x3c90cc319cee31d2, 0x3feed99e1330b358, +0x3c8469846e735ab3, 0x3feede6b5579fdbf, +0xbc82dfcd978e9db4, 0x3feee36bbfd3f37a, +0x3c8c1a7792cb3387, 0x3feee89f995ad3ad, +0xbc907b8f4ad1d9fa, 0x3feeee07298db666, +0xbc55c3d956dcaeba, 0x3feef3a2b84f15fb, +0xbc90a40e3da6f640, 0x3feef9728de5593a, +0xbc68d6f438ad9334, 0x3feeff76f2fb5e47, +0xbc91eee26b588a35, 0x3fef05b030a1064a, +0x3c74ffd70a5fddcd, 0x3fef0c1e904bc1d2, +0xbc91bdfbfa9298ac, 0x3fef12c25bd71e09, +0x3c736eae30af0cb3, 0x3fef199bdd85529c, +0x3c8ee3325c9ffd94, 0x3fef20ab5fffd07a, +0x3c84e08fd10959ac, 0x3fef27f12e57d14b, +0x3c63cdaf384e1a67, 0x3fef2f6d9406e7b5, +0x3c676b2c6c921968, 0x3fef3720dcef9069, +0xbc808a1883ccb5d2, 0x3fef3f0b555dc3fa, +0xbc8fad5d3ffffa6f, 0x3fef472d4a07897c, +0xbc900dae3875a949, 0x3fef4f87080d89f2, +0x3c74a385a63d07a7, 0x3fef5818dcfba487, +0xbc82919e2040220f, 0x3fef60e316c98398, +0x3c8e5a50d5c192ac, 0x3fef69e603db3285, +0x3c843a59ac016b4b, 0x3fef7321f301b460, +0xbc82d52107b43e1f, 0x3fef7c97337b9b5f, +0xbc892ab93b470dc9, 0x3fef864614f5a129, +0x3c74b604603a88d3, 0x3fef902ee78b3ff6, +0x3c83c5ec519d7271, 0x3fef9a51fbc74c83, +0xbc8ff7128fd391f0, 0x3fefa4afa2a490da, +0xbc8dae98e223747d, 0x3fefaf482d8e67f1, +0x3c8ec3bc41aa2008, 0x3fefba1bee615a27, +0x3c842b94c3a9eb32, 0x3fefc52b376bba97, +0x3c8a64a931d185ee, 0x3fefd0765b6e4540, +0xbc8e37bae43be3ed, 0x3fefdbfdad9cbe14, +0x3c77893b4d91cd9d, 0x3fefe7c1819e90d8, +0x3c5305c14160cc89, 0x3feff3c22b8f71f1, +}, +}; diff --git a/vendor/modernc.org/libc/musl/src/math/exp_data.h b/vendor/modernc.org/libc/musl/src/math/exp_data.h new file mode 100644 index 000000000..3e24bac57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/exp_data.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _EXP_DATA_H +#define _EXP_DATA_H + +#include +#include + +#define EXP_TABLE_BITS 7 +#define EXP_POLY_ORDER 5 +#define EXP_USE_TOINT_NARROW 0 +#define EXP2_POLY_ORDER 5 +extern hidden const struct exp_data { + double invln2N; + double shift; + double negln2hiN; + double negln2loN; + double poly[4]; /* Last four coefficients. */ + double exp2_shift; + double exp2_poly[EXP2_POLY_ORDER]; + uint64_t tab[2*(1 << EXP_TABLE_BITS)]; +} __exp_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/expf.c b/vendor/modernc.org/libc/musl/src/math/expf.c new file mode 100644 index 000000000..f9fbf8e72 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/expf.c @@ -0,0 +1,80 @@ +/* + * Single-precision e^x function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp2f_data.h" + +/* +EXP2F_TABLE_BITS = 5 +EXP2F_POLY_ORDER = 3 + +ULP error: 0.502 (nearest rounding.) +Relative error: 1.69 * 2^-34 in [-ln2/64, ln2/64] (before rounding.) +Wrong count: 170635 (all nearest rounding wrong results with fma.) +Non-nearest ULP error: 1 (rounded ULP error) +*/ + +#define N (1 << EXP2F_TABLE_BITS) +#define InvLn2N __exp2f_data.invln2_scaled +#define T __exp2f_data.tab +#define C __exp2f_data.poly_scaled + +static inline uint32_t top12(float x) +{ + return asuint(x) >> 20; +} + +float expf(float x) +{ + uint32_t abstop; + uint64_t ki, t; + double_t kd, xd, z, r, r2, y, s; + + xd = (double_t)x; + abstop = top12(x) & 0x7ff; + if (predict_false(abstop >= top12(88.0f))) { + /* |x| >= 88 or x is nan. */ + if (asuint(x) == asuint(-INFINITY)) + return 0.0f; + if (abstop >= top12(INFINITY)) + return x + x; + if (x > 0x1.62e42ep6f) /* x > log(0x1p128) ~= 88.72 */ + return __math_oflowf(0); + if (x < -0x1.9fe368p6f) /* x < log(0x1p-150) ~= -103.97 */ + return __math_uflowf(0); + } + + /* x*N/Ln2 = k + r with r in [-1/2, 1/2] and int k. */ + z = InvLn2N * xd; + + /* Round and convert z to int, the result is in [-150*N, 128*N] and + ideally ties-to-even rule is used, otherwise the magnitude of r + can be bigger which gives larger approximation error. */ +#if TOINT_INTRINSICS + kd = roundtoint(z); + ki = converttoint(z); +#else +# define SHIFT __exp2f_data.shift + kd = eval_as_double(z + SHIFT); + ki = asuint64(kd); + kd -= SHIFT; +#endif + r = z - kd; + + /* exp(x) = 2^(k/N) * 2^(r/N) ~= s * (C0*r^3 + C1*r^2 + C2*r + 1) */ + t = T[ki % N]; + t += ki << (52 - EXP2F_TABLE_BITS); + s = asdouble(t); + z = C[0] * r + C[1]; + r2 = r * r; + y = C[2] * r + 1; + y = z * r2 + y; + y = y * s; + return eval_as_float(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/expl.c b/vendor/modernc.org/libc/musl/src/math/expl.c new file mode 100644 index 000000000..0a7f44f68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/expl.c @@ -0,0 +1,128 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_expl.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Exponential function, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, expl(); + * + * y = expl( x ); + * + * + * DESCRIPTION: + * + * Returns e (2.71828...) raised to the x power. + * + * Range reduction is accomplished by separating the argument + * into an integer k and fraction f such that + * + * x k f + * e = 2 e. + * + * A Pade' form of degree 5/6 is used to approximate exp(f) - 1 + * in the basic range [-0.5 ln 2, 0.5 ln 2]. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE +-10000 50000 1.12e-19 2.81e-20 + * + * + * Error amplification in the exponential function can be + * a serious matter. The error propagation involves + * exp( X(1+delta) ) = exp(X) ( 1 + X*delta + ... ), + * which shows that a 1 lsb error in representing X produces + * a relative error of X times 1 lsb in the function. + * While the routine gives an accurate result for arguments + * that are exactly represented by a long double precision + * computer number, the result contains amplified roundoff + * error for large arguments not exactly represented. + * + * + * ERROR MESSAGES: + * + * message condition value returned + * exp underflow x < MINLOG 0.0 + * exp overflow x > MAXLOG MAXNUM + * + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double expl(long double x) +{ + return exp(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 + +static const long double P[3] = { + 1.2617719307481059087798E-4L, + 3.0299440770744196129956E-2L, + 9.9999999999999999991025E-1L, +}; +static const long double Q[4] = { + 3.0019850513866445504159E-6L, + 2.5244834034968410419224E-3L, + 2.2726554820815502876593E-1L, + 2.0000000000000000000897E0L, +}; +static const long double +LN2HI = 6.9314575195312500000000E-1L, +LN2LO = 1.4286068203094172321215E-6L, +LOG2E = 1.4426950408889634073599E0L; + +long double expl(long double x) +{ + long double px, xx; + int k; + + if (isnan(x)) + return x; + if (x > 11356.5234062941439488L) /* x > ln(2^16384 - 0.5) */ + return x * 0x1p16383L; + if (x < -11399.4985314888605581L) /* x < ln(2^-16446) */ + return -0x1p-16445L/x; + + /* Express e**x = e**f 2**k + * = e**(f + k ln(2)) + */ + px = floorl(LOG2E * x + 0.5); + k = px; + x -= px * LN2HI; + x -= px * LN2LO; + + /* rational approximation of the fractional part: + * e**x = 1 + 2x P(x**2)/(Q(x**2) - x P(x**2)) + */ + xx = x * x; + px = x * __polevll(xx, P, 2); + x = px/(__polevll(xx, Q, 3) - px); + x = 1.0 + 2.0 * x; + return scalbnl(x, k); +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double expl(long double x) +{ + return exp(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/expm1.c b/vendor/modernc.org/libc/musl/src/math/expm1.c new file mode 100644 index 000000000..ac1e61e4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/expm1.c @@ -0,0 +1,201 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_expm1.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* expm1(x) + * Returns exp(x)-1, the exponential of x minus 1. + * + * Method + * 1. Argument reduction: + * Given x, find r and integer k such that + * + * x = k*ln2 + r, |r| <= 0.5*ln2 ~ 0.34658 + * + * Here a correction term c will be computed to compensate + * the error in r when rounded to a floating-point number. + * + * 2. Approximating expm1(r) by a special rational function on + * the interval [0,0.34658]: + * Since + * r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 - r^4/360 + ... + * we define R1(r*r) by + * r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 * R1(r*r) + * That is, + * R1(r**2) = 6/r *((exp(r)+1)/(exp(r)-1) - 2/r) + * = 6/r * ( 1 + 2.0*(1/(exp(r)-1) - 1/r)) + * = 1 - r^2/60 + r^4/2520 - r^6/100800 + ... + * We use a special Remez algorithm on [0,0.347] to generate + * a polynomial of degree 5 in r*r to approximate R1. The + * maximum error of this polynomial approximation is bounded + * by 2**-61. In other words, + * R1(z) ~ 1.0 + Q1*z + Q2*z**2 + Q3*z**3 + Q4*z**4 + Q5*z**5 + * where Q1 = -1.6666666666666567384E-2, + * Q2 = 3.9682539681370365873E-4, + * Q3 = -9.9206344733435987357E-6, + * Q4 = 2.5051361420808517002E-7, + * Q5 = -6.2843505682382617102E-9; + * z = r*r, + * with error bounded by + * | 5 | -61 + * | 1.0+Q1*z+...+Q5*z - R1(z) | <= 2 + * | | + * + * expm1(r) = exp(r)-1 is then computed by the following + * specific way which minimize the accumulation rounding error: + * 2 3 + * r r [ 3 - (R1 + R1*r/2) ] + * expm1(r) = r + --- + --- * [--------------------] + * 2 2 [ 6 - r*(3 - R1*r/2) ] + * + * To compensate the error in the argument reduction, we use + * expm1(r+c) = expm1(r) + c + expm1(r)*c + * ~ expm1(r) + c + r*c + * Thus c+r*c will be added in as the correction terms for + * expm1(r+c). Now rearrange the term to avoid optimization + * screw up: + * ( 2 2 ) + * ({ ( r [ R1 - (3 - R1*r/2) ] ) } r ) + * expm1(r+c)~r - ({r*(--- * [--------------------]-c)-c} - --- ) + * ({ ( 2 [ 6 - r*(3 - R1*r/2) ] ) } 2 ) + * ( ) + * + * = r - E + * 3. Scale back to obtain expm1(x): + * From step 1, we have + * expm1(x) = either 2^k*[expm1(r)+1] - 1 + * = or 2^k*[expm1(r) + (1-2^-k)] + * 4. Implementation notes: + * (A). To save one multiplication, we scale the coefficient Qi + * to Qi*2^i, and replace z by (x^2)/2. + * (B). To achieve maximum accuracy, we compute expm1(x) by + * (i) if x < -56*ln2, return -1.0, (raise inexact if x!=inf) + * (ii) if k=0, return r-E + * (iii) if k=-1, return 0.5*(r-E)-0.5 + * (iv) if k=1 if r < -0.25, return 2*((r+0.5)- E) + * else return 1.0+2.0*(r-E); + * (v) if (k<-2||k>56) return 2^k(1-(E-r)) - 1 (or exp(x)-1) + * (vi) if k <= 20, return 2^k((1-2^-k)-(E-r)), else + * (vii) return 2^k(1-((E+2^-k)-r)) + * + * Special cases: + * expm1(INF) is INF, expm1(NaN) is NaN; + * expm1(-INF) is -1, and + * for finite argument, only expm1(0)=0 is exact. + * + * Accuracy: + * according to an error analysis, the error is always less than + * 1 ulp (unit in the last place). + * + * Misc. info. + * For IEEE double + * if x > 7.09782712893383973096e+02 then expm1(x) overflow + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "libm.h" + +static const double +o_threshold = 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ +ln2_hi = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */ +ln2_lo = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */ +invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */ +/* Scaled Q's: Qn_here = 2**n * Qn_above, for R(2*z) where z = hxs = x*x/2: */ +Q1 = -3.33333333333331316428e-02, /* BFA11111 111110F4 */ +Q2 = 1.58730158725481460165e-03, /* 3F5A01A0 19FE5585 */ +Q3 = -7.93650757867487942473e-05, /* BF14CE19 9EAADBB7 */ +Q4 = 4.00821782732936239552e-06, /* 3ED0CFCA 86E65239 */ +Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */ + +double expm1(double x) +{ + double_t y,hi,lo,c,t,e,hxs,hfx,r1,twopk; + union {double f; uint64_t i;} u = {x}; + uint32_t hx = u.i>>32 & 0x7fffffff; + int k, sign = u.i>>63; + + /* filter out huge and non-finite argument */ + if (hx >= 0x4043687A) { /* if |x|>=56*ln2 */ + if (isnan(x)) + return x; + if (sign) + return -1; + if (x > o_threshold) { + x *= 0x1p1023; + return x; + } + } + + /* argument reduction */ + if (hx > 0x3fd62e42) { /* if |x| > 0.5 ln2 */ + if (hx < 0x3FF0A2B2) { /* and |x| < 1.5 ln2 */ + if (!sign) { + hi = x - ln2_hi; + lo = ln2_lo; + k = 1; + } else { + hi = x + ln2_hi; + lo = -ln2_lo; + k = -1; + } + } else { + k = invln2*x + (sign ? -0.5 : 0.5); + t = k; + hi = x - t*ln2_hi; /* t*ln2_hi is exact here */ + lo = t*ln2_lo; + } + x = hi-lo; + c = (hi-x)-lo; + } else if (hx < 0x3c900000) { /* |x| < 2**-54, return x */ + if (hx < 0x00100000) + FORCE_EVAL((float)x); + return x; + } else + k = 0; + + /* x is now in primary range */ + hfx = 0.5*x; + hxs = x*hfx; + r1 = 1.0+hxs*(Q1+hxs*(Q2+hxs*(Q3+hxs*(Q4+hxs*Q5)))); + t = 3.0-r1*hfx; + e = hxs*((r1-t)/(6.0 - x*t)); + if (k == 0) /* c is 0 */ + return x - (x*e-hxs); + e = x*(e-c) - c; + e -= hxs; + /* exp(x) ~ 2^k (x_reduced - e + 1) */ + if (k == -1) + return 0.5*(x-e) - 0.5; + if (k == 1) { + if (x < -0.25) + return -2.0*(e-(x+0.5)); + return 1.0+2.0*(x-e); + } + u.i = (uint64_t)(0x3ff + k)<<52; /* 2^k */ + twopk = u.f; + if (k < 0 || k > 56) { /* suffice to return exp(x)-1 */ + y = x - e + 1.0; + if (k == 1024) + y = y*2.0*0x1p1023; + else + y = y*twopk; + return y - 1.0; + } + u.i = (uint64_t)(0x3ff - k)<<52; /* 2^-k */ + if (k < 20) + y = (x-e+(1-u.f))*twopk; + else + y = (x-(e+u.f)+1)*twopk; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/expm1f.c b/vendor/modernc.org/libc/musl/src/math/expm1f.c new file mode 100644 index 000000000..297e0b44a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/expm1f.c @@ -0,0 +1,111 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_expm1f.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +o_threshold = 8.8721679688e+01, /* 0x42b17180 */ +ln2_hi = 6.9313812256e-01, /* 0x3f317180 */ +ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */ +invln2 = 1.4426950216e+00, /* 0x3fb8aa3b */ +/* + * Domain [-0.34568, 0.34568], range ~[-6.694e-10, 6.696e-10]: + * |6 / x * (1 + 2 * (1 / (exp(x) - 1) - 1 / x)) - q(x)| < 2**-30.04 + * Scaled coefficients: Qn_here = 2**n * Qn_for_q (see s_expm1.c): + */ +Q1 = -3.3333212137e-2, /* -0x888868.0p-28 */ +Q2 = 1.5807170421e-3; /* 0xcf3010.0p-33 */ + +float expm1f(float x) +{ + float_t y,hi,lo,c,t,e,hxs,hfx,r1,twopk; + union {float f; uint32_t i;} u = {x}; + uint32_t hx = u.i & 0x7fffffff; + int k, sign = u.i >> 31; + + /* filter out huge and non-finite argument */ + if (hx >= 0x4195b844) { /* if |x|>=27*ln2 */ + if (hx > 0x7f800000) /* NaN */ + return x; + if (sign) + return -1; + if (x > o_threshold) { + x *= 0x1p127f; + return x; + } + } + + /* argument reduction */ + if (hx > 0x3eb17218) { /* if |x| > 0.5 ln2 */ + if (hx < 0x3F851592) { /* and |x| < 1.5 ln2 */ + if (!sign) { + hi = x - ln2_hi; + lo = ln2_lo; + k = 1; + } else { + hi = x + ln2_hi; + lo = -ln2_lo; + k = -1; + } + } else { + k = invln2*x + (sign ? -0.5f : 0.5f); + t = k; + hi = x - t*ln2_hi; /* t*ln2_hi is exact here */ + lo = t*ln2_lo; + } + x = hi-lo; + c = (hi-x)-lo; + } else if (hx < 0x33000000) { /* when |x|<2**-25, return x */ + if (hx < 0x00800000) + FORCE_EVAL(x*x); + return x; + } else + k = 0; + + /* x is now in primary range */ + hfx = 0.5f*x; + hxs = x*hfx; + r1 = 1.0f+hxs*(Q1+hxs*Q2); + t = 3.0f - r1*hfx; + e = hxs*((r1-t)/(6.0f - x*t)); + if (k == 0) /* c is 0 */ + return x - (x*e-hxs); + e = x*(e-c) - c; + e -= hxs; + /* exp(x) ~ 2^k (x_reduced - e + 1) */ + if (k == -1) + return 0.5f*(x-e) - 0.5f; + if (k == 1) { + if (x < -0.25f) + return -2.0f*(e-(x+0.5f)); + return 1.0f + 2.0f*(x-e); + } + u.i = (0x7f+k)<<23; /* 2^k */ + twopk = u.f; + if (k < 0 || k > 56) { /* suffice to return exp(x)-1 */ + y = x - e + 1.0f; + if (k == 128) + y = y*2.0f*0x1p127f; + else + y = y*twopk; + return y - 1.0f; + } + u.i = (0x7f-k)<<23; /* 2^-k */ + if (k < 23) + y = (x-e+(1-u.f))*twopk; + else + y = (x-(e+u.f)+1)*twopk; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/expm1l.c b/vendor/modernc.org/libc/musl/src/math/expm1l.c new file mode 100644 index 000000000..d17150785 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/expm1l.c @@ -0,0 +1,123 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_expm1l.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Exponential function, minus 1 + * Long double precision + * + * + * SYNOPSIS: + * + * long double x, y, expm1l(); + * + * y = expm1l( x ); + * + * + * DESCRIPTION: + * + * Returns e (2.71828...) raised to the x power, minus 1. + * + * Range reduction is accomplished by separating the argument + * into an integer k and fraction f such that + * + * x k f + * e = 2 e. + * + * An expansion x + .5 x^2 + x^3 R(x) approximates exp(f) - 1 + * in the basic range [-0.5 ln 2, 0.5 ln 2]. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -45,+maxarg 200,000 1.2e-19 2.5e-20 + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double expm1l(long double x) +{ + return expm1(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 + +/* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x) + -.5 ln 2 < x < .5 ln 2 + Theoretical peak relative error = 3.4e-22 */ +static const long double +P0 = -1.586135578666346600772998894928250240826E4L, +P1 = 2.642771505685952966904660652518429479531E3L, +P2 = -3.423199068835684263987132888286791620673E2L, +P3 = 1.800826371455042224581246202420972737840E1L, +P4 = -5.238523121205561042771939008061958820811E-1L, +Q0 = -9.516813471998079611319047060563358064497E4L, +Q1 = 3.964866271411091674556850458227710004570E4L, +Q2 = -7.207678383830091850230366618190187434796E3L, +Q3 = 7.206038318724600171970199625081491823079E2L, +Q4 = -4.002027679107076077238836622982900945173E1L, +/* Q5 = 1.000000000000000000000000000000000000000E0 */ +/* C1 + C2 = ln 2 */ +C1 = 6.93145751953125E-1L, +C2 = 1.428606820309417232121458176568075500134E-6L, +/* ln 2^-65 */ +minarg = -4.5054566736396445112120088E1L, +/* ln 2^16384 */ +maxarg = 1.1356523406294143949492E4L; + +long double expm1l(long double x) +{ + long double px, qx, xx; + int k; + + if (isnan(x)) + return x; + if (x > maxarg) + return x*0x1p16383L; /* overflow, unless x==inf */ + if (x == 0.0) + return x; + if (x < minarg) + return -1.0; + + xx = C1 + C2; + /* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */ + px = floorl(0.5 + x / xx); + k = px; + /* remainder times ln 2 */ + x -= px * C1; + x -= px * C2; + + /* Approximate exp(remainder ln 2).*/ + px = (((( P4 * x + P3) * x + P2) * x + P1) * x + P0) * x; + qx = (((( x + Q4) * x + Q3) * x + Q2) * x + Q1) * x + Q0; + xx = x * x; + qx = x + (0.5 * xx + xx * px / qx); + + /* exp(x) = exp(k ln 2) exp(remainder ln 2) = 2^k exp(remainder ln 2). + We have qx = exp(remainder ln 2) - 1, so + exp(x) - 1 = 2^k (qx + 1) - 1 = 2^k qx + 2^k - 1. */ + px = scalbnl(1.0, k); + x = px * qx + (px - 1.0); + return x; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double expm1l(long double x) +{ + return expm1(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fabs.c b/vendor/modernc.org/libc/musl/src/math/fabs.c new file mode 100644 index 000000000..e8258cfdb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fabs.c @@ -0,0 +1,9 @@ +#include +#include + +double fabs(double x) +{ + union {double f; uint64_t i;} u = {x}; + u.i &= -1ULL/2; + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fabsf.c b/vendor/modernc.org/libc/musl/src/math/fabsf.c new file mode 100644 index 000000000..4efc8d686 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fabsf.c @@ -0,0 +1,9 @@ +#include +#include + +float fabsf(float x) +{ + union {float f; uint32_t i;} u = {x}; + u.i &= 0x7fffffff; + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fabsl.c b/vendor/modernc.org/libc/musl/src/math/fabsl.c new file mode 100644 index 000000000..c4f36ec28 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fabsl.c @@ -0,0 +1,15 @@ +#include "libm.h" +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fabsl(long double x) +{ + return fabs(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double fabsl(long double x) +{ + union ldshape u = {x}; + + u.i.se &= 0x7fff; + return u.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fdim.c b/vendor/modernc.org/libc/musl/src/math/fdim.c new file mode 100644 index 000000000..958546064 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fdim.c @@ -0,0 +1,10 @@ +#include + +double fdim(double x, double y) +{ + if (isnan(x)) + return x; + if (isnan(y)) + return y; + return x > y ? x - y : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fdimf.c b/vendor/modernc.org/libc/musl/src/math/fdimf.c new file mode 100644 index 000000000..543c3648e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fdimf.c @@ -0,0 +1,10 @@ +#include + +float fdimf(float x, float y) +{ + if (isnan(x)) + return x; + if (isnan(y)) + return y; + return x > y ? x - y : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fdiml.c b/vendor/modernc.org/libc/musl/src/math/fdiml.c new file mode 100644 index 000000000..62e29b7df --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fdiml.c @@ -0,0 +1,18 @@ +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fdiml(long double x, long double y) +{ + return fdim(x, y); +} +#else +long double fdiml(long double x, long double y) +{ + if (isnan(x)) + return x; + if (isnan(y)) + return y; + return x > y ? x - y : 0; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/finite.c b/vendor/modernc.org/libc/musl/src/math/finite.c new file mode 100644 index 000000000..25a0575fb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/finite.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +int finite(double x) +{ + return isfinite(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/finitef.c b/vendor/modernc.org/libc/musl/src/math/finitef.c new file mode 100644 index 000000000..2c4c77146 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/finitef.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +int finitef(float x) +{ + return isfinite(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/floor.c b/vendor/modernc.org/libc/musl/src/math/floor.c new file mode 100644 index 000000000..14a31cd8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/floor.c @@ -0,0 +1,31 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const double_t toint = 1/EPS; + +double floor(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = u.i >> 52 & 0x7ff; + double_t y; + + if (e >= 0x3ff+52 || x == 0) + return x; + /* y = int(x) - x, where int(x) is an integer neighbor of x */ + if (u.i >> 63) + y = x - toint + toint - x; + else + y = x + toint - toint - x; + /* special case because of non-nearest rounding modes */ + if (e <= 0x3ff-1) { + FORCE_EVAL(y); + return u.i >> 63 ? -1 : 0; + } + if (y > 0) + return x + y - 1; + return x + y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/floorf.c b/vendor/modernc.org/libc/musl/src/math/floorf.c new file mode 100644 index 000000000..dceec739d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/floorf.c @@ -0,0 +1,27 @@ +#include "libm.h" + +float floorf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = (int)(u.i >> 23 & 0xff) - 0x7f; + uint32_t m; + + if (e >= 23) + return x; + if (e >= 0) { + m = 0x007fffff >> e; + if ((u.i & m) == 0) + return x; + FORCE_EVAL(x + 0x1p120f); + if (u.i >> 31) + u.i += m; + u.i &= ~m; + } else { + FORCE_EVAL(x + 0x1p120f); + if (u.i >> 31 == 0) + u.i = 0; + else if (u.i << 1) + u.f = -1.0; + } + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/floorl.c b/vendor/modernc.org/libc/musl/src/math/floorl.c new file mode 100644 index 000000000..16aaec48e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/floorl.c @@ -0,0 +1,34 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double floorl(long double x) +{ + return floor(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double floorl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + long double y; + + if (e >= 0x3fff+LDBL_MANT_DIG-1 || x == 0) + return x; + /* y = int(x) - x, where int(x) is an integer neighbor of x */ + if (u.i.se >> 15) + y = x - toint + toint - x; + else + y = x + toint - toint - x; + /* special case because of non-nearest rounding modes */ + if (e <= 0x3fff-1) { + FORCE_EVAL(y); + return u.i.se >> 15 ? -1 : 0; + } + if (y > 0) + return x + y - 1; + return x + y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fma.c b/vendor/modernc.org/libc/musl/src/math/fma.c new file mode 100644 index 000000000..0c6f90c9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fma.c @@ -0,0 +1,183 @@ +#include +#include +#include +#include "atomic.h" + +#define ASUINT64(x) ((union {double f; uint64_t i;}){x}).i +#define ZEROINFNAN (0x7ff-0x3ff-52-1) + +struct num { uint64_t m; int e; int sign; }; + +static struct num normalize(double x) +{ + uint64_t ix = ASUINT64(x); + int e = ix>>52; + int sign = e & 0x800; + e &= 0x7ff; + if (!e) { + ix = ASUINT64(x*0x1p63); + e = ix>>52 & 0x7ff; + e = e ? e-63 : 0x800; + } + ix &= (1ull<<52)-1; + ix |= 1ull<<52; + ix <<= 1; + e -= 0x3ff + 52 + 1; + return (struct num){ix,e,sign}; +} + +static void mul(uint64_t *hi, uint64_t *lo, uint64_t x, uint64_t y) +{ + uint64_t t1,t2,t3; + uint64_t xlo = (uint32_t)x, xhi = x>>32; + uint64_t ylo = (uint32_t)y, yhi = y>>32; + + t1 = xlo*ylo; + t2 = xlo*yhi + xhi*ylo; + t3 = xhi*yhi; + *lo = t1 + (t2<<32); + *hi = t3 + (t2>>32) + (t1 > *lo); +} + +double fma(double x, double y, double z) +{ + #pragma STDC FENV_ACCESS ON + + /* normalize so top 10bits and last bit are 0 */ + struct num nx, ny, nz; + nx = normalize(x); + ny = normalize(y); + nz = normalize(z); + + if (nx.e >= ZEROINFNAN || ny.e >= ZEROINFNAN) + return x*y + z; + if (nz.e >= ZEROINFNAN) { + if (nz.e > ZEROINFNAN) /* z==0 */ + return x*y + z; + return z; + } + + /* mul: r = x*y */ + uint64_t rhi, rlo, zhi, zlo; + mul(&rhi, &rlo, nx.m, ny.m); + /* either top 20 or 21 bits of rhi and last 2 bits of rlo are 0 */ + + /* align exponents */ + int e = nx.e + ny.e; + int d = nz.e - e; + /* shift bits z<<=kz, r>>=kr, so kz+kr == d, set e = e+kr (== ez-kz) */ + if (d > 0) { + if (d < 64) { + zlo = nz.m<>64-d; + } else { + zlo = 0; + zhi = nz.m; + e = nz.e - 64; + d -= 64; + if (d == 0) { + } else if (d < 64) { + rlo = rhi<<64-d | rlo>>d | !!(rlo<<64-d); + rhi = rhi>>d; + } else { + rlo = 1; + rhi = 0; + } + } + } else { + zhi = 0; + d = -d; + if (d == 0) { + zlo = nz.m; + } else if (d < 64) { + zlo = nz.m>>d | !!(nz.m<<64-d); + } else { + zlo = 1; + } + } + + /* add */ + int sign = nx.sign^ny.sign; + int samesign = !(sign^nz.sign); + int nonzero = 1; + if (samesign) { + /* r += z */ + rlo += zlo; + rhi += zhi + (rlo < zlo); + } else { + /* r -= z */ + uint64_t t = rlo; + rlo -= zlo; + rhi = rhi - zhi - (t < rlo); + if (rhi>>63) { + rlo = -rlo; + rhi = -rhi-!!rlo; + sign = !sign; + } + nonzero = !!rhi; + } + + /* set rhi to top 63bit of the result (last bit is sticky) */ + if (nonzero) { + e += 64; + d = a_clz_64(rhi)-1; + /* note: d > 0 */ + rhi = rhi<>64-d | !!(rlo<>1 | (rlo&1); + else + rhi = rlo<>1 | (rhi&1) | 1ull<<62; + if (sign) + i = -i; + r = i; + r = 2*r - c; /* remove top bit */ + + /* raise underflow portably, such that it + cannot be optimized away */ + { + double_t tiny = DBL_MIN/FLT_MIN * r; + r += (double)(tiny*tiny) * (r-r); + } + } + } else { + /* only round once when scaled */ + d = 10; + i = ( rhi>>d | !!(rhi<<64-d) ) << d; + if (sign) + i = -i; + r = i; + } + } + return scalbn(r, e); +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmaf.c b/vendor/modernc.org/libc/musl/src/math/fmaf.c new file mode 100644 index 000000000..80f5cd8a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmaf.c @@ -0,0 +1,93 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_fmaf.c */ +/*- + * Copyright (c) 2005-2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include + +/* + * Fused multiply-add: Compute x * y + z with a single rounding error. + * + * A double has more than twice as much precision than a float, so + * direct double-precision arithmetic suffices, except where double + * rounding occurs. + */ +float fmaf(float x, float y, float z) +{ + #pragma STDC FENV_ACCESS ON + double xy, result; + union {double f; uint64_t i;} u; + int e; + + xy = (double)x * y; + result = xy + z; + u.f = result; + e = u.i>>52 & 0x7ff; + /* Common case: The double precision result is fine. */ + if ((u.i & 0x1fffffff) != 0x10000000 || /* not a halfway case */ + e == 0x7ff || /* NaN */ + (result - xy == z && result - z == xy) || /* exact */ + fegetround() != FE_TONEAREST) /* not round-to-nearest */ + { + /* + underflow may not be raised correctly, example: + fmaf(0x1p-120f, 0x1p-120f, 0x1p-149f) + */ +#if defined(FE_INEXACT) && defined(FE_UNDERFLOW) + if (e < 0x3ff-126 && e >= 0x3ff-149 && fetestexcept(FE_INEXACT)) { + feclearexcept(FE_INEXACT); + /* TODO: gcc and clang bug workaround */ + volatile float vz = z; + result = xy + vz; + if (fetestexcept(FE_INEXACT)) + feraiseexcept(FE_UNDERFLOW); + else + feraiseexcept(FE_INEXACT); + } +#endif + z = result; + return z; + } + + /* + * If result is inexact, and exactly halfway between two float values, + * we need to adjust the low-order bit in the direction of the error. + */ +#ifdef FE_TOWARDZERO + fesetround(FE_TOWARDZERO); +#endif + volatile double vxy = xy; /* XXX work around gcc CSE bug */ + double adjusted_result = vxy + z; + fesetround(FE_TONEAREST); + if (result == adjusted_result) { + u.f = adjusted_result; + u.i++; + adjusted_result = u.f; + } + z = adjusted_result; + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmal.c b/vendor/modernc.org/libc/musl/src/math/fmal.c new file mode 100644 index 000000000..4506aac6f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmal.c @@ -0,0 +1,293 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_fmal.c */ +/*- + * Copyright (c) 2005-2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include "libm.h" +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fmal(long double x, long double y, long double z) +{ + return fma(x, y, z); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#include +#if LDBL_MANT_DIG == 64 +#define LASTBIT(u) (u.i.m & 1) +#define SPLIT (0x1p32L + 1) +#elif LDBL_MANT_DIG == 113 +#define LASTBIT(u) (u.i.lo & 1) +#define SPLIT (0x1p57L + 1) +#endif + +/* + * A struct dd represents a floating-point number with twice the precision + * of a long double. We maintain the invariant that "hi" stores the high-order + * bits of the result. + */ +struct dd { + long double hi; + long double lo; +}; + +/* + * Compute a+b exactly, returning the exact result in a struct dd. We assume + * that both a and b are finite, but make no assumptions about their relative + * magnitudes. + */ +static inline struct dd dd_add(long double a, long double b) +{ + struct dd ret; + long double s; + + ret.hi = a + b; + s = ret.hi - a; + ret.lo = (a - (ret.hi - s)) + (b - s); + return (ret); +} + +/* + * Compute a+b, with a small tweak: The least significant bit of the + * result is adjusted into a sticky bit summarizing all the bits that + * were lost to rounding. This adjustment negates the effects of double + * rounding when the result is added to another number with a higher + * exponent. For an explanation of round and sticky bits, see any reference + * on FPU design, e.g., + * + * J. Coonen. An Implementation Guide to a Proposed Standard for + * Floating-Point Arithmetic. Computer, vol. 13, no. 1, Jan 1980. + */ +static inline long double add_adjusted(long double a, long double b) +{ + struct dd sum; + union ldshape u; + + sum = dd_add(a, b); + if (sum.lo != 0) { + u.f = sum.hi; + if (!LASTBIT(u)) + sum.hi = nextafterl(sum.hi, INFINITY * sum.lo); + } + return (sum.hi); +} + +/* + * Compute ldexp(a+b, scale) with a single rounding error. It is assumed + * that the result will be subnormal, and care is taken to ensure that + * double rounding does not occur. + */ +static inline long double add_and_denormalize(long double a, long double b, int scale) +{ + struct dd sum; + int bits_lost; + union ldshape u; + + sum = dd_add(a, b); + + /* + * If we are losing at least two bits of accuracy to denormalization, + * then the first lost bit becomes a round bit, and we adjust the + * lowest bit of sum.hi to make it a sticky bit summarizing all the + * bits in sum.lo. With the sticky bit adjusted, the hardware will + * break any ties in the correct direction. + * + * If we are losing only one bit to denormalization, however, we must + * break the ties manually. + */ + if (sum.lo != 0) { + u.f = sum.hi; + bits_lost = -u.i.se - scale + 1; + if ((bits_lost != 1) ^ LASTBIT(u)) + sum.hi = nextafterl(sum.hi, INFINITY * sum.lo); + } + return scalbnl(sum.hi, scale); +} + +/* + * Compute a*b exactly, returning the exact result in a struct dd. We assume + * that both a and b are normalized, so no underflow or overflow will occur. + * The current rounding mode must be round-to-nearest. + */ +static inline struct dd dd_mul(long double a, long double b) +{ + struct dd ret; + long double ha, hb, la, lb, p, q; + + p = a * SPLIT; + ha = a - p; + ha += p; + la = a - ha; + + p = b * SPLIT; + hb = b - p; + hb += p; + lb = b - hb; + + p = ha * hb; + q = ha * lb + la * hb; + + ret.hi = p + q; + ret.lo = p - ret.hi + q + la * lb; + return (ret); +} + +/* + * Fused multiply-add: Compute x * y + z with a single rounding error. + * + * We use scaling to avoid overflow/underflow, along with the + * canonical precision-doubling technique adapted from: + * + * Dekker, T. A Floating-Point Technique for Extending the + * Available Precision. Numer. Math. 18, 224-242 (1971). + */ +long double fmal(long double x, long double y, long double z) +{ + #pragma STDC FENV_ACCESS ON + long double xs, ys, zs, adj; + struct dd xy, r; + int oround; + int ex, ey, ez; + int spread; + + /* + * Handle special cases. The order of operations and the particular + * return values here are crucial in handling special cases involving + * infinities, NaNs, overflows, and signed zeroes correctly. + */ + if (!isfinite(x) || !isfinite(y)) + return (x * y + z); + if (!isfinite(z)) + return (z); + if (x == 0.0 || y == 0.0) + return (x * y + z); + if (z == 0.0) + return (x * y); + + xs = frexpl(x, &ex); + ys = frexpl(y, &ey); + zs = frexpl(z, &ez); + oround = fegetround(); + spread = ex + ey - ez; + + /* + * If x * y and z are many orders of magnitude apart, the scaling + * will overflow, so we handle these cases specially. Rounding + * modes other than FE_TONEAREST are painful. + */ + if (spread < -LDBL_MANT_DIG) { +#ifdef FE_INEXACT + feraiseexcept(FE_INEXACT); +#endif +#ifdef FE_UNDERFLOW + if (!isnormal(z)) + feraiseexcept(FE_UNDERFLOW); +#endif + switch (oround) { + default: /* FE_TONEAREST */ + return (z); +#ifdef FE_TOWARDZERO + case FE_TOWARDZERO: + if (x > 0.0 ^ y < 0.0 ^ z < 0.0) + return (z); + else + return (nextafterl(z, 0)); +#endif +#ifdef FE_DOWNWARD + case FE_DOWNWARD: + if (x > 0.0 ^ y < 0.0) + return (z); + else + return (nextafterl(z, -INFINITY)); +#endif +#ifdef FE_UPWARD + case FE_UPWARD: + if (x > 0.0 ^ y < 0.0) + return (nextafterl(z, INFINITY)); + else + return (z); +#endif + } + } + if (spread <= LDBL_MANT_DIG * 2) + zs = scalbnl(zs, -spread); + else + zs = copysignl(LDBL_MIN, zs); + + fesetround(FE_TONEAREST); + + /* + * Basic approach for round-to-nearest: + * + * (xy.hi, xy.lo) = x * y (exact) + * (r.hi, r.lo) = xy.hi + z (exact) + * adj = xy.lo + r.lo (inexact; low bit is sticky) + * result = r.hi + adj (correctly rounded) + */ + xy = dd_mul(xs, ys); + r = dd_add(xy.hi, zs); + + spread = ex + ey; + + if (r.hi == 0.0) { + /* + * When the addends cancel to 0, ensure that the result has + * the correct sign. + */ + fesetround(oround); + volatile long double vzs = zs; /* XXX gcc CSE bug workaround */ + return xy.hi + vzs + scalbnl(xy.lo, spread); + } + + if (oround != FE_TONEAREST) { + /* + * There is no need to worry about double rounding in directed + * rounding modes. + * But underflow may not be raised correctly, example in downward rounding: + * fmal(0x1.0000000001p-16000L, 0x1.0000000001p-400L, -0x1p-16440L) + */ + long double ret; +#if defined(FE_INEXACT) && defined(FE_UNDERFLOW) + int e = fetestexcept(FE_INEXACT); + feclearexcept(FE_INEXACT); +#endif + fesetround(oround); + adj = r.lo + xy.lo; + ret = scalbnl(r.hi + adj, spread); +#if defined(FE_INEXACT) && defined(FE_UNDERFLOW) + if (ilogbl(ret) < -16382 && fetestexcept(FE_INEXACT)) + feraiseexcept(FE_UNDERFLOW); + else if (e) + feraiseexcept(FE_INEXACT); +#endif + return ret; + } + + adj = add_adjusted(r.lo, xy.lo); + if (spread + ilogbl(r.hi) > -16383) + return scalbnl(r.hi + adj, spread); + else + return add_and_denormalize(r.hi, adj, spread); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fmax.c b/vendor/modernc.org/libc/musl/src/math/fmax.c new file mode 100644 index 000000000..94f0caa17 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmax.c @@ -0,0 +1,13 @@ +#include + +double fmax(double x, double y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeros, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? y : x; + return x < y ? y : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmaxf.c b/vendor/modernc.org/libc/musl/src/math/fmaxf.c new file mode 100644 index 000000000..695d8179c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmaxf.c @@ -0,0 +1,13 @@ +#include + +float fmaxf(float x, float y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeroes, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? y : x; + return x < y ? y : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmaxl.c b/vendor/modernc.org/libc/musl/src/math/fmaxl.c new file mode 100644 index 000000000..4b03158e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmaxl.c @@ -0,0 +1,21 @@ +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fmaxl(long double x, long double y) +{ + return fmax(x, y); +} +#else +long double fmaxl(long double x, long double y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeros, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? y : x; + return x < y ? y : x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fmin.c b/vendor/modernc.org/libc/musl/src/math/fmin.c new file mode 100644 index 000000000..08a8fd17f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmin.c @@ -0,0 +1,13 @@ +#include + +double fmin(double x, double y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeros, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? x : y; + return x < y ? x : y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fminf.c b/vendor/modernc.org/libc/musl/src/math/fminf.c new file mode 100644 index 000000000..3573c7de7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fminf.c @@ -0,0 +1,13 @@ +#include + +float fminf(float x, float y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeros, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? x : y; + return x < y ? x : y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fminl.c b/vendor/modernc.org/libc/musl/src/math/fminl.c new file mode 100644 index 000000000..69bc24a79 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fminl.c @@ -0,0 +1,21 @@ +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fminl(long double x, long double y) +{ + return fmin(x, y); +} +#else +long double fminl(long double x, long double y) +{ + if (isnan(x)) + return y; + if (isnan(y)) + return x; + /* handle signed zeros, see C99 Annex F.9.9.2 */ + if (signbit(x) != signbit(y)) + return signbit(x) ? x : y; + return x < y ? x : y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/fmod.c b/vendor/modernc.org/libc/musl/src/math/fmod.c new file mode 100644 index 000000000..6849722ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmod.c @@ -0,0 +1,68 @@ +#include +#include + +double fmod(double x, double y) +{ + union {double f; uint64_t i;} ux = {x}, uy = {y}; + int ex = ux.i>>52 & 0x7ff; + int ey = uy.i>>52 & 0x7ff; + int sx = ux.i>>63; + uint64_t i; + + /* in the followings uxi should be ux.i, but then gcc wrongly adds */ + /* float load/store to inner loops ruining performance and code size */ + uint64_t uxi = ux.i; + + if (uy.i<<1 == 0 || isnan(y) || ex == 0x7ff) + return (x*y)/(x*y); + if (uxi<<1 <= uy.i<<1) { + if (uxi<<1 == uy.i<<1) + return 0*x; + return x; + } + + /* normalize x and y */ + if (!ex) { + for (i = uxi<<12; i>>63 == 0; ex--, i <<= 1); + uxi <<= -ex + 1; + } else { + uxi &= -1ULL >> 12; + uxi |= 1ULL << 52; + } + if (!ey) { + for (i = uy.i<<12; i>>63 == 0; ey--, i <<= 1); + uy.i <<= -ey + 1; + } else { + uy.i &= -1ULL >> 12; + uy.i |= 1ULL << 52; + } + + /* x mod y */ + for (; ex > ey; ex--) { + i = uxi - uy.i; + if (i >> 63 == 0) { + if (i == 0) + return 0*x; + uxi = i; + } + uxi <<= 1; + } + i = uxi - uy.i; + if (i >> 63 == 0) { + if (i == 0) + return 0*x; + uxi = i; + } + for (; uxi>>52 == 0; uxi <<= 1, ex--); + + /* scale result */ + if (ex > 0) { + uxi -= 1ULL << 52; + uxi |= (uint64_t)ex << 52; + } else { + uxi >>= -ex + 1; + } + uxi |= (uint64_t)sx << 63; + ux.i = uxi; + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmodf.c b/vendor/modernc.org/libc/musl/src/math/fmodf.c new file mode 100644 index 000000000..ff58f9336 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmodf.c @@ -0,0 +1,65 @@ +#include +#include + +float fmodf(float x, float y) +{ + union {float f; uint32_t i;} ux = {x}, uy = {y}; + int ex = ux.i>>23 & 0xff; + int ey = uy.i>>23 & 0xff; + uint32_t sx = ux.i & 0x80000000; + uint32_t i; + uint32_t uxi = ux.i; + + if (uy.i<<1 == 0 || isnan(y) || ex == 0xff) + return (x*y)/(x*y); + if (uxi<<1 <= uy.i<<1) { + if (uxi<<1 == uy.i<<1) + return 0*x; + return x; + } + + /* normalize x and y */ + if (!ex) { + for (i = uxi<<9; i>>31 == 0; ex--, i <<= 1); + uxi <<= -ex + 1; + } else { + uxi &= -1U >> 9; + uxi |= 1U << 23; + } + if (!ey) { + for (i = uy.i<<9; i>>31 == 0; ey--, i <<= 1); + uy.i <<= -ey + 1; + } else { + uy.i &= -1U >> 9; + uy.i |= 1U << 23; + } + + /* x mod y */ + for (; ex > ey; ex--) { + i = uxi - uy.i; + if (i >> 31 == 0) { + if (i == 0) + return 0*x; + uxi = i; + } + uxi <<= 1; + } + i = uxi - uy.i; + if (i >> 31 == 0) { + if (i == 0) + return 0*x; + uxi = i; + } + for (; uxi>>23 == 0; uxi <<= 1, ex--); + + /* scale result up */ + if (ex > 0) { + uxi -= 1U << 23; + uxi |= (uint32_t)ex << 23; + } else { + uxi >>= -ex + 1; + } + uxi |= sx; + ux.i = uxi; + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/fmodl.c b/vendor/modernc.org/libc/musl/src/math/fmodl.c new file mode 100644 index 000000000..9f5b87393 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/fmodl.c @@ -0,0 +1,105 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double fmodl(long double x, long double y) +{ + return fmod(x, y); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double fmodl(long double x, long double y) +{ + union ldshape ux = {x}, uy = {y}; + int ex = ux.i.se & 0x7fff; + int ey = uy.i.se & 0x7fff; + int sx = ux.i.se & 0x8000; + + if (y == 0 || isnan(y) || ex == 0x7fff) + return (x*y)/(x*y); + ux.i.se = ex; + uy.i.se = ey; + if (ux.f <= uy.f) { + if (ux.f == uy.f) + return 0*x; + return x; + } + + /* normalize x and y */ + if (!ex) { + ux.f *= 0x1p120f; + ex = ux.i.se - 120; + } + if (!ey) { + uy.f *= 0x1p120f; + ey = uy.i.se - 120; + } + + /* x mod y */ +#if LDBL_MANT_DIG == 64 + uint64_t i, mx, my; + mx = ux.i.m; + my = uy.i.m; + for (; ex > ey; ex--) { + i = mx - my; + if (mx >= my) { + if (i == 0) + return 0*x; + mx = 2*i; + } else if (2*mx < mx) { + mx = 2*mx - my; + } else { + mx = 2*mx; + } + } + i = mx - my; + if (mx >= my) { + if (i == 0) + return 0*x; + mx = i; + } + for (; mx >> 63 == 0; mx *= 2, ex--); + ux.i.m = mx; +#elif LDBL_MANT_DIG == 113 + uint64_t hi, lo, xhi, xlo, yhi, ylo; + xhi = (ux.i2.hi & -1ULL>>16) | 1ULL<<48; + yhi = (uy.i2.hi & -1ULL>>16) | 1ULL<<48; + xlo = ux.i2.lo; + ylo = uy.i2.lo; + for (; ex > ey; ex--) { + hi = xhi - yhi; + lo = xlo - ylo; + if (xlo < ylo) + hi -= 1; + if (hi >> 63 == 0) { + if ((hi|lo) == 0) + return 0*x; + xhi = 2*hi + (lo>>63); + xlo = 2*lo; + } else { + xhi = 2*xhi + (xlo>>63); + xlo = 2*xlo; + } + } + hi = xhi - yhi; + lo = xlo - ylo; + if (xlo < ylo) + hi -= 1; + if (hi >> 63 == 0) { + if ((hi|lo) == 0) + return 0*x; + xhi = hi; + xlo = lo; + } + for (; xhi >> 48 == 0; xhi = 2*xhi + (xlo>>63), xlo = 2*xlo, ex--); + ux.i2.hi = xhi; + ux.i2.lo = xlo; +#endif + + /* scale result */ + if (ex <= 0) { + ux.i.se = (ex+120)|sx; + ux.f *= 0x1p-120f; + } else + ux.i.se = ex|sx; + return ux.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/frexp.c b/vendor/modernc.org/libc/musl/src/math/frexp.c new file mode 100644 index 000000000..27b6266ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/frexp.c @@ -0,0 +1,23 @@ +#include +#include + +double frexp(double x, int *e) +{ + union { double d; uint64_t i; } y = { x }; + int ee = y.i>>52 & 0x7ff; + + if (!ee) { + if (x) { + x = frexp(x*0x1p64, e); + *e -= 64; + } else *e = 0; + return x; + } else if (ee == 0x7ff) { + return x; + } + + *e = ee - 0x3fe; + y.i &= 0x800fffffffffffffull; + y.i |= 0x3fe0000000000000ull; + return y.d; +} diff --git a/vendor/modernc.org/libc/musl/src/math/frexpf.c b/vendor/modernc.org/libc/musl/src/math/frexpf.c new file mode 100644 index 000000000..078709752 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/frexpf.c @@ -0,0 +1,23 @@ +#include +#include + +float frexpf(float x, int *e) +{ + union { float f; uint32_t i; } y = { x }; + int ee = y.i>>23 & 0xff; + + if (!ee) { + if (x) { + x = frexpf(x*0x1p64, e); + *e -= 64; + } else *e = 0; + return x; + } else if (ee == 0xff) { + return x; + } + + *e = ee - 0x7e; + y.i &= 0x807ffffful; + y.i |= 0x3f000000ul; + return y.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/frexpl.c b/vendor/modernc.org/libc/musl/src/math/frexpl.c new file mode 100644 index 000000000..3c1b55374 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/frexpl.c @@ -0,0 +1,29 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double frexpl(long double x, int *e) +{ + return frexp(x, e); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double frexpl(long double x, int *e) +{ + union ldshape u = {x}; + int ee = u.i.se & 0x7fff; + + if (!ee) { + if (x) { + x = frexpl(x*0x1p120, e); + *e -= 120; + } else *e = 0; + return x; + } else if (ee == 0x7fff) { + return x; + } + + *e = ee - 0x3ffe; + u.i.se &= 0x8000; + u.i.se |= 0x3ffe; + return u.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/hypot.c b/vendor/modernc.org/libc/musl/src/math/hypot.c new file mode 100644 index 000000000..6071bf1e2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/hypot.c @@ -0,0 +1,67 @@ +#include +#include +#include + +#if FLT_EVAL_METHOD > 1U && LDBL_MANT_DIG == 64 +#define SPLIT (0x1p32 + 1) +#else +#define SPLIT (0x1p27 + 1) +#endif + +static void sq(double_t *hi, double_t *lo, double x) +{ + double_t xh, xl, xc; + + xc = (double_t)x*SPLIT; + xh = x - xc + xc; + xl = x - xh; + *hi = (double_t)x*x; + *lo = xh*xh - *hi + 2*xh*xl + xl*xl; +} + +double hypot(double x, double y) +{ + union {double f; uint64_t i;} ux = {x}, uy = {y}, ut; + int ex, ey; + double_t hx, lx, hy, ly, z; + + /* arrange |x| >= |y| */ + ux.i &= -1ULL>>1; + uy.i &= -1ULL>>1; + if (ux.i < uy.i) { + ut = ux; + ux = uy; + uy = ut; + } + + /* special cases */ + ex = ux.i>>52; + ey = uy.i>>52; + x = ux.f; + y = uy.f; + /* note: hypot(inf,nan) == inf */ + if (ey == 0x7ff) + return y; + if (ex == 0x7ff || uy.i == 0) + return x; + /* note: hypot(x,y) ~= x + y*y/x/2 with inexact for small y/x */ + /* 64 difference is enough for ld80 double_t */ + if (ex - ey > 64) + return x + y; + + /* precise sqrt argument in nearest rounding mode without overflow */ + /* xh*xh must not overflow and xl*xl must not underflow in sq */ + z = 1; + if (ex > 0x3ff+510) { + z = 0x1p700; + x *= 0x1p-700; + y *= 0x1p-700; + } else if (ey < 0x3ff-450) { + z = 0x1p-700; + x *= 0x1p700; + y *= 0x1p700; + } + sq(&hx, &lx, x); + sq(&hy, &ly, y); + return z*sqrt(ly+lx+hy+hx); +} diff --git a/vendor/modernc.org/libc/musl/src/math/hypotf.c b/vendor/modernc.org/libc/musl/src/math/hypotf.c new file mode 100644 index 000000000..2fc214b72 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/hypotf.c @@ -0,0 +1,35 @@ +#include +#include + +float hypotf(float x, float y) +{ + union {float f; uint32_t i;} ux = {x}, uy = {y}, ut; + float_t z; + + ux.i &= -1U>>1; + uy.i &= -1U>>1; + if (ux.i < uy.i) { + ut = ux; + ux = uy; + uy = ut; + } + + x = ux.f; + y = uy.f; + if (uy.i == 0xff<<23) + return y; + if (ux.i >= 0xff<<23 || uy.i == 0 || ux.i - uy.i >= 25<<23) + return x + y; + + z = 1; + if (ux.i >= (0x7f+60)<<23) { + z = 0x1p90f; + x *= 0x1p-90f; + y *= 0x1p-90f; + } else if (uy.i < (0x7f-60)<<23) { + z = 0x1p-90f; + x *= 0x1p90f; + y *= 0x1p90f; + } + return z*sqrtf((double)x*x + (double)y*y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/hypotl.c b/vendor/modernc.org/libc/musl/src/math/hypotl.c new file mode 100644 index 000000000..479aa92c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/hypotl.c @@ -0,0 +1,66 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double hypotl(long double x, long double y) +{ + return hypot(x, y); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +#if LDBL_MANT_DIG == 64 +#define SPLIT (0x1p32L+1) +#elif LDBL_MANT_DIG == 113 +#define SPLIT (0x1p57L+1) +#endif + +static void sq(long double *hi, long double *lo, long double x) +{ + long double xh, xl, xc; + xc = x*SPLIT; + xh = x - xc + xc; + xl = x - xh; + *hi = x*x; + *lo = xh*xh - *hi + 2*xh*xl + xl*xl; +} + +long double hypotl(long double x, long double y) +{ + union ldshape ux = {x}, uy = {y}; + int ex, ey; + long double hx, lx, hy, ly, z; + + ux.i.se &= 0x7fff; + uy.i.se &= 0x7fff; + if (ux.i.se < uy.i.se) { + ex = uy.i.se; + ey = ux.i.se; + x = uy.f; + y = ux.f; + } else { + ex = ux.i.se; + ey = uy.i.se; + x = ux.f; + y = uy.f; + } + + if (ex == 0x7fff && isinf(y)) + return y; + if (ex == 0x7fff || y == 0) + return x; + if (ex - ey > LDBL_MANT_DIG) + return x + y; + + z = 1; + if (ex > 0x3fff+8000) { + z = 0x1p10000L; + x *= 0x1p-10000L; + y *= 0x1p-10000L; + } else if (ey < 0x3fff-8000) { + z = 0x1p-10000L; + x *= 0x1p10000L; + y *= 0x1p10000L; + } + sq(&hx, &lx, x); + sq(&hy, &ly, y); + return z*sqrtl(ly+lx+hy+hx); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fabs.c b/vendor/modernc.org/libc/musl/src/math/i386/fabs.c new file mode 100644 index 000000000..396727863 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fabs.c @@ -0,0 +1,7 @@ +#include + +double fabs(double x) +{ + __asm__ ("fabs" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fabsf.c b/vendor/modernc.org/libc/musl/src/math/i386/fabsf.c new file mode 100644 index 000000000..d882eee34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fabsf.c @@ -0,0 +1,7 @@ +#include + +float fabsf(float x) +{ + __asm__ ("fabs" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fabsl.c b/vendor/modernc.org/libc/musl/src/math/i386/fabsl.c new file mode 100644 index 000000000..cc1c9ed9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fabsl.c @@ -0,0 +1,7 @@ +#include + +long double fabsl(long double x) +{ + __asm__ ("fabs" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fmod.c b/vendor/modernc.org/libc/musl/src/math/i386/fmod.c new file mode 100644 index 000000000..ea0c58d9b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fmod.c @@ -0,0 +1,10 @@ +#include + +double fmod(double x, double y) +{ + unsigned short fpsr; + // fprem does not introduce excess precision into x + do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fmodf.c b/vendor/modernc.org/libc/musl/src/math/i386/fmodf.c new file mode 100644 index 000000000..90b56ab0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fmodf.c @@ -0,0 +1,10 @@ +#include + +float fmodf(float x, float y) +{ + unsigned short fpsr; + // fprem does not introduce excess precision into x + do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/fmodl.c b/vendor/modernc.org/libc/musl/src/math/i386/fmodl.c new file mode 100644 index 000000000..3daeab060 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/fmodl.c @@ -0,0 +1,9 @@ +#include + +long double fmodl(long double x, long double y) +{ + unsigned short fpsr; + do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/llrint.c b/vendor/modernc.org/libc/musl/src/math/i386/llrint.c new file mode 100644 index 000000000..aa4008171 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/llrint.c @@ -0,0 +1,8 @@ +#include + +long long llrint(double x) +{ + long long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/llrintf.c b/vendor/modernc.org/libc/musl/src/math/i386/llrintf.c new file mode 100644 index 000000000..c41a317bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/llrintf.c @@ -0,0 +1,8 @@ +#include + +long long llrintf(float x) +{ + long long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/llrintl.c b/vendor/modernc.org/libc/musl/src/math/i386/llrintl.c new file mode 100644 index 000000000..c439ef28d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/llrintl.c @@ -0,0 +1,8 @@ +#include + +long long llrintl(long double x) +{ + long long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/lrint.c b/vendor/modernc.org/libc/musl/src/math/i386/lrint.c new file mode 100644 index 000000000..89563ab26 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/lrint.c @@ -0,0 +1,8 @@ +#include + +long lrint(double x) +{ + long r; + __asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/lrintf.c b/vendor/modernc.org/libc/musl/src/math/i386/lrintf.c new file mode 100644 index 000000000..0bbf29de0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/lrintf.c @@ -0,0 +1,8 @@ +#include + +long lrintf(float x) +{ + long r; + __asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/lrintl.c b/vendor/modernc.org/libc/musl/src/math/i386/lrintl.c new file mode 100644 index 000000000..eb8c09028 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/lrintl.c @@ -0,0 +1,8 @@ +#include + +long lrintl(long double x) +{ + long r; + __asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/remainder.c b/vendor/modernc.org/libc/musl/src/math/i386/remainder.c new file mode 100644 index 000000000..c083df904 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/remainder.c @@ -0,0 +1,12 @@ +#include + +double remainder(double x, double y) +{ + unsigned short fpsr; + // fprem1 does not introduce excess precision into x + do __asm__ ("fprem1; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} + +weak_alias(remainder, drem); diff --git a/vendor/modernc.org/libc/musl/src/math/i386/remainderf.c b/vendor/modernc.org/libc/musl/src/math/i386/remainderf.c new file mode 100644 index 000000000..280207d26 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/remainderf.c @@ -0,0 +1,12 @@ +#include + +float remainderf(float x, float y) +{ + unsigned short fpsr; + // fprem1 does not introduce excess precision into x + do __asm__ ("fprem1; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} + +weak_alias(remainderf, dremf); diff --git a/vendor/modernc.org/libc/musl/src/math/i386/remainderl.c b/vendor/modernc.org/libc/musl/src/math/i386/remainderl.c new file mode 100644 index 000000000..8cf75071e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/remainderl.c @@ -0,0 +1,9 @@ +#include + +long double remainderl(long double x, long double y) +{ + unsigned short fpsr; + do __asm__ ("fprem1; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/rint.c b/vendor/modernc.org/libc/musl/src/math/i386/rint.c new file mode 100644 index 000000000..a5276a60d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/rint.c @@ -0,0 +1,7 @@ +#include + +double rint(double x) +{ + __asm__ ("frndint" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/rintf.c b/vendor/modernc.org/libc/musl/src/math/i386/rintf.c new file mode 100644 index 000000000..bb4121a4e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/rintf.c @@ -0,0 +1,7 @@ +#include + +float rintf(float x) +{ + __asm__ ("frndint" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/rintl.c b/vendor/modernc.org/libc/musl/src/math/i386/rintl.c new file mode 100644 index 000000000..e1a92077f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/rintl.c @@ -0,0 +1,7 @@ +#include + +long double rintl(long double x) +{ + __asm__ ("frndint" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/sqrt.c b/vendor/modernc.org/libc/musl/src/math/i386/sqrt.c new file mode 100644 index 000000000..934fbccab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/sqrt.c @@ -0,0 +1,15 @@ +#include "libm.h" + +double sqrt(double x) +{ + union ldshape ux; + unsigned fpsr; + __asm__ ("fsqrt; fnstsw %%ax": "=t"(ux.f), "=a"(fpsr) : "0"(x)); + if ((ux.i.m & 0x7ff) != 0x400) + return (double)ux.f; + /* Rounding to double would have encountered an exact halfway case. + Adjust mantissa downwards if fsqrt rounded up, else upwards. + (result of fsqrt could not have been exact) */ + ux.i.m ^= (fpsr & 0x200) + 0x300; + return (double)ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/i386/sqrtf.c new file mode 100644 index 000000000..41c65c2bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/sqrtf.c @@ -0,0 +1,12 @@ +#include + +float sqrtf(float x) +{ + long double t; + /* The long double result has sufficient precision so that + * second rounding to float still keeps the returned value + * correctly rounded, see Pierre Roux, "Innocuous Double + * Rounding of Basic Arithmetic Operations". */ + __asm__ ("fsqrt" : "=t"(t) : "0"(x)); + return (float)t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/i386/sqrtl.c b/vendor/modernc.org/libc/musl/src/math/i386/sqrtl.c new file mode 100644 index 000000000..864cfcc4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/i386/sqrtl.c @@ -0,0 +1,7 @@ +#include + +long double sqrtl(long double x) +{ + __asm__ ("fsqrt" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ilogb.c b/vendor/modernc.org/libc/musl/src/math/ilogb.c new file mode 100644 index 000000000..64d40154d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ilogb.c @@ -0,0 +1,26 @@ +#include +#include "libm.h" + +int ilogb(double x) +{ + #pragma STDC FENV_ACCESS ON + union {double f; uint64_t i;} u = {x}; + uint64_t i = u.i; + int e = i>>52 & 0x7ff; + + if (!e) { + i <<= 12; + if (i == 0) { + FORCE_EVAL(0/0.0f); + return FP_ILOGB0; + } + /* subnormal x */ + for (e = -0x3ff; i>>63 == 0; e--, i<<=1); + return e; + } + if (e == 0x7ff) { + FORCE_EVAL(0/0.0f); + return i<<12 ? FP_ILOGBNAN : INT_MAX; + } + return e - 0x3ff; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ilogbf.c b/vendor/modernc.org/libc/musl/src/math/ilogbf.c new file mode 100644 index 000000000..e23ba209e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ilogbf.c @@ -0,0 +1,26 @@ +#include +#include "libm.h" + +int ilogbf(float x) +{ + #pragma STDC FENV_ACCESS ON + union {float f; uint32_t i;} u = {x}; + uint32_t i = u.i; + int e = i>>23 & 0xff; + + if (!e) { + i <<= 9; + if (i == 0) { + FORCE_EVAL(0/0.0f); + return FP_ILOGB0; + } + /* subnormal x */ + for (e = -0x7f; i>>31 == 0; e--, i<<=1); + return e; + } + if (e == 0xff) { + FORCE_EVAL(0/0.0f); + return i<<9 ? FP_ILOGBNAN : INT_MAX; + } + return e - 0x7f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ilogbl.c b/vendor/modernc.org/libc/musl/src/math/ilogbl.c new file mode 100644 index 000000000..7b1a9cf8d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ilogbl.c @@ -0,0 +1,55 @@ +#include +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +int ilogbl(long double x) +{ + return ilogb(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +int ilogbl(long double x) +{ + #pragma STDC FENV_ACCESS ON + union ldshape u = {x}; + uint64_t m = u.i.m; + int e = u.i.se & 0x7fff; + + if (!e) { + if (m == 0) { + FORCE_EVAL(0/0.0f); + return FP_ILOGB0; + } + /* subnormal x */ + for (e = -0x3fff+1; m>>63 == 0; e--, m<<=1); + return e; + } + if (e == 0x7fff) { + FORCE_EVAL(0/0.0f); + return m<<1 ? FP_ILOGBNAN : INT_MAX; + } + return e - 0x3fff; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +int ilogbl(long double x) +{ + #pragma STDC FENV_ACCESS ON + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + + if (!e) { + if (x == 0) { + FORCE_EVAL(0/0.0f); + return FP_ILOGB0; + } + /* subnormal x */ + x *= 0x1p120; + return ilogbl(x) - 120; + } + if (e == 0x7fff) { + FORCE_EVAL(0/0.0f); + u.i.se = 0; + return u.f ? FP_ILOGBNAN : INT_MAX; + } + return e - 0x3fff; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/j0.c b/vendor/modernc.org/libc/musl/src/math/j0.c new file mode 100644 index 000000000..d722d9428 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/j0.c @@ -0,0 +1,375 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_j0.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* j0(x), y0(x) + * Bessel function of the first and second kinds of order zero. + * Method -- j0(x): + * 1. For tiny x, we use j0(x) = 1 - x^2/4 + x^4/64 - ... + * 2. Reduce x to |x| since j0(x)=j0(-x), and + * for x in (0,2) + * j0(x) = 1-z/4+ z^2*R0/S0, where z = x*x; + * (precision: |j0-1+z/4-z^2R0/S0 |<2**-63.67 ) + * for x in (2,inf) + * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0)) + * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0) + * as follow: + * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4) + * = 1/sqrt(2) * (cos(x) + sin(x)) + * sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4) + * = 1/sqrt(2) * (sin(x) - cos(x)) + * (To avoid cancellation, use + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) + * to compute the worse one.) + * + * 3 Special cases + * j0(nan)= nan + * j0(0) = 1 + * j0(inf) = 0 + * + * Method -- y0(x): + * 1. For x<2. + * Since + * y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...) + * therefore y0(x)-2/pi*j0(x)*ln(x) is an even function. + * We use the following function to approximate y0, + * y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2 + * where + * U(z) = u00 + u01*z + ... + u06*z^6 + * V(z) = 1 + v01*z + ... + v04*z^4 + * with absolute approximation error bounded by 2**-72. + * Note: For tiny x, U/V = u0 and j0(x)~1, hence + * y0(tiny) = u0 + (2/pi)*ln(tiny), (choose tiny<2**-27) + * 2. For x>=2. + * y0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)+q0(x)*sin(x0)) + * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0) + * by the method mentioned above. + * 3. Special cases: y0(0)=-inf, y0(x<0)=NaN, y0(inf)=0. + */ + +#include "libm.h" + +static double pzero(double), qzero(double); + +static const double +invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */ +tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ + +/* common method when |x|>=2 */ +static double common(uint32_t ix, double x, int y0) +{ + double s,c,ss,cc,z; + + /* + * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x-pi/4)-q0(x)*sin(x-pi/4)) + * y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x-pi/4)+q0(x)*cos(x-pi/4)) + * + * sin(x-pi/4) = (sin(x) - cos(x))/sqrt(2) + * cos(x-pi/4) = (sin(x) + cos(x))/sqrt(2) + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) + */ + s = sin(x); + c = cos(x); + if (y0) + c = -c; + cc = s+c; + /* avoid overflow in 2*x, big ulp error when x>=0x1p1023 */ + if (ix < 0x7fe00000) { + ss = s-c; + z = -cos(2*x); + if (s*c < 0) + cc = z/ss; + else + ss = z/cc; + if (ix < 0x48000000) { + if (y0) + ss = -ss; + cc = pzero(x)*cc-qzero(x)*ss; + } + } + return invsqrtpi*cc/sqrt(x); +} + +/* R0/S0 on [0, 2.00] */ +static const double +R02 = 1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */ +R03 = -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */ +R04 = 1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */ +R05 = -4.61832688532103189199e-09, /* 0xBE33D5E7, 0x73D63FCE */ +S01 = 1.56191029464890010492e-02, /* 0x3F8FFCE8, 0x82C8C2A4 */ +S02 = 1.16926784663337450260e-04, /* 0x3F1EA6D2, 0xDD57DBF4 */ +S03 = 5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */ +S04 = 1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */ + +double j0(double x) +{ + double z,r,s; + uint32_t ix; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + + /* j0(+-inf)=0, j0(nan)=nan */ + if (ix >= 0x7ff00000) + return 1/(x*x); + x = fabs(x); + + if (ix >= 0x40000000) { /* |x| >= 2 */ + /* large ulp error near zeros: 2.4, 5.52, 8.6537,.. */ + return common(ix,x,0); + } + + /* 1 - x*x/4 + x*x*R(x^2)/S(x^2) */ + if (ix >= 0x3f200000) { /* |x| >= 2**-13 */ + /* up to 4ulp error close to 2 */ + z = x*x; + r = z*(R02+z*(R03+z*(R04+z*R05))); + s = 1+z*(S01+z*(S02+z*(S03+z*S04))); + return (1+x/2)*(1-x/2) + z*(r/s); + } + + /* 1 - x*x/4 */ + /* prevent underflow */ + /* inexact should be raised when x!=0, this is not done correctly */ + if (ix >= 0x38000000) /* |x| >= 2**-127 */ + x = 0.25*x*x; + return 1 - x; +} + +static const double +u00 = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */ +u01 = 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */ +u02 = -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */ +u03 = 3.47453432093683650238e-04, /* 0x3F36C54D, 0x20B29B6B */ +u04 = -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */ +u05 = 1.95590137035022920206e-08, /* 0x3E550057, 0x3B4EABD4 */ +u06 = -3.98205194132103398453e-11, /* 0xBDC5E43D, 0x693FB3C8 */ +v01 = 1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */ +v02 = 7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */ +v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */ +v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */ + +double y0(double x) +{ + double z,u,v; + uint32_t ix,lx; + + EXTRACT_WORDS(ix, lx, x); + + /* y0(nan)=nan, y0(<0)=nan, y0(0)=-inf, y0(inf)=0 */ + if ((ix<<1 | lx) == 0) + return -1/0.0; + if (ix>>31) + return 0/0.0; + if (ix >= 0x7ff00000) + return 1/x; + + if (ix >= 0x40000000) { /* x >= 2 */ + /* large ulp errors near zeros: 3.958, 7.086,.. */ + return common(ix,x,1); + } + + /* U(x^2)/V(x^2) + (2/pi)*j0(x)*log(x) */ + if (ix >= 0x3e400000) { /* x >= 2**-27 */ + /* large ulp error near the first zero, x ~= 0.89 */ + z = x*x; + u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06))))); + v = 1.0+z*(v01+z*(v02+z*(v03+z*v04))); + return u/v + tpi*(j0(x)*log(x)); + } + return u00 + tpi*log(x); +} + +/* The asymptotic expansions of pzero is + * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x. + * For x >= 2, We approximate pzero by + * pzero(x) = 1 + (R/S) + * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10 + * S = 1 + pS0*s^2 + ... + pS4*s^10 + * and + * | pzero(x)-1-R/S | <= 2 ** ( -60.26) + */ +static const double pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ + -7.03124999999900357484e-02, /* 0xBFB1FFFF, 0xFFFFFD32 */ + -8.08167041275349795626e+00, /* 0xC02029D0, 0xB44FA779 */ + -2.57063105679704847262e+02, /* 0xC0701102, 0x7B19E863 */ + -2.48521641009428822144e+03, /* 0xC0A36A6E, 0xCD4DCAFC */ + -5.25304380490729545272e+03, /* 0xC0B4850B, 0x36CC643D */ +}; +static const double pS8[5] = { + 1.16534364619668181717e+02, /* 0x405D2233, 0x07A96751 */ + 3.83374475364121826715e+03, /* 0x40ADF37D, 0x50596938 */ + 4.05978572648472545552e+04, /* 0x40E3D2BB, 0x6EB6B05F */ + 1.16752972564375915681e+05, /* 0x40FC810F, 0x8F9FA9BD */ + 4.76277284146730962675e+04, /* 0x40E74177, 0x4F2C49DC */ +}; + +static const double pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + -1.14125464691894502584e-11, /* 0xBDA918B1, 0x47E495CC */ + -7.03124940873599280078e-02, /* 0xBFB1FFFF, 0xE69AFBC6 */ + -4.15961064470587782438e+00, /* 0xC010A370, 0xF90C6BBF */ + -6.76747652265167261021e+01, /* 0xC050EB2F, 0x5A7D1783 */ + -3.31231299649172967747e+02, /* 0xC074B3B3, 0x6742CC63 */ + -3.46433388365604912451e+02, /* 0xC075A6EF, 0x28A38BD7 */ +}; +static const double pS5[5] = { + 6.07539382692300335975e+01, /* 0x404E6081, 0x0C98C5DE */ + 1.05125230595704579173e+03, /* 0x40906D02, 0x5C7E2864 */ + 5.97897094333855784498e+03, /* 0x40B75AF8, 0x8FBE1D60 */ + 9.62544514357774460223e+03, /* 0x40C2CCB8, 0xFA76FA38 */ + 2.40605815922939109441e+03, /* 0x40A2CC1D, 0xC70BE864 */ +}; + +static const double pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ + -2.54704601771951915620e-09, /* 0xBE25E103, 0x6FE1AA86 */ + -7.03119616381481654654e-02, /* 0xBFB1FFF6, 0xF7C0E24B */ + -2.40903221549529611423e+00, /* 0xC00345B2, 0xAEA48074 */ + -2.19659774734883086467e+01, /* 0xC035F74A, 0x4CB94E14 */ + -5.80791704701737572236e+01, /* 0xC04D0A22, 0x420A1A45 */ + -3.14479470594888503854e+01, /* 0xC03F72AC, 0xA892D80F */ +}; +static const double pS3[5] = { + 3.58560338055209726349e+01, /* 0x4041ED92, 0x84077DD3 */ + 3.61513983050303863820e+02, /* 0x40769839, 0x464A7C0E */ + 1.19360783792111533330e+03, /* 0x4092A66E, 0x6D1061D6 */ + 1.12799679856907414432e+03, /* 0x40919FFC, 0xB8C39B7E */ + 1.73580930813335754692e+02, /* 0x4065B296, 0xFC379081 */ +}; + +static const double pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + -8.87534333032526411254e-08, /* 0xBE77D316, 0xE927026D */ + -7.03030995483624743247e-02, /* 0xBFB1FF62, 0x495E1E42 */ + -1.45073846780952986357e+00, /* 0xBFF73639, 0x8A24A843 */ + -7.63569613823527770791e+00, /* 0xC01E8AF3, 0xEDAFA7F3 */ + -1.11931668860356747786e+01, /* 0xC02662E6, 0xC5246303 */ + -3.23364579351335335033e+00, /* 0xC009DE81, 0xAF8FE70F */ +}; +static const double pS2[5] = { + 2.22202997532088808441e+01, /* 0x40363865, 0x908B5959 */ + 1.36206794218215208048e+02, /* 0x4061069E, 0x0EE8878F */ + 2.70470278658083486789e+02, /* 0x4070E786, 0x42EA079B */ + 1.53875394208320329881e+02, /* 0x40633C03, 0x3AB6FAFF */ + 1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */ +}; + +static double pzero(double x) +{ + const double *p,*q; + double_t z,r,s; + uint32_t ix; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x40200000){p = pR8; q = pS8;} + else if (ix >= 0x40122E8B){p = pR5; q = pS5;} + else if (ix >= 0x4006DB6D){p = pR3; q = pS3;} + else /*ix >= 0x40000000*/ {p = pR2; q = pS2;} + z = 1.0/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4])))); + return 1.0 + r/s; +} + + +/* For x >= 8, the asymptotic expansions of qzero is + * -1/8 s + 75/1024 s^3 - ..., where s = 1/x. + * We approximate pzero by + * qzero(x) = s*(-1.25 + (R/S)) + * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10 + * S = 1 + qS0*s^2 + ... + qS5*s^12 + * and + * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22) + */ +static const double qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ + 7.32421874999935051953e-02, /* 0x3FB2BFFF, 0xFFFFFE2C */ + 1.17682064682252693899e+01, /* 0x40278952, 0x5BB334D6 */ + 5.57673380256401856059e+02, /* 0x40816D63, 0x15301825 */ + 8.85919720756468632317e+03, /* 0x40C14D99, 0x3E18F46D */ + 3.70146267776887834771e+04, /* 0x40E212D4, 0x0E901566 */ +}; +static const double qS8[6] = { + 1.63776026895689824414e+02, /* 0x406478D5, 0x365B39BC */ + 8.09834494656449805916e+03, /* 0x40BFA258, 0x4E6B0563 */ + 1.42538291419120476348e+05, /* 0x41016652, 0x54D38C3F */ + 8.03309257119514397345e+05, /* 0x412883DA, 0x83A52B43 */ + 8.40501579819060512818e+05, /* 0x4129A66B, 0x28DE0B3D */ + -3.43899293537866615225e+05, /* 0xC114FD6D, 0x2C9530C5 */ +}; + +static const double qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + 1.84085963594515531381e-11, /* 0x3DB43D8F, 0x29CC8CD9 */ + 7.32421766612684765896e-02, /* 0x3FB2BFFF, 0xD172B04C */ + 5.83563508962056953777e+00, /* 0x401757B0, 0xB9953DD3 */ + 1.35111577286449829671e+02, /* 0x4060E392, 0x0A8788E9 */ + 1.02724376596164097464e+03, /* 0x40900CF9, 0x9DC8C481 */ + 1.98997785864605384631e+03, /* 0x409F17E9, 0x53C6E3A6 */ +}; +static const double qS5[6] = { + 8.27766102236537761883e+01, /* 0x4054B1B3, 0xFB5E1543 */ + 2.07781416421392987104e+03, /* 0x40A03BA0, 0xDA21C0CE */ + 1.88472887785718085070e+04, /* 0x40D267D2, 0x7B591E6D */ + 5.67511122894947329769e+04, /* 0x40EBB5E3, 0x97E02372 */ + 3.59767538425114471465e+04, /* 0x40E19118, 0x1F7A54A0 */ + -5.35434275601944773371e+03, /* 0xC0B4EA57, 0xBEDBC609 */ +}; + +static const double qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ + 4.37741014089738620906e-09, /* 0x3E32CD03, 0x6ADECB82 */ + 7.32411180042911447163e-02, /* 0x3FB2BFEE, 0x0E8D0842 */ + 3.34423137516170720929e+00, /* 0x400AC0FC, 0x61149CF5 */ + 4.26218440745412650017e+01, /* 0x40454F98, 0x962DAEDD */ + 1.70808091340565596283e+02, /* 0x406559DB, 0xE25EFD1F */ + 1.66733948696651168575e+02, /* 0x4064D77C, 0x81FA21E0 */ +}; +static const double qS3[6] = { + 4.87588729724587182091e+01, /* 0x40486122, 0xBFE343A6 */ + 7.09689221056606015736e+02, /* 0x40862D83, 0x86544EB3 */ + 3.70414822620111362994e+03, /* 0x40ACF04B, 0xE44DFC63 */ + 6.46042516752568917582e+03, /* 0x40B93C6C, 0xD7C76A28 */ + 2.51633368920368957333e+03, /* 0x40A3A8AA, 0xD94FB1C0 */ + -1.49247451836156386662e+02, /* 0xC062A7EB, 0x201CF40F */ +}; + +static const double qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + 1.50444444886983272379e-07, /* 0x3E84313B, 0x54F76BDB */ + 7.32234265963079278272e-02, /* 0x3FB2BEC5, 0x3E883E34 */ + 1.99819174093815998816e+00, /* 0x3FFFF897, 0xE727779C */ + 1.44956029347885735348e+01, /* 0x402CFDBF, 0xAAF96FE5 */ + 3.16662317504781540833e+01, /* 0x403FAA8E, 0x29FBDC4A */ + 1.62527075710929267416e+01, /* 0x403040B1, 0x71814BB4 */ +}; +static const double qS2[6] = { + 3.03655848355219184498e+01, /* 0x403E5D96, 0xF7C07AED */ + 2.69348118608049844624e+02, /* 0x4070D591, 0xE4D14B40 */ + 8.44783757595320139444e+02, /* 0x408A6645, 0x22B3BF22 */ + 8.82935845112488550512e+02, /* 0x408B977C, 0x9C5CC214 */ + 2.12666388511798828631e+02, /* 0x406A9553, 0x0E001365 */ + -5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */ +}; + +static double qzero(double x) +{ + const double *p,*q; + double_t s,r,z; + uint32_t ix; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x40200000){p = qR8; q = qS8;} + else if (ix >= 0x40122E8B){p = qR5; q = qS5;} + else if (ix >= 0x4006DB6D){p = qR3; q = qS3;} + else /*ix >= 0x40000000*/ {p = qR2; q = qS2;} + z = 1.0/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5]))))); + return (-.125 + r/s)/x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/j0f.c b/vendor/modernc.org/libc/musl/src/math/j0f.c new file mode 100644 index 000000000..fab554a31 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/j0f.c @@ -0,0 +1,314 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_j0f.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#define _GNU_SOURCE +#include "libm.h" + +static float pzerof(float), qzerof(float); + +static const float +invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */ +tpi = 6.3661974669e-01; /* 0x3f22f983 */ + +static float common(uint32_t ix, float x, int y0) +{ + float z,s,c,ss,cc; + /* + * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x) + * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x) + */ + s = sinf(x); + c = cosf(x); + if (y0) + c = -c; + cc = s+c; + if (ix < 0x7f000000) { + ss = s-c; + z = -cosf(2*x); + if (s*c < 0) + cc = z/ss; + else + ss = z/cc; + if (ix < 0x58800000) { + if (y0) + ss = -ss; + cc = pzerof(x)*cc-qzerof(x)*ss; + } + } + return invsqrtpi*cc/sqrtf(x); +} + +/* R0/S0 on [0, 2.00] */ +static const float +R02 = 1.5625000000e-02, /* 0x3c800000 */ +R03 = -1.8997929874e-04, /* 0xb947352e */ +R04 = 1.8295404516e-06, /* 0x35f58e88 */ +R05 = -4.6183270541e-09, /* 0xb19eaf3c */ +S01 = 1.5619102865e-02, /* 0x3c7fe744 */ +S02 = 1.1692678527e-04, /* 0x38f53697 */ +S03 = 5.1354652442e-07, /* 0x3509daa6 */ +S04 = 1.1661400734e-09; /* 0x30a045e8 */ + +float j0f(float x) +{ + float z,r,s; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x7f800000) + return 1/(x*x); + x = fabsf(x); + + if (ix >= 0x40000000) { /* |x| >= 2 */ + /* large ulp error near zeros */ + return common(ix, x, 0); + } + if (ix >= 0x3a000000) { /* |x| >= 2**-11 */ + /* up to 4ulp error near 2 */ + z = x*x; + r = z*(R02+z*(R03+z*(R04+z*R05))); + s = 1+z*(S01+z*(S02+z*(S03+z*S04))); + return (1+x/2)*(1-x/2) + z*(r/s); + } + if (ix >= 0x21800000) /* |x| >= 2**-60 */ + x = 0.25f*x*x; + return 1 - x; +} + +static const float +u00 = -7.3804296553e-02, /* 0xbd9726b5 */ +u01 = 1.7666645348e-01, /* 0x3e34e80d */ +u02 = -1.3818567619e-02, /* 0xbc626746 */ +u03 = 3.4745343146e-04, /* 0x39b62a69 */ +u04 = -3.8140706238e-06, /* 0xb67ff53c */ +u05 = 1.9559013964e-08, /* 0x32a802ba */ +u06 = -3.9820518410e-11, /* 0xae2f21eb */ +v01 = 1.2730483897e-02, /* 0x3c509385 */ +v02 = 7.6006865129e-05, /* 0x389f65e0 */ +v03 = 2.5915085189e-07, /* 0x348b216c */ +v04 = 4.4111031494e-10; /* 0x2ff280c2 */ + +float y0f(float x) +{ + float z,u,v; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + if ((ix & 0x7fffffff) == 0) + return -1/0.0f; + if (ix>>31) + return 0/0.0f; + if (ix >= 0x7f800000) + return 1/x; + if (ix >= 0x40000000) { /* |x| >= 2.0 */ + /* large ulp error near zeros */ + return common(ix,x,1); + } + if (ix >= 0x39000000) { /* x >= 2**-13 */ + /* large ulp error at x ~= 0.89 */ + z = x*x; + u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06))))); + v = 1+z*(v01+z*(v02+z*(v03+z*v04))); + return u/v + tpi*(j0f(x)*logf(x)); + } + return u00 + tpi*logf(x); +} + +/* The asymptotic expansions of pzero is + * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x. + * For x >= 2, We approximate pzero by + * pzero(x) = 1 + (R/S) + * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10 + * S = 1 + pS0*s^2 + ... + pS4*s^10 + * and + * | pzero(x)-1-R/S | <= 2 ** ( -60.26) + */ +static const float pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.0000000000e+00, /* 0x00000000 */ + -7.0312500000e-02, /* 0xbd900000 */ + -8.0816707611e+00, /* 0xc1014e86 */ + -2.5706311035e+02, /* 0xc3808814 */ + -2.4852163086e+03, /* 0xc51b5376 */ + -5.2530439453e+03, /* 0xc5a4285a */ +}; +static const float pS8[5] = { + 1.1653436279e+02, /* 0x42e91198 */ + 3.8337448730e+03, /* 0x456f9beb */ + 4.0597855469e+04, /* 0x471e95db */ + 1.1675296875e+05, /* 0x47e4087c */ + 4.7627726562e+04, /* 0x473a0bba */ +}; +static const float pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + -1.1412546255e-11, /* 0xad48c58a */ + -7.0312492549e-02, /* 0xbd8fffff */ + -4.1596107483e+00, /* 0xc0851b88 */ + -6.7674766541e+01, /* 0xc287597b */ + -3.3123129272e+02, /* 0xc3a59d9b */ + -3.4643338013e+02, /* 0xc3ad3779 */ +}; +static const float pS5[5] = { + 6.0753936768e+01, /* 0x42730408 */ + 1.0512523193e+03, /* 0x44836813 */ + 5.9789707031e+03, /* 0x45bad7c4 */ + 9.6254453125e+03, /* 0x461665c8 */ + 2.4060581055e+03, /* 0x451660ee */ +}; + +static const float pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ + -2.5470459075e-09, /* 0xb12f081b */ + -7.0311963558e-02, /* 0xbd8fffb8 */ + -2.4090321064e+00, /* 0xc01a2d95 */ + -2.1965976715e+01, /* 0xc1afba52 */ + -5.8079170227e+01, /* 0xc2685112 */ + -3.1447946548e+01, /* 0xc1fb9565 */ +}; +static const float pS3[5] = { + 3.5856033325e+01, /* 0x420f6c94 */ + 3.6151397705e+02, /* 0x43b4c1ca */ + 1.1936077881e+03, /* 0x44953373 */ + 1.1279968262e+03, /* 0x448cffe6 */ + 1.7358093262e+02, /* 0x432d94b8 */ +}; + +static const float pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + -8.8753431271e-08, /* 0xb3be98b7 */ + -7.0303097367e-02, /* 0xbd8ffb12 */ + -1.4507384300e+00, /* 0xbfb9b1cc */ + -7.6356959343e+00, /* 0xc0f4579f */ + -1.1193166733e+01, /* 0xc1331736 */ + -3.2336456776e+00, /* 0xc04ef40d */ +}; +static const float pS2[5] = { + 2.2220300674e+01, /* 0x41b1c32d */ + 1.3620678711e+02, /* 0x430834f0 */ + 2.7047027588e+02, /* 0x43873c32 */ + 1.5387539673e+02, /* 0x4319e01a */ + 1.4657617569e+01, /* 0x416a859a */ +}; + +static float pzerof(float x) +{ + const float *p,*q; + float_t z,r,s; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x41000000){p = pR8; q = pS8;} + else if (ix >= 0x409173eb){p = pR5; q = pS5;} + else if (ix >= 0x4036d917){p = pR3; q = pS3;} + else /*ix >= 0x40000000*/ {p = pR2; q = pS2;} + z = 1.0f/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4])))); + return 1.0f + r/s; +} + + +/* For x >= 8, the asymptotic expansions of qzero is + * -1/8 s + 75/1024 s^3 - ..., where s = 1/x. + * We approximate pzero by + * qzero(x) = s*(-1.25 + (R/S)) + * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10 + * S = 1 + qS0*s^2 + ... + qS5*s^12 + * and + * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22) + */ +static const float qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.0000000000e+00, /* 0x00000000 */ + 7.3242187500e-02, /* 0x3d960000 */ + 1.1768206596e+01, /* 0x413c4a93 */ + 5.5767340088e+02, /* 0x440b6b19 */ + 8.8591972656e+03, /* 0x460a6cca */ + 3.7014625000e+04, /* 0x471096a0 */ +}; +static const float qS8[6] = { + 1.6377603149e+02, /* 0x4323c6aa */ + 8.0983447266e+03, /* 0x45fd12c2 */ + 1.4253829688e+05, /* 0x480b3293 */ + 8.0330925000e+05, /* 0x49441ed4 */ + 8.4050156250e+05, /* 0x494d3359 */ + -3.4389928125e+05, /* 0xc8a7eb69 */ +}; + +static const float qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + 1.8408595828e-11, /* 0x2da1ec79 */ + 7.3242180049e-02, /* 0x3d95ffff */ + 5.8356351852e+00, /* 0x40babd86 */ + 1.3511157227e+02, /* 0x43071c90 */ + 1.0272437744e+03, /* 0x448067cd */ + 1.9899779053e+03, /* 0x44f8bf4b */ +}; +static const float qS5[6] = { + 8.2776611328e+01, /* 0x42a58da0 */ + 2.0778142090e+03, /* 0x4501dd07 */ + 1.8847289062e+04, /* 0x46933e94 */ + 5.6751113281e+04, /* 0x475daf1d */ + 3.5976753906e+04, /* 0x470c88c1 */ + -5.3543427734e+03, /* 0xc5a752be */ +}; + +static const float qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ + 4.3774099900e-09, /* 0x3196681b */ + 7.3241114616e-02, /* 0x3d95ff70 */ + 3.3442313671e+00, /* 0x405607e3 */ + 4.2621845245e+01, /* 0x422a7cc5 */ + 1.7080809021e+02, /* 0x432acedf */ + 1.6673394775e+02, /* 0x4326bbe4 */ +}; +static const float qS3[6] = { + 4.8758872986e+01, /* 0x42430916 */ + 7.0968920898e+02, /* 0x44316c1c */ + 3.7041481934e+03, /* 0x4567825f */ + 6.4604252930e+03, /* 0x45c9e367 */ + 2.5163337402e+03, /* 0x451d4557 */ + -1.4924745178e+02, /* 0xc3153f59 */ +}; + +static const float qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + 1.5044444979e-07, /* 0x342189db */ + 7.3223426938e-02, /* 0x3d95f62a */ + 1.9981917143e+00, /* 0x3fffc4bf */ + 1.4495602608e+01, /* 0x4167edfd */ + 3.1666231155e+01, /* 0x41fd5471 */ + 1.6252708435e+01, /* 0x4182058c */ +}; +static const float qS2[6] = { + 3.0365585327e+01, /* 0x41f2ecb8 */ + 2.6934811401e+02, /* 0x4386ac8f */ + 8.4478375244e+02, /* 0x44533229 */ + 8.8293585205e+02, /* 0x445cbbe5 */ + 2.1266638184e+02, /* 0x4354aa98 */ + -5.3109550476e+00, /* 0xc0a9f358 */ +}; + +static float qzerof(float x) +{ + const float *p,*q; + float_t s,r,z; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x41000000){p = qR8; q = qS8;} + else if (ix >= 0x409173eb){p = qR5; q = qS5;} + else if (ix >= 0x4036d917){p = qR3; q = qS3;} + else /*ix >= 0x40000000*/ {p = qR2; q = qS2;} + z = 1.0f/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5]))))); + return (-.125f + r/s)/x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/j1.c b/vendor/modernc.org/libc/musl/src/math/j1.c new file mode 100644 index 000000000..df724d172 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/j1.c @@ -0,0 +1,362 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_j1.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* j1(x), y1(x) + * Bessel function of the first and second kinds of order zero. + * Method -- j1(x): + * 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ... + * 2. Reduce x to |x| since j1(x)=-j1(-x), and + * for x in (0,2) + * j1(x) = x/2 + x*z*R0/S0, where z = x*x; + * (precision: |j1/x - 1/2 - R0/S0 |<2**-61.51 ) + * for x in (2,inf) + * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1)) + * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1)) + * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1) + * as follow: + * cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4) + * = 1/sqrt(2) * (sin(x) - cos(x)) + * sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4) + * = -1/sqrt(2) * (sin(x) + cos(x)) + * (To avoid cancellation, use + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) + * to compute the worse one.) + * + * 3 Special cases + * j1(nan)= nan + * j1(0) = 0 + * j1(inf) = 0 + * + * Method -- y1(x): + * 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN + * 2. For x<2. + * Since + * y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...) + * therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function. + * We use the following function to approximate y1, + * y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2 + * where for x in [0,2] (abs err less than 2**-65.89) + * U(z) = U0[0] + U0[1]*z + ... + U0[4]*z^4 + * V(z) = 1 + v0[0]*z + ... + v0[4]*z^5 + * Note: For tiny x, 1/x dominate y1 and hence + * y1(tiny) = -2/pi/tiny, (choose tiny<2**-54) + * 3. For x>=2. + * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1)) + * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1) + * by method mentioned above. + */ + +#include "libm.h" + +static double pone(double), qone(double); + +static const double +invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */ +tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ + +static double common(uint32_t ix, double x, int y1, int sign) +{ + double z,s,c,ss,cc; + + /* + * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x-3pi/4)-q1(x)*sin(x-3pi/4)) + * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x-3pi/4)+q1(x)*cos(x-3pi/4)) + * + * sin(x-3pi/4) = -(sin(x) + cos(x))/sqrt(2) + * cos(x-3pi/4) = (sin(x) - cos(x))/sqrt(2) + * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) + */ + s = sin(x); + if (y1) + s = -s; + c = cos(x); + cc = s-c; + if (ix < 0x7fe00000) { + /* avoid overflow in 2*x */ + ss = -s-c; + z = cos(2*x); + if (s*c > 0) + cc = z/ss; + else + ss = z/cc; + if (ix < 0x48000000) { + if (y1) + ss = -ss; + cc = pone(x)*cc-qone(x)*ss; + } + } + if (sign) + cc = -cc; + return invsqrtpi*cc/sqrt(x); +} + +/* R0/S0 on [0,2] */ +static const double +r00 = -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */ +r01 = 1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */ +r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */ +r03 = 4.96727999609584448412e-08, /* 0x3E6AAAFA, 0x46CA0BD9 */ +s01 = 1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */ +s02 = 1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */ +s03 = 1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */ +s04 = 5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */ +s05 = 1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */ + +double j1(double x) +{ + double z,r,s; + uint32_t ix; + int sign; + + GET_HIGH_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7ff00000) + return 1/(x*x); + if (ix >= 0x40000000) /* |x| >= 2 */ + return common(ix, fabs(x), 0, sign); + if (ix >= 0x38000000) { /* |x| >= 2**-127 */ + z = x*x; + r = z*(r00+z*(r01+z*(r02+z*r03))); + s = 1+z*(s01+z*(s02+z*(s03+z*(s04+z*s05)))); + z = r/s; + } else + /* avoid underflow, raise inexact if x!=0 */ + z = x; + return (0.5 + z)*x; +} + +static const double U0[5] = { + -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */ + 5.04438716639811282616e-02, /* 0x3FA9D3C7, 0x76292CD1 */ + -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */ + 2.35252600561610495928e-05, /* 0x3EF8AB03, 0x8FA6B88E */ + -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */ +}; +static const double V0[5] = { + 1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */ + 2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */ + 1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */ + 6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */ + 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */ +}; + +double y1(double x) +{ + double z,u,v; + uint32_t ix,lx; + + EXTRACT_WORDS(ix, lx, x); + /* y1(nan)=nan, y1(<0)=nan, y1(0)=-inf, y1(inf)=0 */ + if ((ix<<1 | lx) == 0) + return -1/0.0; + if (ix>>31) + return 0/0.0; + if (ix >= 0x7ff00000) + return 1/x; + + if (ix >= 0x40000000) /* x >= 2 */ + return common(ix, x, 1, 0); + if (ix < 0x3c900000) /* x < 2**-54 */ + return -tpi/x; + z = x*x; + u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4]))); + v = 1+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4])))); + return x*(u/v) + tpi*(j1(x)*log(x)-1/x); +} + +/* For x >= 8, the asymptotic expansions of pone is + * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x. + * We approximate pone by + * pone(x) = 1 + (R/S) + * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10 + * S = 1 + ps0*s^2 + ... + ps4*s^10 + * and + * | pone(x)-1-R/S | <= 2 ** ( -60.06) + */ + +static const double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ + 1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */ + 1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */ + 4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */ + 3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */ + 7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */ +}; +static const double ps8[5] = { + 1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */ + 3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */ + 3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */ + 9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */ + 3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */ +}; + +static const double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + 1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */ + 1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */ + 6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */ + 1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */ + 5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */ + 5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */ +}; +static const double ps5[5] = { + 5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */ + 9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */ + 5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */ + 7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */ + 1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */ +}; + +static const double pr3[6] = { + 3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */ + 1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */ + 3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */ + 3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */ + 9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */ + 4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */ +}; +static const double ps3[5] = { + 3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */ + 3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */ + 1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */ + 8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */ + 1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */ +}; + +static const double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + 1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */ + 1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */ + 2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */ + 1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */ + 1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */ + 5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */ +}; +static const double ps2[5] = { + 2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */ + 1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */ + 2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */ + 1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */ + 8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */ +}; + +static double pone(double x) +{ + const double *p,*q; + double_t z,r,s; + uint32_t ix; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x40200000){p = pr8; q = ps8;} + else if (ix >= 0x40122E8B){p = pr5; q = ps5;} + else if (ix >= 0x4006DB6D){p = pr3; q = ps3;} + else /*ix >= 0x40000000*/ {p = pr2; q = ps2;} + z = 1.0/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4])))); + return 1.0+ r/s; +} + +/* For x >= 8, the asymptotic expansions of qone is + * 3/8 s - 105/1024 s^3 - ..., where s = 1/x. + * We approximate pone by + * qone(x) = s*(0.375 + (R/S)) + * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10 + * S = 1 + qs1*s^2 + ... + qs6*s^12 + * and + * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13) + */ + +static const double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ + -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */ + -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */ + -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */ + -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */ + -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */ +}; +static const double qs8[6] = { + 1.61395369700722909556e+02, /* 0x40642CA6, 0xDE5BCDE5 */ + 7.82538599923348465381e+03, /* 0x40BE9162, 0xD0D88419 */ + 1.33875336287249578163e+05, /* 0x4100579A, 0xB0B75E98 */ + 7.19657723683240939863e+05, /* 0x4125F653, 0x72869C19 */ + 6.66601232617776375264e+05, /* 0x412457D2, 0x7719AD5C */ + -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */ +}; + +static const double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */ + -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */ + -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */ + -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */ + -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */ + -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */ +}; +static const double qs5[6] = { + 8.12765501384335777857e+01, /* 0x405451B2, 0xFF5A11B2 */ + 1.99179873460485964642e+03, /* 0x409F1F31, 0xE77BF839 */ + 1.74684851924908907677e+04, /* 0x40D10F1F, 0x0D64CE29 */ + 4.98514270910352279316e+04, /* 0x40E8576D, 0xAABAD197 */ + 2.79480751638918118260e+04, /* 0x40DB4B04, 0xCF7C364B */ + -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */ +}; + +static const double qr3[6] = { + -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */ + -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */ + -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */ + -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */ + -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */ + -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */ +}; +static const double qs3[6] = { + 4.76651550323729509273e+01, /* 0x4047D523, 0xCCD367E4 */ + 6.73865112676699709482e+02, /* 0x40850EEB, 0xC031EE3E */ + 3.38015286679526343505e+03, /* 0x40AA684E, 0x448E7C9A */ + 5.54772909720722782367e+03, /* 0x40B5ABBA, 0xA61D54A6 */ + 1.90311919338810798763e+03, /* 0x409DBC7A, 0x0DD4DF4B */ + -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */ +}; + +static const double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */ + -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */ + -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */ + -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */ + -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */ + -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */ +}; +static const double qs2[6] = { + 2.95333629060523854548e+01, /* 0x403D888A, 0x78AE64FF */ + 2.52981549982190529136e+02, /* 0x406F9F68, 0xDB821CBA */ + 7.57502834868645436472e+02, /* 0x4087AC05, 0xCE49A0F7 */ + 7.39393205320467245656e+02, /* 0x40871B25, 0x48D4C029 */ + 1.55949003336666123687e+02, /* 0x40637E5E, 0x3C3ED8D4 */ + -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */ +}; + +static double qone(double x) +{ + const double *p,*q; + double_t s,r,z; + uint32_t ix; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x40200000){p = qr8; q = qs8;} + else if (ix >= 0x40122E8B){p = qr5; q = qs5;} + else if (ix >= 0x4006DB6D){p = qr3; q = qs3;} + else /*ix >= 0x40000000*/ {p = qr2; q = qs2;} + z = 1.0/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5]))))); + return (.375 + r/s)/x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/j1f.c b/vendor/modernc.org/libc/musl/src/math/j1f.c new file mode 100644 index 000000000..3434c53dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/j1f.c @@ -0,0 +1,310 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_j1f.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#define _GNU_SOURCE +#include "libm.h" + +static float ponef(float), qonef(float); + +static const float +invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */ +tpi = 6.3661974669e-01; /* 0x3f22f983 */ + +static float common(uint32_t ix, float x, int y1, int sign) +{ + double z,s,c,ss,cc; + + s = sinf(x); + if (y1) + s = -s; + c = cosf(x); + cc = s-c; + if (ix < 0x7f000000) { + ss = -s-c; + z = cosf(2*x); + if (s*c > 0) + cc = z/ss; + else + ss = z/cc; + if (ix < 0x58800000) { + if (y1) + ss = -ss; + cc = ponef(x)*cc-qonef(x)*ss; + } + } + if (sign) + cc = -cc; + return invsqrtpi*cc/sqrtf(x); +} + +/* R0/S0 on [0,2] */ +static const float +r00 = -6.2500000000e-02, /* 0xbd800000 */ +r01 = 1.4070566976e-03, /* 0x3ab86cfd */ +r02 = -1.5995563444e-05, /* 0xb7862e36 */ +r03 = 4.9672799207e-08, /* 0x335557d2 */ +s01 = 1.9153760746e-02, /* 0x3c9ce859 */ +s02 = 1.8594678841e-04, /* 0x3942fab6 */ +s03 = 1.1771846857e-06, /* 0x359dffc2 */ +s04 = 5.0463624390e-09, /* 0x31ad6446 */ +s05 = 1.2354227016e-11; /* 0x2d59567e */ + +float j1f(float x) +{ + float z,r,s; + uint32_t ix; + int sign; + + GET_FLOAT_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix >= 0x7f800000) + return 1/(x*x); + if (ix >= 0x40000000) /* |x| >= 2 */ + return common(ix, fabsf(x), 0, sign); + if (ix >= 0x39000000) { /* |x| >= 2**-13 */ + z = x*x; + r = z*(r00+z*(r01+z*(r02+z*r03))); + s = 1+z*(s01+z*(s02+z*(s03+z*(s04+z*s05)))); + z = 0.5f + r/s; + } else + z = 0.5f; + return z*x; +} + +static const float U0[5] = { + -1.9605709612e-01, /* 0xbe48c331 */ + 5.0443872809e-02, /* 0x3d4e9e3c */ + -1.9125689287e-03, /* 0xbafaaf2a */ + 2.3525259166e-05, /* 0x37c5581c */ + -9.1909917899e-08, /* 0xb3c56003 */ +}; +static const float V0[5] = { + 1.9916731864e-02, /* 0x3ca3286a */ + 2.0255257550e-04, /* 0x3954644b */ + 1.3560879779e-06, /* 0x35b602d4 */ + 6.2274145840e-09, /* 0x31d5f8eb */ + 1.6655924903e-11, /* 0x2d9281cf */ +}; + +float y1f(float x) +{ + float z,u,v; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + if ((ix & 0x7fffffff) == 0) + return -1/0.0f; + if (ix>>31) + return 0/0.0f; + if (ix >= 0x7f800000) + return 1/x; + if (ix >= 0x40000000) /* |x| >= 2.0 */ + return common(ix,x,1,0); + if (ix < 0x33000000) /* x < 2**-25 */ + return -tpi/x; + z = x*x; + u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4]))); + v = 1.0f+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4])))); + return x*(u/v) + tpi*(j1f(x)*logf(x)-1.0f/x); +} + +/* For x >= 8, the asymptotic expansions of pone is + * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x. + * We approximate pone by + * pone(x) = 1 + (R/S) + * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10 + * S = 1 + ps0*s^2 + ... + ps4*s^10 + * and + * | pone(x)-1-R/S | <= 2 ** ( -60.06) + */ + +static const float pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.0000000000e+00, /* 0x00000000 */ + 1.1718750000e-01, /* 0x3df00000 */ + 1.3239480972e+01, /* 0x4153d4ea */ + 4.1205184937e+02, /* 0x43ce06a3 */ + 3.8747453613e+03, /* 0x45722bed */ + 7.9144794922e+03, /* 0x45f753d6 */ +}; +static const float ps8[5] = { + 1.1420736694e+02, /* 0x42e46a2c */ + 3.6509309082e+03, /* 0x45642ee5 */ + 3.6956207031e+04, /* 0x47105c35 */ + 9.7602796875e+04, /* 0x47bea166 */ + 3.0804271484e+04, /* 0x46f0a88b */ +}; + +static const float pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + 1.3199052094e-11, /* 0x2d68333f */ + 1.1718749255e-01, /* 0x3defffff */ + 6.8027510643e+00, /* 0x40d9b023 */ + 1.0830818176e+02, /* 0x42d89dca */ + 5.1763616943e+02, /* 0x440168b7 */ + 5.2871520996e+02, /* 0x44042dc6 */ +}; +static const float ps5[5] = { + 5.9280597687e+01, /* 0x426d1f55 */ + 9.9140142822e+02, /* 0x4477d9b1 */ + 5.3532670898e+03, /* 0x45a74a23 */ + 7.8446904297e+03, /* 0x45f52586 */ + 1.5040468750e+03, /* 0x44bc0180 */ +}; + +static const float pr3[6] = { + 3.0250391081e-09, /* 0x314fe10d */ + 1.1718686670e-01, /* 0x3defffab */ + 3.9329774380e+00, /* 0x407bb5e7 */ + 3.5119403839e+01, /* 0x420c7a45 */ + 9.1055007935e+01, /* 0x42b61c2a */ + 4.8559066772e+01, /* 0x42423c7c */ +}; +static const float ps3[5] = { + 3.4791309357e+01, /* 0x420b2a4d */ + 3.3676245117e+02, /* 0x43a86198 */ + 1.0468714600e+03, /* 0x4482dbe3 */ + 8.9081134033e+02, /* 0x445eb3ed */ + 1.0378793335e+02, /* 0x42cf936c */ +}; + +static const float pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + 1.0771083225e-07, /* 0x33e74ea8 */ + 1.1717621982e-01, /* 0x3deffa16 */ + 2.3685150146e+00, /* 0x401795c0 */ + 1.2242610931e+01, /* 0x4143e1bc */ + 1.7693971634e+01, /* 0x418d8d41 */ + 5.0735230446e+00, /* 0x40a25a4d */ +}; +static const float ps2[5] = { + 2.1436485291e+01, /* 0x41ab7dec */ + 1.2529022980e+02, /* 0x42fa9499 */ + 2.3227647400e+02, /* 0x436846c7 */ + 1.1767937469e+02, /* 0x42eb5bd7 */ + 8.3646392822e+00, /* 0x4105d590 */ +}; + +static float ponef(float x) +{ + const float *p,*q; + float_t z,r,s; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x41000000){p = pr8; q = ps8;} + else if (ix >= 0x409173eb){p = pr5; q = ps5;} + else if (ix >= 0x4036d917){p = pr3; q = ps3;} + else /*ix >= 0x40000000*/ {p = pr2; q = ps2;} + z = 1.0f/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4])))); + return 1.0f + r/s; +} + +/* For x >= 8, the asymptotic expansions of qone is + * 3/8 s - 105/1024 s^3 - ..., where s = 1/x. + * We approximate pone by + * qone(x) = s*(0.375 + (R/S)) + * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10 + * S = 1 + qs1*s^2 + ... + qs6*s^12 + * and + * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13) + */ + +static const float qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ + 0.0000000000e+00, /* 0x00000000 */ + -1.0253906250e-01, /* 0xbdd20000 */ + -1.6271753311e+01, /* 0xc1822c8d */ + -7.5960174561e+02, /* 0xc43de683 */ + -1.1849806641e+04, /* 0xc639273a */ + -4.8438511719e+04, /* 0xc73d3683 */ +}; +static const float qs8[6] = { + 1.6139537048e+02, /* 0x43216537 */ + 7.8253862305e+03, /* 0x45f48b17 */ + 1.3387534375e+05, /* 0x4802bcd6 */ + 7.1965775000e+05, /* 0x492fb29c */ + 6.6660125000e+05, /* 0x4922be94 */ + -2.9449025000e+05, /* 0xc88fcb48 */ +}; + +static const float qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ + -2.0897993405e-11, /* 0xadb7d219 */ + -1.0253904760e-01, /* 0xbdd1fffe */ + -8.0564479828e+00, /* 0xc100e736 */ + -1.8366960144e+02, /* 0xc337ab6b */ + -1.3731937256e+03, /* 0xc4aba633 */ + -2.6124443359e+03, /* 0xc523471c */ +}; +static const float qs5[6] = { + 8.1276550293e+01, /* 0x42a28d98 */ + 1.9917987061e+03, /* 0x44f8f98f */ + 1.7468484375e+04, /* 0x468878f8 */ + 4.9851425781e+04, /* 0x4742bb6d */ + 2.7948074219e+04, /* 0x46da5826 */ + -4.7191835938e+03, /* 0xc5937978 */ +}; + +static const float qr3[6] = { + -5.0783124372e-09, /* 0xb1ae7d4f */ + -1.0253783315e-01, /* 0xbdd1ff5b */ + -4.6101160049e+00, /* 0xc0938612 */ + -5.7847221375e+01, /* 0xc267638e */ + -2.2824453735e+02, /* 0xc3643e9a */ + -2.1921012878e+02, /* 0xc35b35cb */ +}; +static const float qs3[6] = { + 4.7665153503e+01, /* 0x423ea91e */ + 6.7386511230e+02, /* 0x4428775e */ + 3.3801528320e+03, /* 0x45534272 */ + 5.5477290039e+03, /* 0x45ad5dd5 */ + 1.9031191406e+03, /* 0x44ede3d0 */ + -1.3520118713e+02, /* 0xc3073381 */ +}; + +static const float qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ + -1.7838172539e-07, /* 0xb43f8932 */ + -1.0251704603e-01, /* 0xbdd1f475 */ + -2.7522056103e+00, /* 0xc0302423 */ + -1.9663616180e+01, /* 0xc19d4f16 */ + -4.2325313568e+01, /* 0xc2294d1f */ + -2.1371921539e+01, /* 0xc1aaf9b2 */ +}; +static const float qs2[6] = { + 2.9533363342e+01, /* 0x41ec4454 */ + 2.5298155212e+02, /* 0x437cfb47 */ + 7.5750280762e+02, /* 0x443d602e */ + 7.3939318848e+02, /* 0x4438d92a */ + 1.5594900513e+02, /* 0x431bf2f2 */ + -4.9594988823e+00, /* 0xc09eb437 */ +}; + +static float qonef(float x) +{ + const float *p,*q; + float_t s,r,z; + uint32_t ix; + + GET_FLOAT_WORD(ix, x); + ix &= 0x7fffffff; + if (ix >= 0x41000000){p = qr8; q = qs8;} + else if (ix >= 0x409173eb){p = qr5; q = qs5;} + else if (ix >= 0x4036d917){p = qr3; q = qs3;} + else /*ix >= 0x40000000*/ {p = qr2; q = qs2;} + z = 1.0f/(x*x); + r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5])))); + s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5]))))); + return (.375f + r/s)/x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/jn.c b/vendor/modernc.org/libc/musl/src/math/jn.c new file mode 100644 index 000000000..4878a54fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/jn.c @@ -0,0 +1,280 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_jn.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * jn(n, x), yn(n, x) + * floating point Bessel's function of the 1st and 2nd kind + * of order n + * + * Special cases: + * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal; + * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal. + * Note 2. About jn(n,x), yn(n,x) + * For n=0, j0(x) is called, + * for n=1, j1(x) is called, + * for n<=x, forward recursion is used starting + * from values of j0(x) and j1(x). + * for n>x, a continued fraction approximation to + * j(n,x)/j(n-1,x) is evaluated and then backward + * recursion is used starting from a supposed value + * for j(n,x). The resulting value of j(0,x) is + * compared with the actual value to correct the + * supposed value of j(n,x). + * + * yn(n,x) is similar in all respects, except + * that forward recursion is used for all + * values of n>1. + */ + +#include "libm.h" + +static const double invsqrtpi = 5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */ + +double jn(int n, double x) +{ + uint32_t ix, lx; + int nm1, i, sign; + double a, b, temp; + + EXTRACT_WORDS(ix, lx, x); + sign = ix>>31; + ix &= 0x7fffffff; + + if ((ix | (lx|-lx)>>31) > 0x7ff00000) /* nan */ + return x; + + /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x) + * Thus, J(-n,x) = J(n,-x) + */ + /* nm1 = |n|-1 is used instead of |n| to handle n==INT_MIN */ + if (n == 0) + return j0(x); + if (n < 0) { + nm1 = -(n+1); + x = -x; + sign ^= 1; + } else + nm1 = n-1; + if (nm1 == 0) + return j1(x); + + sign &= n; /* even n: 0, odd n: signbit(x) */ + x = fabs(x); + if ((ix|lx) == 0 || ix == 0x7ff00000) /* if x is 0 or inf */ + b = 0.0; + else if (nm1 < x) { + /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */ + if (ix >= 0x52d00000) { /* x > 2**302 */ + /* (x >> n**2) + * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi) + * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi) + * Let s=sin(x), c=cos(x), + * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then + * + * n sin(xn)*sqt2 cos(xn)*sqt2 + * ---------------------------------- + * 0 s-c c+s + * 1 -s-c -c+s + * 2 -s+c -c-s + * 3 s+c c-s + */ + switch(nm1&3) { + case 0: temp = -cos(x)+sin(x); break; + case 1: temp = -cos(x)-sin(x); break; + case 2: temp = cos(x)-sin(x); break; + default: + case 3: temp = cos(x)+sin(x); break; + } + b = invsqrtpi*temp/sqrt(x); + } else { + a = j0(x); + b = j1(x); + for (i=0; i 32) /* underflow */ + b = 0.0; + else { + temp = x*0.5; + b = temp; + a = 1.0; + for (i=2; i<=nm1+1; i++) { + a *= (double)i; /* a = n! */ + b *= temp; /* b = (x/2)^n */ + } + b = b/a; + } + } else { + /* use backward recurrence */ + /* x x^2 x^2 + * J(n,x)/J(n-1,x) = ---- ------ ------ ..... + * 2n - 2(n+1) - 2(n+2) + * + * 1 1 1 + * (for large x) = ---- ------ ------ ..... + * 2n 2(n+1) 2(n+2) + * -- - ------ - ------ - + * x x x + * + * Let w = 2n/x and h=2/x, then the above quotient + * is equal to the continued fraction: + * 1 + * = ----------------------- + * 1 + * w - ----------------- + * 1 + * w+h - --------- + * w+2h - ... + * + * To determine how many terms needed, let + * Q(0) = w, Q(1) = w(w+h) - 1, + * Q(k) = (w+k*h)*Q(k-1) - Q(k-2), + * When Q(k) > 1e4 good for single + * When Q(k) > 1e9 good for double + * When Q(k) > 1e17 good for quadruple + */ + /* determine k */ + double t,q0,q1,w,h,z,tmp,nf; + int k; + + nf = nm1 + 1.0; + w = 2*nf/x; + h = 2/x; + z = w+h; + q0 = w; + q1 = w*z - 1.0; + k = 1; + while (q1 < 1.0e9) { + k += 1; + z += h; + tmp = z*q1 - q0; + q0 = q1; + q1 = tmp; + } + for (t=0.0, i=k; i>=0; i--) + t = 1/(2*(i+nf)/x - t); + a = t; + b = 1.0; + /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n) + * Hence, if n*(log(2n/x)) > ... + * single 8.8722839355e+01 + * double 7.09782712893383973096e+02 + * long double 1.1356523406294143949491931077970765006170e+04 + * then recurrent value may overflow and the result is + * likely underflow to zero + */ + tmp = nf*log(fabs(w)); + if (tmp < 7.09782712893383973096e+02) { + for (i=nm1; i>0; i--) { + temp = b; + b = b*(2.0*i)/x - a; + a = temp; + } + } else { + for (i=nm1; i>0; i--) { + temp = b; + b = b*(2.0*i)/x - a; + a = temp; + /* scale b to avoid spurious overflow */ + if (b > 0x1p500) { + a /= b; + t /= b; + b = 1.0; + } + } + } + z = j0(x); + w = j1(x); + if (fabs(z) >= fabs(w)) + b = t*z/b; + else + b = t*w/a; + } + } + return sign ? -b : b; +} + + +double yn(int n, double x) +{ + uint32_t ix, lx, ib; + int nm1, sign, i; + double a, b, temp; + + EXTRACT_WORDS(ix, lx, x); + sign = ix>>31; + ix &= 0x7fffffff; + + if ((ix | (lx|-lx)>>31) > 0x7ff00000) /* nan */ + return x; + if (sign && (ix|lx)!=0) /* x < 0 */ + return 0/0.0; + if (ix == 0x7ff00000) + return 0.0; + + if (n == 0) + return y0(x); + if (n < 0) { + nm1 = -(n+1); + sign = n&1; + } else { + nm1 = n-1; + sign = 0; + } + if (nm1 == 0) + return sign ? -y1(x) : y1(x); + + if (ix >= 0x52d00000) { /* x > 2**302 */ + /* (x >> n**2) + * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi) + * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi) + * Let s=sin(x), c=cos(x), + * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then + * + * n sin(xn)*sqt2 cos(xn)*sqt2 + * ---------------------------------- + * 0 s-c c+s + * 1 -s-c -c+s + * 2 -s+c -c-s + * 3 s+c c-s + */ + switch(nm1&3) { + case 0: temp = -sin(x)-cos(x); break; + case 1: temp = -sin(x)+cos(x); break; + case 2: temp = sin(x)+cos(x); break; + default: + case 3: temp = sin(x)-cos(x); break; + } + b = invsqrtpi*temp/sqrt(x); + } else { + a = y0(x); + b = y1(x); + /* quit if b is -inf */ + GET_HIGH_WORD(ib, b); + for (i=0; i>31; + ix &= 0x7fffffff; + if (ix > 0x7f800000) /* nan */ + return x; + + /* J(-n,x) = J(n,-x), use |n|-1 to avoid overflow in -n */ + if (n == 0) + return j0f(x); + if (n < 0) { + nm1 = -(n+1); + x = -x; + sign ^= 1; + } else + nm1 = n-1; + if (nm1 == 0) + return j1f(x); + + sign &= n; /* even n: 0, odd n: signbit(x) */ + x = fabsf(x); + if (ix == 0 || ix == 0x7f800000) /* if x is 0 or inf */ + b = 0.0f; + else if (nm1 < x) { + /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */ + a = j0f(x); + b = j1f(x); + for (i=0; i 8) /* underflow */ + nm1 = 8; + temp = 0.5f * x; + b = temp; + a = 1.0f; + for (i=2; i<=nm1+1; i++) { + a *= (float)i; /* a = n! */ + b *= temp; /* b = (x/2)^n */ + } + b = b/a; + } else { + /* use backward recurrence */ + /* x x^2 x^2 + * J(n,x)/J(n-1,x) = ---- ------ ------ ..... + * 2n - 2(n+1) - 2(n+2) + * + * 1 1 1 + * (for large x) = ---- ------ ------ ..... + * 2n 2(n+1) 2(n+2) + * -- - ------ - ------ - + * x x x + * + * Let w = 2n/x and h=2/x, then the above quotient + * is equal to the continued fraction: + * 1 + * = ----------------------- + * 1 + * w - ----------------- + * 1 + * w+h - --------- + * w+2h - ... + * + * To determine how many terms needed, let + * Q(0) = w, Q(1) = w(w+h) - 1, + * Q(k) = (w+k*h)*Q(k-1) - Q(k-2), + * When Q(k) > 1e4 good for single + * When Q(k) > 1e9 good for double + * When Q(k) > 1e17 good for quadruple + */ + /* determine k */ + float t,q0,q1,w,h,z,tmp,nf; + int k; + + nf = nm1+1.0f; + w = 2*nf/x; + h = 2/x; + z = w+h; + q0 = w; + q1 = w*z - 1.0f; + k = 1; + while (q1 < 1.0e4f) { + k += 1; + z += h; + tmp = z*q1 - q0; + q0 = q1; + q1 = tmp; + } + for (t=0.0f, i=k; i>=0; i--) + t = 1.0f/(2*(i+nf)/x-t); + a = t; + b = 1.0f; + /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n) + * Hence, if n*(log(2n/x)) > ... + * single 8.8722839355e+01 + * double 7.09782712893383973096e+02 + * long double 1.1356523406294143949491931077970765006170e+04 + * then recurrent value may overflow and the result is + * likely underflow to zero + */ + tmp = nf*logf(fabsf(w)); + if (tmp < 88.721679688f) { + for (i=nm1; i>0; i--) { + temp = b; + b = 2.0f*i*b/x - a; + a = temp; + } + } else { + for (i=nm1; i>0; i--){ + temp = b; + b = 2.0f*i*b/x - a; + a = temp; + /* scale b to avoid spurious overflow */ + if (b > 0x1p60f) { + a /= b; + t /= b; + b = 1.0f; + } + } + } + z = j0f(x); + w = j1f(x); + if (fabsf(z) >= fabsf(w)) + b = t*z/b; + else + b = t*w/a; + } + } + return sign ? -b : b; +} + +float ynf(int n, float x) +{ + uint32_t ix, ib; + int nm1, sign, i; + float a, b, temp; + + GET_FLOAT_WORD(ix, x); + sign = ix>>31; + ix &= 0x7fffffff; + if (ix > 0x7f800000) /* nan */ + return x; + if (sign && ix != 0) /* x < 0 */ + return 0/0.0f; + if (ix == 0x7f800000) + return 0.0f; + + if (n == 0) + return y0f(x); + if (n < 0) { + nm1 = -(n+1); + sign = n&1; + } else { + nm1 = n-1; + sign = 0; + } + if (nm1 == 0) + return sign ? -y1f(x) : y1f(x); + + a = y0f(x); + b = y1f(x); + /* quit if b is -inf */ + GET_FLOAT_WORD(ib,b); + for (i = 0; i < nm1 && ib != 0xff800000; ) { + i++; + temp = b; + b = (2.0f*i/x)*b - a; + GET_FLOAT_WORD(ib, b); + a = temp; + } + return sign ? -b : b; +} diff --git a/vendor/modernc.org/libc/musl/src/math/ldexp.c b/vendor/modernc.org/libc/musl/src/math/ldexp.c new file mode 100644 index 000000000..f4d1cd6af --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ldexp.c @@ -0,0 +1,6 @@ +#include + +double ldexp(double x, int n) +{ + return scalbn(x, n); +} diff --git a/vendor/modernc.org/libc/musl/src/math/ldexpf.c b/vendor/modernc.org/libc/musl/src/math/ldexpf.c new file mode 100644 index 000000000..3bad5f393 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ldexpf.c @@ -0,0 +1,6 @@ +#include + +float ldexpf(float x, int n) +{ + return scalbnf(x, n); +} diff --git a/vendor/modernc.org/libc/musl/src/math/ldexpl.c b/vendor/modernc.org/libc/musl/src/math/ldexpl.c new file mode 100644 index 000000000..fd145ccc5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/ldexpl.c @@ -0,0 +1,6 @@ +#include + +long double ldexpl(long double x, int n) +{ + return scalbnl(x, n); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lgamma.c b/vendor/modernc.org/libc/musl/src/math/lgamma.c new file mode 100644 index 000000000..2fc9b478e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lgamma.c @@ -0,0 +1,7 @@ +#include +#include "libm.h" + +double lgamma(double x) +{ + return __lgamma_r(x, &__signgam); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lgamma_r.c b/vendor/modernc.org/libc/musl/src/math/lgamma_r.c new file mode 100644 index 000000000..f9984cd0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lgamma_r.c @@ -0,0 +1,283 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_lgamma_r.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ +/* lgamma_r(x, signgamp) + * Reentrant version of the logarithm of the Gamma function + * with user provide pointer for the sign of Gamma(x). + * + * Method: + * 1. Argument Reduction for 0 < x <= 8 + * Since gamma(1+s)=s*gamma(s), for x in [0,8], we may + * reduce x to a number in [1.5,2.5] by + * lgamma(1+s) = log(s) + lgamma(s) + * for example, + * lgamma(7.3) = log(6.3) + lgamma(6.3) + * = log(6.3*5.3) + lgamma(5.3) + * = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3) + * 2. Polynomial approximation of lgamma around its + * minimun ymin=1.461632144968362245 to maintain monotonicity. + * On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use + * Let z = x-ymin; + * lgamma(x) = -1.214862905358496078218 + z^2*poly(z) + * where + * poly(z) is a 14 degree polynomial. + * 2. Rational approximation in the primary interval [2,3] + * We use the following approximation: + * s = x-2.0; + * lgamma(x) = 0.5*s + s*P(s)/Q(s) + * with accuracy + * |P/Q - (lgamma(x)-0.5s)| < 2**-61.71 + * Our algorithms are based on the following observation + * + * zeta(2)-1 2 zeta(3)-1 3 + * lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ... + * 2 3 + * + * where Euler = 0.5771... is the Euler constant, which is very + * close to 0.5. + * + * 3. For x>=8, we have + * lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+.... + * (better formula: + * lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...) + * Let z = 1/x, then we approximation + * f(z) = lgamma(x) - (x-0.5)(log(x)-1) + * by + * 3 5 11 + * w = w0 + w1*z + w2*z + w3*z + ... + w6*z + * where + * |w - f(z)| < 2**-58.74 + * + * 4. For negative x, since (G is gamma function) + * -x*G(-x)*G(x) = pi/sin(pi*x), + * we have + * G(x) = pi/(sin(pi*x)*(-x)*G(-x)) + * since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0 + * Hence, for x<0, signgam = sign(sin(pi*x)) and + * lgamma(x) = log(|Gamma(x)|) + * = log(pi/(|x*sin(pi*x)|)) - lgamma(-x); + * Note: one should avoid compute pi*(-x) directly in the + * computation of sin(pi*(-x)). + * + * 5. Special Cases + * lgamma(2+s) ~ s*(1-Euler) for tiny s + * lgamma(1) = lgamma(2) = 0 + * lgamma(x) ~ -log(|x|) for tiny x + * lgamma(0) = lgamma(neg.integer) = inf and raise divide-by-zero + * lgamma(inf) = inf + * lgamma(-inf) = inf (bug for bug compatible with C99!?) + * + */ + +#include "libm.h" + +static const double +pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ +a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ +a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ +a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ +a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ +a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ +a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ +a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ +a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ +a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ +a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ +a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ +a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ +tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ +tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ +/* tt = -(tail of tf) */ +tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */ +t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */ +t1 = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */ +t2 = 6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */ +t3 = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */ +t4 = 1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */ +t5 = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */ +t6 = 6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */ +t7 = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */ +t8 = 2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */ +t9 = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */ +t10 = 8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */ +t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */ +t12 = 3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */ +t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */ +t14 = 3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */ +u0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +u1 = 6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */ +u2 = 1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */ +u3 = 9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */ +u4 = 2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */ +u5 = 1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */ +v1 = 2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */ +v2 = 2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */ +v3 = 7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */ +v4 = 1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */ +v5 = 3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */ +s0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +s1 = 2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */ +s2 = 3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */ +s3 = 1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */ +s4 = 2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */ +s5 = 1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */ +s6 = 3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */ +r1 = 1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */ +r2 = 7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */ +r3 = 1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */ +r4 = 1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */ +r5 = 7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */ +r6 = 7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */ +w0 = 4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */ +w1 = 8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */ +w2 = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */ +w3 = 7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */ +w4 = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */ +w5 = 8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */ +w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */ + +/* sin(pi*x) assuming x > 2^-100, if sin(pi*x)==0 the sign is arbitrary */ +static double sin_pi(double x) +{ + int n; + + /* spurious inexact if odd int */ + x = 2.0*(x*0.5 - floor(x*0.5)); /* x mod 2.0 */ + + n = (int)(x*4.0); + n = (n+1)/2; + x -= n*0.5f; + x *= pi; + + switch (n) { + default: /* case 4: */ + case 0: return __sin(x, 0.0, 0); + case 1: return __cos(x, 0.0); + case 2: return __sin(-x, 0.0, 0); + case 3: return -__cos(x, 0.0); + } +} + +double __lgamma_r(double x, int *signgamp) +{ + union {double f; uint64_t i;} u = {x}; + double_t t,y,z,nadj,p,p1,p2,p3,q,r,w; + uint32_t ix; + int sign,i; + + /* purge off +-inf, NaN, +-0, tiny and negative arguments */ + *signgamp = 1; + sign = u.i>>63; + ix = u.i>>32 & 0x7fffffff; + if (ix >= 0x7ff00000) + return x*x; + if (ix < (0x3ff-70)<<20) { /* |x|<2**-70, return -log(|x|) */ + if(sign) { + x = -x; + *signgamp = -1; + } + return -log(x); + } + if (sign) { + x = -x; + t = sin_pi(x); + if (t == 0.0) /* -integer */ + return 1.0/(x-x); + if (t > 0.0) + *signgamp = -1; + else + t = -t; + nadj = log(pi/(t*x)); + } + + /* purge off 1 and 2 */ + if ((ix == 0x3ff00000 || ix == 0x40000000) && (uint32_t)u.i == 0) + r = 0; + /* for x < 2.0 */ + else if (ix < 0x40000000) { + if (ix <= 0x3feccccc) { /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -log(x); + if (ix >= 0x3FE76944) { + y = 1.0 - x; + i = 0; + } else if (ix >= 0x3FCDA661) { + y = x - (tc-1.0); + i = 1; + } else { + y = x; + i = 2; + } + } else { + r = 0.0; + if (ix >= 0x3FFBB4C3) { /* [1.7316,2] */ + y = 2.0 - x; + i = 0; + } else if(ix >= 0x3FF3B4C4) { /* [1.23,1.73] */ + y = x - tc; + i = 1; + } else { + y = x - 1.0; + i = 2; + } + } + switch (i) { + case 0: + z = y*y; + p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))); + p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))); + p = y*p1+p2; + r += (p-0.5*y); + break; + case 1: + z = y*y; + w = z*y; + p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12))); /* parallel comp */ + p2 = t1+w*(t4+w*(t7+w*(t10+w*t13))); + p3 = t2+w*(t5+w*(t8+w*(t11+w*t14))); + p = z*p1-(tt-w*(p2+y*p3)); + r += tf + p; + break; + case 2: + p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))); + p2 = 1.0+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))); + r += -0.5*y + p1/p2; + } + } else if (ix < 0x40200000) { /* x < 8.0 */ + i = (int)x; + y = x - (double)i; + p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))); + q = 1.0+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))); + r = 0.5*y+p/q; + z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */ + switch (i) { + case 7: z *= y + 6.0; /* FALLTHRU */ + case 6: z *= y + 5.0; /* FALLTHRU */ + case 5: z *= y + 4.0; /* FALLTHRU */ + case 4: z *= y + 3.0; /* FALLTHRU */ + case 3: z *= y + 2.0; /* FALLTHRU */ + r += log(z); + break; + } + } else if (ix < 0x43900000) { /* 8.0 <= x < 2**58 */ + t = log(x); + z = 1.0/x; + y = z*z; + w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))); + r = (x-0.5)*(t-1.0)+w; + } else /* 2**58 <= x <= inf */ + r = x*(log(x)-1.0); + if (sign) + r = nadj - r; + return r; +} + +weak_alias(__lgamma_r, lgamma_r); diff --git a/vendor/modernc.org/libc/musl/src/math/lgammaf.c b/vendor/modernc.org/libc/musl/src/math/lgammaf.c new file mode 100644 index 000000000..2ae051d09 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lgammaf.c @@ -0,0 +1,7 @@ +#include +#include "libm.h" + +float lgammaf(float x) +{ + return __lgammaf_r(x, &__signgam); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lgammaf_r.c b/vendor/modernc.org/libc/musl/src/math/lgammaf_r.c new file mode 100644 index 000000000..3f353f19b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lgammaf_r.c @@ -0,0 +1,218 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_lgammaf_r.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +pi = 3.1415927410e+00, /* 0x40490fdb */ +a0 = 7.7215664089e-02, /* 0x3d9e233f */ +a1 = 3.2246702909e-01, /* 0x3ea51a66 */ +a2 = 6.7352302372e-02, /* 0x3d89f001 */ +a3 = 2.0580807701e-02, /* 0x3ca89915 */ +a4 = 7.3855509982e-03, /* 0x3bf2027e */ +a5 = 2.8905137442e-03, /* 0x3b3d6ec6 */ +a6 = 1.1927076848e-03, /* 0x3a9c54a1 */ +a7 = 5.1006977446e-04, /* 0x3a05b634 */ +a8 = 2.2086278477e-04, /* 0x39679767 */ +a9 = 1.0801156895e-04, /* 0x38e28445 */ +a10 = 2.5214456400e-05, /* 0x37d383a2 */ +a11 = 4.4864096708e-05, /* 0x383c2c75 */ +tc = 1.4616321325e+00, /* 0x3fbb16c3 */ +tf = -1.2148628384e-01, /* 0xbdf8cdcd */ +/* tt = -(tail of tf) */ +tt = 6.6971006518e-09, /* 0x31e61c52 */ +t0 = 4.8383611441e-01, /* 0x3ef7b95e */ +t1 = -1.4758771658e-01, /* 0xbe17213c */ +t2 = 6.4624942839e-02, /* 0x3d845a15 */ +t3 = -3.2788541168e-02, /* 0xbd064d47 */ +t4 = 1.7970675603e-02, /* 0x3c93373d */ +t5 = -1.0314224288e-02, /* 0xbc28fcfe */ +t6 = 6.1005386524e-03, /* 0x3bc7e707 */ +t7 = -3.6845202558e-03, /* 0xbb7177fe */ +t8 = 2.2596477065e-03, /* 0x3b141699 */ +t9 = -1.4034647029e-03, /* 0xbab7f476 */ +t10 = 8.8108185446e-04, /* 0x3a66f867 */ +t11 = -5.3859531181e-04, /* 0xba0d3085 */ +t12 = 3.1563205994e-04, /* 0x39a57b6b */ +t13 = -3.1275415677e-04, /* 0xb9a3f927 */ +t14 = 3.3552918467e-04, /* 0x39afe9f7 */ +u0 = -7.7215664089e-02, /* 0xbd9e233f */ +u1 = 6.3282704353e-01, /* 0x3f2200f4 */ +u2 = 1.4549225569e+00, /* 0x3fba3ae7 */ +u3 = 9.7771751881e-01, /* 0x3f7a4bb2 */ +u4 = 2.2896373272e-01, /* 0x3e6a7578 */ +u5 = 1.3381091878e-02, /* 0x3c5b3c5e */ +v1 = 2.4559779167e+00, /* 0x401d2ebe */ +v2 = 2.1284897327e+00, /* 0x4008392d */ +v3 = 7.6928514242e-01, /* 0x3f44efdf */ +v4 = 1.0422264785e-01, /* 0x3dd572af */ +v5 = 3.2170924824e-03, /* 0x3b52d5db */ +s0 = -7.7215664089e-02, /* 0xbd9e233f */ +s1 = 2.1498242021e-01, /* 0x3e5c245a */ +s2 = 3.2577878237e-01, /* 0x3ea6cc7a */ +s3 = 1.4635047317e-01, /* 0x3e15dce6 */ +s4 = 2.6642270386e-02, /* 0x3cda40e4 */ +s5 = 1.8402845599e-03, /* 0x3af135b4 */ +s6 = 3.1947532989e-05, /* 0x3805ff67 */ +r1 = 1.3920053244e+00, /* 0x3fb22d3b */ +r2 = 7.2193557024e-01, /* 0x3f38d0c5 */ +r3 = 1.7193385959e-01, /* 0x3e300f6e */ +r4 = 1.8645919859e-02, /* 0x3c98bf54 */ +r5 = 7.7794247773e-04, /* 0x3a4beed6 */ +r6 = 7.3266842264e-06, /* 0x36f5d7bd */ +w0 = 4.1893854737e-01, /* 0x3ed67f1d */ +w1 = 8.3333335817e-02, /* 0x3daaaaab */ +w2 = -2.7777778450e-03, /* 0xbb360b61 */ +w3 = 7.9365057172e-04, /* 0x3a500cfd */ +w4 = -5.9518753551e-04, /* 0xba1c065c */ +w5 = 8.3633989561e-04, /* 0x3a5b3dd2 */ +w6 = -1.6309292987e-03; /* 0xbad5c4e8 */ + +/* sin(pi*x) assuming x > 2^-100, if sin(pi*x)==0 the sign is arbitrary */ +static float sin_pi(float x) +{ + double_t y; + int n; + + /* spurious inexact if odd int */ + x = 2*(x*0.5f - floorf(x*0.5f)); /* x mod 2.0 */ + + n = (int)(x*4); + n = (n+1)/2; + y = x - n*0.5f; + y *= 3.14159265358979323846; + switch (n) { + default: /* case 4: */ + case 0: return __sindf(y); + case 1: return __cosdf(y); + case 2: return __sindf(-y); + case 3: return -__cosdf(y); + } +} + +float __lgammaf_r(float x, int *signgamp) +{ + union {float f; uint32_t i;} u = {x}; + float t,y,z,nadj,p,p1,p2,p3,q,r,w; + uint32_t ix; + int i,sign; + + /* purge off +-inf, NaN, +-0, tiny and negative arguments */ + *signgamp = 1; + sign = u.i>>31; + ix = u.i & 0x7fffffff; + if (ix >= 0x7f800000) + return x*x; + if (ix < 0x35000000) { /* |x| < 2**-21, return -log(|x|) */ + if (sign) { + *signgamp = -1; + x = -x; + } + return -logf(x); + } + if (sign) { + x = -x; + t = sin_pi(x); + if (t == 0.0f) /* -integer */ + return 1.0f/(x-x); + if (t > 0.0f) + *signgamp = -1; + else + t = -t; + nadj = logf(pi/(t*x)); + } + + /* purge off 1 and 2 */ + if (ix == 0x3f800000 || ix == 0x40000000) + r = 0; + /* for x < 2.0 */ + else if (ix < 0x40000000) { + if (ix <= 0x3f666666) { /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -logf(x); + if (ix >= 0x3f3b4a20) { + y = 1.0f - x; + i = 0; + } else if (ix >= 0x3e6d3308) { + y = x - (tc-1.0f); + i = 1; + } else { + y = x; + i = 2; + } + } else { + r = 0.0f; + if (ix >= 0x3fdda618) { /* [1.7316,2] */ + y = 2.0f - x; + i = 0; + } else if (ix >= 0x3F9da620) { /* [1.23,1.73] */ + y = x - tc; + i = 1; + } else { + y = x - 1.0f; + i = 2; + } + } + switch(i) { + case 0: + z = y*y; + p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))); + p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))); + p = y*p1+p2; + r += p - 0.5f*y; + break; + case 1: + z = y*y; + w = z*y; + p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12))); /* parallel comp */ + p2 = t1+w*(t4+w*(t7+w*(t10+w*t13))); + p3 = t2+w*(t5+w*(t8+w*(t11+w*t14))); + p = z*p1-(tt-w*(p2+y*p3)); + r += (tf + p); + break; + case 2: + p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))); + p2 = 1.0f+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))); + r += -0.5f*y + p1/p2; + } + } else if (ix < 0x41000000) { /* x < 8.0 */ + i = (int)x; + y = x - (float)i; + p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))); + q = 1.0f+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))); + r = 0.5f*y+p/q; + z = 1.0f; /* lgamma(1+s) = log(s) + lgamma(s) */ + switch (i) { + case 7: z *= y + 6.0f; /* FALLTHRU */ + case 6: z *= y + 5.0f; /* FALLTHRU */ + case 5: z *= y + 4.0f; /* FALLTHRU */ + case 4: z *= y + 3.0f; /* FALLTHRU */ + case 3: z *= y + 2.0f; /* FALLTHRU */ + r += logf(z); + break; + } + } else if (ix < 0x5c800000) { /* 8.0 <= x < 2**58 */ + t = logf(x); + z = 1.0f/x; + y = z*z; + w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))); + r = (x-0.5f)*(t-1.0f)+w; + } else /* 2**58 <= x <= inf */ + r = x*(logf(x)-1.0f); + if (sign) + r = nadj - r; + return r; +} + +weak_alias(__lgammaf_r, lgammaf_r); diff --git a/vendor/modernc.org/libc/musl/src/math/lgammal.c b/vendor/modernc.org/libc/musl/src/math/lgammal.c new file mode 100644 index 000000000..abbd4fc6f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lgammal.c @@ -0,0 +1,353 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_lgammal.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* lgammal(x) + * Reentrant version of the logarithm of the Gamma function + * with user provide pointer for the sign of Gamma(x). + * + * Method: + * 1. Argument Reduction for 0 < x <= 8 + * Since gamma(1+s)=s*gamma(s), for x in [0,8], we may + * reduce x to a number in [1.5,2.5] by + * lgamma(1+s) = log(s) + lgamma(s) + * for example, + * lgamma(7.3) = log(6.3) + lgamma(6.3) + * = log(6.3*5.3) + lgamma(5.3) + * = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3) + * 2. Polynomial approximation of lgamma around its + * minimun ymin=1.461632144968362245 to maintain monotonicity. + * On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use + * Let z = x-ymin; + * lgamma(x) = -1.214862905358496078218 + z^2*poly(z) + * 2. Rational approximation in the primary interval [2,3] + * We use the following approximation: + * s = x-2.0; + * lgamma(x) = 0.5*s + s*P(s)/Q(s) + * Our algorithms are based on the following observation + * + * zeta(2)-1 2 zeta(3)-1 3 + * lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ... + * 2 3 + * + * where Euler = 0.5771... is the Euler constant, which is very + * close to 0.5. + * + * 3. For x>=8, we have + * lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+.... + * (better formula: + * lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...) + * Let z = 1/x, then we approximation + * f(z) = lgamma(x) - (x-0.5)(log(x)-1) + * by + * 3 5 11 + * w = w0 + w1*z + w2*z + w3*z + ... + w6*z + * + * 4. For negative x, since (G is gamma function) + * -x*G(-x)*G(x) = pi/sin(pi*x), + * we have + * G(x) = pi/(sin(pi*x)*(-x)*G(-x)) + * since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0 + * Hence, for x<0, signgam = sign(sin(pi*x)) and + * lgamma(x) = log(|Gamma(x)|) + * = log(pi/(|x*sin(pi*x)|)) - lgamma(-x); + * Note: one should avoid compute pi*(-x) directly in the + * computation of sin(pi*(-x)). + * + * 5. Special Cases + * lgamma(2+s) ~ s*(1-Euler) for tiny s + * lgamma(1)=lgamma(2)=0 + * lgamma(x) ~ -log(x) for tiny x + * lgamma(0) = lgamma(inf) = inf + * lgamma(-integer) = +-inf + * + */ + +#define _GNU_SOURCE +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double __lgammal_r(long double x, int *sg) +{ + return __lgamma_r(x, sg); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +static const long double +pi = 3.14159265358979323846264L, + +/* lgam(1+x) = 0.5 x + x a(x)/b(x) + -0.268402099609375 <= x <= 0 + peak relative error 6.6e-22 */ +a0 = -6.343246574721079391729402781192128239938E2L, +a1 = 1.856560238672465796768677717168371401378E3L, +a2 = 2.404733102163746263689288466865843408429E3L, +a3 = 8.804188795790383497379532868917517596322E2L, +a4 = 1.135361354097447729740103745999661157426E2L, +a5 = 3.766956539107615557608581581190400021285E0L, + +b0 = 8.214973713960928795704317259806842490498E3L, +b1 = 1.026343508841367384879065363925870888012E4L, +b2 = 4.553337477045763320522762343132210919277E3L, +b3 = 8.506975785032585797446253359230031874803E2L, +b4 = 6.042447899703295436820744186992189445813E1L, +/* b5 = 1.000000000000000000000000000000000000000E0 */ + + +tc = 1.4616321449683623412626595423257213284682E0L, +tf = -1.2148629053584961146050602565082954242826E-1, /* double precision */ +/* tt = (tail of tf), i.e. tf + tt has extended precision. */ +tt = 3.3649914684731379602768989080467587736363E-18L, +/* lgam ( 1.4616321449683623412626595423257213284682E0 ) = +-1.2148629053584960809551455717769158215135617312999903886372437313313530E-1 */ + +/* lgam (x + tc) = tf + tt + x g(x)/h(x) + -0.230003726999612341262659542325721328468 <= x + <= 0.2699962730003876587373404576742786715318 + peak relative error 2.1e-21 */ +g0 = 3.645529916721223331888305293534095553827E-18L, +g1 = 5.126654642791082497002594216163574795690E3L, +g2 = 8.828603575854624811911631336122070070327E3L, +g3 = 5.464186426932117031234820886525701595203E3L, +g4 = 1.455427403530884193180776558102868592293E3L, +g5 = 1.541735456969245924860307497029155838446E2L, +g6 = 4.335498275274822298341872707453445815118E0L, + +h0 = 1.059584930106085509696730443974495979641E4L, +h1 = 2.147921653490043010629481226937850618860E4L, +h2 = 1.643014770044524804175197151958100656728E4L, +h3 = 5.869021995186925517228323497501767586078E3L, +h4 = 9.764244777714344488787381271643502742293E2L, +h5 = 6.442485441570592541741092969581997002349E1L, +/* h6 = 1.000000000000000000000000000000000000000E0 */ + + +/* lgam (x+1) = -0.5 x + x u(x)/v(x) + -0.100006103515625 <= x <= 0.231639862060546875 + peak relative error 1.3e-21 */ +u0 = -8.886217500092090678492242071879342025627E1L, +u1 = 6.840109978129177639438792958320783599310E2L, +u2 = 2.042626104514127267855588786511809932433E3L, +u3 = 1.911723903442667422201651063009856064275E3L, +u4 = 7.447065275665887457628865263491667767695E2L, +u5 = 1.132256494121790736268471016493103952637E2L, +u6 = 4.484398885516614191003094714505960972894E0L, + +v0 = 1.150830924194461522996462401210374632929E3L, +v1 = 3.399692260848747447377972081399737098610E3L, +v2 = 3.786631705644460255229513563657226008015E3L, +v3 = 1.966450123004478374557778781564114347876E3L, +v4 = 4.741359068914069299837355438370682773122E2L, +v5 = 4.508989649747184050907206782117647852364E1L, +/* v6 = 1.000000000000000000000000000000000000000E0 */ + + +/* lgam (x+2) = .5 x + x s(x)/r(x) + 0 <= x <= 1 + peak relative error 7.2e-22 */ +s0 = 1.454726263410661942989109455292824853344E6L, +s1 = -3.901428390086348447890408306153378922752E6L, +s2 = -6.573568698209374121847873064292963089438E6L, +s3 = -3.319055881485044417245964508099095984643E6L, +s4 = -7.094891568758439227560184618114707107977E5L, +s5 = -6.263426646464505837422314539808112478303E4L, +s6 = -1.684926520999477529949915657519454051529E3L, + +r0 = -1.883978160734303518163008696712983134698E7L, +r1 = -2.815206082812062064902202753264922306830E7L, +r2 = -1.600245495251915899081846093343626358398E7L, +r3 = -4.310526301881305003489257052083370058799E6L, +r4 = -5.563807682263923279438235987186184968542E5L, +r5 = -3.027734654434169996032905158145259713083E4L, +r6 = -4.501995652861105629217250715790764371267E2L, +/* r6 = 1.000000000000000000000000000000000000000E0 */ + + +/* lgam(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x w(1/x^2) + x >= 8 + Peak relative error 1.51e-21 +w0 = LS2PI - 0.5 */ +w0 = 4.189385332046727417803e-1L, +w1 = 8.333333333333331447505E-2L, +w2 = -2.777777777750349603440E-3L, +w3 = 7.936507795855070755671E-4L, +w4 = -5.952345851765688514613E-4L, +w5 = 8.412723297322498080632E-4L, +w6 = -1.880801938119376907179E-3L, +w7 = 4.885026142432270781165E-3L; + +/* sin(pi*x) assuming x > 2^-1000, if sin(pi*x)==0 the sign is arbitrary */ +static long double sin_pi(long double x) +{ + int n; + + /* spurious inexact if odd int */ + x *= 0.5; + x = 2.0*(x - floorl(x)); /* x mod 2.0 */ + + n = (int)(x*4.0); + n = (n+1)/2; + x -= n*0.5f; + x *= pi; + + switch (n) { + default: /* case 4: */ + case 0: return __sinl(x, 0.0, 0); + case 1: return __cosl(x, 0.0); + case 2: return __sinl(-x, 0.0, 0); + case 3: return -__cosl(x, 0.0); + } +} + +long double __lgammal_r(long double x, int *sg) { + long double t, y, z, nadj, p, p1, p2, q, r, w; + union ldshape u = {x}; + uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48; + int sign = u.i.se >> 15; + int i; + + *sg = 1; + + /* purge off +-inf, NaN, +-0, tiny and negative arguments */ + if (ix >= 0x7fff0000) + return x * x; + if (ix < 0x3fc08000) { /* |x|<2**-63, return -log(|x|) */ + if (sign) { + *sg = -1; + x = -x; + } + return -logl(x); + } + if (sign) { + x = -x; + t = sin_pi(x); + if (t == 0.0) + return 1.0 / (x-x); /* -integer */ + if (t > 0.0) + *sg = -1; + else + t = -t; + nadj = logl(pi / (t * x)); + } + + /* purge off 1 and 2 (so the sign is ok with downward rounding) */ + if ((ix == 0x3fff8000 || ix == 0x40008000) && u.i.m == 0) { + r = 0; + } else if (ix < 0x40008000) { /* x < 2.0 */ + if (ix <= 0x3ffee666) { /* 8.99993896484375e-1 */ + /* lgamma(x) = lgamma(x+1) - log(x) */ + r = -logl(x); + if (ix >= 0x3ffebb4a) { /* 7.31597900390625e-1 */ + y = x - 1.0; + i = 0; + } else if (ix >= 0x3ffced33) { /* 2.31639862060546875e-1 */ + y = x - (tc - 1.0); + i = 1; + } else { /* x < 0.23 */ + y = x; + i = 2; + } + } else { + r = 0.0; + if (ix >= 0x3fffdda6) { /* 1.73162841796875 */ + /* [1.7316,2] */ + y = x - 2.0; + i = 0; + } else if (ix >= 0x3fff9da6) { /* 1.23162841796875 */ + /* [1.23,1.73] */ + y = x - tc; + i = 1; + } else { + /* [0.9, 1.23] */ + y = x - 1.0; + i = 2; + } + } + switch (i) { + case 0: + p1 = a0 + y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5)))); + p2 = b0 + y * (b1 + y * (b2 + y * (b3 + y * (b4 + y)))); + r += 0.5 * y + y * p1/p2; + break; + case 1: + p1 = g0 + y * (g1 + y * (g2 + y * (g3 + y * (g4 + y * (g5 + y * g6))))); + p2 = h0 + y * (h1 + y * (h2 + y * (h3 + y * (h4 + y * (h5 + y))))); + p = tt + y * p1/p2; + r += (tf + p); + break; + case 2: + p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * (u5 + y * u6)))))); + p2 = v0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * (v5 + y))))); + r += (-0.5 * y + p1 / p2); + } + } else if (ix < 0x40028000) { /* 8.0 */ + /* x < 8.0 */ + i = (int)x; + y = x - (double)i; + p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); + q = r0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * (r6 + y)))))); + r = 0.5 * y + p / q; + z = 1.0; + /* lgamma(1+s) = log(s) + lgamma(s) */ + switch (i) { + case 7: + z *= (y + 6.0); /* FALLTHRU */ + case 6: + z *= (y + 5.0); /* FALLTHRU */ + case 5: + z *= (y + 4.0); /* FALLTHRU */ + case 4: + z *= (y + 3.0); /* FALLTHRU */ + case 3: + z *= (y + 2.0); /* FALLTHRU */ + r += logl(z); + break; + } + } else if (ix < 0x40418000) { /* 2^66 */ + /* 8.0 <= x < 2**66 */ + t = logl(x); + z = 1.0 / x; + y = z * z; + w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7)))))); + r = (x - 0.5) * (t - 1.0) + w; + } else /* 2**66 <= x <= inf */ + r = x * (logl(x) - 1.0); + if (sign) + r = nadj - r; + return r; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double __lgammal_r(long double x, int *sg) +{ + return __lgamma_r(x, sg); +} +#endif + +long double lgammal(long double x) +{ + return __lgammal_r(x, &__signgam); +} + +weak_alias(__lgammal_r, lgammal_r); diff --git a/vendor/modernc.org/libc/musl/src/math/llrint.c b/vendor/modernc.org/libc/musl/src/math/llrint.c new file mode 100644 index 000000000..4f583ae55 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llrint.c @@ -0,0 +1,8 @@ +#include + +/* uses LLONG_MAX > 2^53, see comments in lrint.c */ + +long long llrint(double x) +{ + return rint(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/llrintf.c b/vendor/modernc.org/libc/musl/src/math/llrintf.c new file mode 100644 index 000000000..96949a006 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llrintf.c @@ -0,0 +1,8 @@ +#include + +/* uses LLONG_MAX > 2^24, see comments in lrint.c */ + +long long llrintf(float x) +{ + return rintf(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/llrintl.c b/vendor/modernc.org/libc/musl/src/math/llrintl.c new file mode 100644 index 000000000..3449f6f2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llrintl.c @@ -0,0 +1,36 @@ +#include +#include +#include "libm.h" + + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long long llrintl(long double x) +{ + return llrint(x); +} +#elif defined(FE_INEXACT) +/* +see comments in lrint.c + +Note that if LLONG_MAX == 0x7fffffffffffffff && LDBL_MANT_DIG == 64 +then x == 2**63 - 0.5 is the only input that overflows and +raises inexact (with tonearest or upward rounding mode) +*/ +long long llrintl(long double x) +{ + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); + x = rintl(x); + if (!e && (x > LLONG_MAX || x < LLONG_MIN)) + feclearexcept(FE_INEXACT); + /* conversion */ + return x; +} +#else +long long llrintl(long double x) +{ + return rintl(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/llround.c b/vendor/modernc.org/libc/musl/src/math/llround.c new file mode 100644 index 000000000..4d94787d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llround.c @@ -0,0 +1,6 @@ +#include + +long long llround(double x) +{ + return round(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/llroundf.c b/vendor/modernc.org/libc/musl/src/math/llroundf.c new file mode 100644 index 000000000..19eb77ee3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llroundf.c @@ -0,0 +1,6 @@ +#include + +long long llroundf(float x) +{ + return roundf(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/llroundl.c b/vendor/modernc.org/libc/musl/src/math/llroundl.c new file mode 100644 index 000000000..2c2ee5ecd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/llroundl.c @@ -0,0 +1,6 @@ +#include + +long long llroundl(long double x) +{ + return roundl(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/log.c b/vendor/modernc.org/libc/musl/src/math/log.c new file mode 100644 index 000000000..cc52585a9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log.c @@ -0,0 +1,112 @@ +/* + * Double-precision log(x) function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "log_data.h" + +#define T __log_data.tab +#define T2 __log_data.tab2 +#define B __log_data.poly1 +#define A __log_data.poly +#define Ln2hi __log_data.ln2hi +#define Ln2lo __log_data.ln2lo +#define N (1 << LOG_TABLE_BITS) +#define OFF 0x3fe6000000000000 + +/* Top 16 bits of a double. */ +static inline uint32_t top16(double x) +{ + return asuint64(x) >> 48; +} + +double log(double x) +{ + double_t w, z, r, r2, r3, y, invc, logc, kd, hi, lo; + uint64_t ix, iz, tmp; + uint32_t top; + int k, i; + + ix = asuint64(x); + top = top16(x); +#define LO asuint64(1.0 - 0x1p-4) +#define HI asuint64(1.0 + 0x1.09p-4) + if (predict_false(ix - LO < HI - LO)) { + /* Handle close to 1.0 inputs separately. */ + /* Fix sign of zero with downward rounding when x==1. */ + if (WANT_ROUNDING && predict_false(ix == asuint64(1.0))) + return 0; + r = x - 1.0; + r2 = r * r; + r3 = r * r2; + y = r3 * + (B[1] + r * B[2] + r2 * B[3] + + r3 * (B[4] + r * B[5] + r2 * B[6] + + r3 * (B[7] + r * B[8] + r2 * B[9] + r3 * B[10]))); + /* Worst-case error is around 0.507 ULP. */ + w = r * 0x1p27; + double_t rhi = r + w - w; + double_t rlo = r - rhi; + w = rhi * rhi * B[0]; /* B[0] == -0.5. */ + hi = r + w; + lo = r - hi + w; + lo += B[0] * rlo * (rhi + r); + y += lo; + y += hi; + return eval_as_double(y); + } + if (predict_false(top - 0x0010 >= 0x7ff0 - 0x0010)) { + /* x < 0x1p-1022 or inf or nan. */ + if (ix * 2 == 0) + return __math_divzero(1); + if (ix == asuint64(INFINITY)) /* log(inf) == inf. */ + return x; + if ((top & 0x8000) || (top & 0x7ff0) == 0x7ff0) + return __math_invalid(x); + /* x is subnormal, normalize it. */ + ix = asuint64(x * 0x1p52); + ix -= 52ULL << 52; + } + + /* x = 2^k z; where z is in range [OFF,2*OFF) and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (52 - LOG_TABLE_BITS)) % N; + k = (int64_t)tmp >> 52; /* arithmetic shift */ + iz = ix - (tmp & 0xfffULL << 52); + invc = T[i].invc; + logc = T[i].logc; + z = asdouble(iz); + + /* log(x) = log1p(z/c-1) + log(c) + k*Ln2. */ + /* r ~= z/c - 1, |r| < 1/(2*N). */ +#if __FP_FAST_FMA + /* rounding error: 0x1p-55/N. */ + r = __builtin_fma(z, invc, -1.0); +#else + /* rounding error: 0x1p-55/N + 0x1p-66. */ + r = (z - T2[i].chi - T2[i].clo) * invc; +#endif + kd = (double_t)k; + + /* hi + lo = r + log(c) + k*Ln2. */ + w = kd * Ln2hi + logc; + hi = w + r; + lo = w - hi + r + kd * Ln2lo; + + /* log(x) = lo + (log1p(r) - r) + hi. */ + r2 = r * r; /* rounding error: 0x1p-54/N^2. */ + /* Worst case error if |y| > 0x1p-5: + 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma) + Worst case error if |y| > 0x1p-4: + 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma). */ + y = lo + r2 * A[0] + + r * r2 * (A[1] + r * A[2] + r2 * (A[3] + r * A[4])) + hi; + return eval_as_double(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/log10.c b/vendor/modernc.org/libc/musl/src/math/log10.c new file mode 100644 index 000000000..81026876b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log10.c @@ -0,0 +1,101 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_log10.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * Return the base 10 logarithm of x. See log.c for most comments. + * + * Reduce x to 2^k (1+f) and calculate r = log(1+f) - f + f*f/2 + * as in log.c, then combine and scale in extra precision: + * log10(x) = (f - f*f/2 + r)/log(10) + k*log10(2) + */ + +#include +#include + +static const double +ivln10hi = 4.34294481878168880939e-01, /* 0x3fdbcb7b, 0x15200000 */ +ivln10lo = 2.50829467116452752298e-11, /* 0x3dbb9438, 0xca9aadd5 */ +log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */ +log10_2lo = 3.69423907715893078616e-13, /* 0x3D59FEF3, 0x11F12B36 */ +Lg1 = 6.666666666666735130e-01, /* 3FE55555 55555593 */ +Lg2 = 3.999999999940941908e-01, /* 3FD99999 9997FA04 */ +Lg3 = 2.857142874366239149e-01, /* 3FD24924 94229359 */ +Lg4 = 2.222219843214978396e-01, /* 3FCC71C5 1D8E78AF */ +Lg5 = 1.818357216161805012e-01, /* 3FC74664 96CB03DE */ +Lg6 = 1.531383769920937332e-01, /* 3FC39A09 D078C69F */ +Lg7 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */ + +double log10(double x) +{ + union {double f; uint64_t i;} u = {x}; + double_t hfsq,f,s,z,R,w,t1,t2,dk,y,hi,lo,val_hi,val_lo; + uint32_t hx; + int k; + + hx = u.i>>32; + k = 0; + if (hx < 0x00100000 || hx>>31) { + if (u.i<<1 == 0) + return -1/(x*x); /* log(+-0)=-inf */ + if (hx>>31) + return (x-x)/0.0; /* log(-#) = NaN */ + /* subnormal number, scale x up */ + k -= 54; + x *= 0x1p54; + u.f = x; + hx = u.i>>32; + } else if (hx >= 0x7ff00000) { + return x; + } else if (hx == 0x3ff00000 && u.i<<32 == 0) + return 0; + + /* reduce x into [sqrt(2)/2, sqrt(2)] */ + hx += 0x3ff00000 - 0x3fe6a09e; + k += (int)(hx>>20) - 0x3ff; + hx = (hx&0x000fffff) + 0x3fe6a09e; + u.i = (uint64_t)hx<<32 | (u.i&0xffffffff); + x = u.f; + + f = x - 1.0; + hfsq = 0.5*f*f; + s = f/(2.0+f); + z = s*s; + w = z*z; + t1 = w*(Lg2+w*(Lg4+w*Lg6)); + t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7))); + R = t2 + t1; + + /* See log2.c for details. */ + /* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */ + hi = f - hfsq; + u.f = hi; + u.i &= (uint64_t)-1<<32; + hi = u.f; + lo = f - hi - hfsq + s*(hfsq+R); + + /* val_hi+val_lo ~ log10(1+f) + k*log10(2) */ + val_hi = hi*ivln10hi; + dk = k; + y = dk*log10_2hi; + val_lo = dk*log10_2lo + (lo+hi)*ivln10lo + lo*ivln10hi; + + /* + * Extra precision in for adding y is not strictly needed + * since there is no very large cancellation near x = sqrt(2) or + * x = 1/sqrt(2), but we do it anyway since it costs little on CPUs + * with some parallelism and it reduces the error for many args. + */ + w = y + val_hi; + val_lo += (y - w) + val_hi; + val_hi = w; + + return val_lo + val_hi; +} diff --git a/vendor/modernc.org/libc/musl/src/math/log10f.c b/vendor/modernc.org/libc/musl/src/math/log10f.c new file mode 100644 index 000000000..9ca2f017d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log10f.c @@ -0,0 +1,77 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_log10f.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * See comments in log10.c. + */ + +#include +#include + +static const float +ivln10hi = 4.3432617188e-01, /* 0x3ede6000 */ +ivln10lo = -3.1689971365e-05, /* 0xb804ead9 */ +log10_2hi = 3.0102920532e-01, /* 0x3e9a2080 */ +log10_2lo = 7.9034151668e-07, /* 0x355427db */ +/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */ +Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */ +Lg2 = 0xccce13.0p-25, /* 0.40000972152 */ +Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */ +Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */ + +float log10f(float x) +{ + union {float f; uint32_t i;} u = {x}; + float_t hfsq,f,s,z,R,w,t1,t2,dk,hi,lo; + uint32_t ix; + int k; + + ix = u.i; + k = 0; + if (ix < 0x00800000 || ix>>31) { /* x < 2**-126 */ + if (ix<<1 == 0) + return -1/(x*x); /* log(+-0)=-inf */ + if (ix>>31) + return (x-x)/0.0f; /* log(-#) = NaN */ + /* subnormal number, scale up x */ + k -= 25; + x *= 0x1p25f; + u.f = x; + ix = u.i; + } else if (ix >= 0x7f800000) { + return x; + } else if (ix == 0x3f800000) + return 0; + + /* reduce x into [sqrt(2)/2, sqrt(2)] */ + ix += 0x3f800000 - 0x3f3504f3; + k += (int)(ix>>23) - 0x7f; + ix = (ix&0x007fffff) + 0x3f3504f3; + u.i = ix; + x = u.f; + + f = x - 1.0f; + s = f/(2.0f + f); + z = s*s; + w = z*z; + t1= w*(Lg2+w*Lg4); + t2= z*(Lg1+w*Lg3); + R = t2 + t1; + hfsq = 0.5f*f*f; + + hi = f - hfsq; + u.f = hi; + u.i &= 0xfffff000; + hi = u.f; + lo = f - hi - hfsq + s*(hfsq+R); + dk = k; + return dk*log10_2lo + (lo+hi)*ivln10lo + lo*ivln10hi + hi*ivln10hi + dk*log10_2hi; +} diff --git a/vendor/modernc.org/libc/musl/src/math/log10l.c b/vendor/modernc.org/libc/musl/src/math/log10l.c new file mode 100644 index 000000000..63dcc286d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log10l.c @@ -0,0 +1,191 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_log10l.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Common logarithm, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, log10l(); + * + * y = log10l( x ); + * + * + * DESCRIPTION: + * + * Returns the base 10 logarithm of x. + * + * The argument is separated into its exponent and fractional + * parts. If the exponent is between -1 and +1, the logarithm + * of the fraction is approximated by + * + * log(1+x) = x - 0.5 x**2 + x**3 P(x)/Q(x). + * + * Otherwise, setting z = 2(x-1)/x+1), + * + * log(x) = z + z**3 P(z)/Q(z). + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE 0.5, 2.0 30000 9.0e-20 2.6e-20 + * IEEE exp(+-10000) 30000 6.0e-20 2.3e-20 + * + * In the tests over the interval exp(+-10000), the logarithms + * of the random arguments were uniformly distributed over + * [-10000, +10000]. + * + * ERROR MESSAGES: + * + * log singularity: x = 0; returns MINLOG + * log domain: x < 0; returns MINLOG + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double log10l(long double x) +{ + return log10(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.2e-22 + */ +static const long double P[] = { + 4.9962495940332550844739E-1L, + 1.0767376367209449010438E1L, + 7.7671073698359539859595E1L, + 2.5620629828144409632571E2L, + 4.2401812743503691187826E2L, + 3.4258224542413922935104E2L, + 1.0747524399916215149070E2L, +}; +static const long double Q[] = { +/* 1.0000000000000000000000E0,*/ + 2.3479774160285863271658E1L, + 1.9444210022760132894510E2L, + 7.7952888181207260646090E2L, + 1.6911722418503949084863E3L, + 2.0307734695595183428202E3L, + 1.2695660352705325274404E3L, + 3.2242573199748645407652E2L, +}; + +/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), + * where z = 2(x-1)/(x+1) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.16e-22 + */ +static const long double R[4] = { + 1.9757429581415468984296E-3L, +-7.1990767473014147232598E-1L, + 1.0777257190312272158094E1L, +-3.5717684488096787370998E1L, +}; +static const long double S[4] = { +/* 1.00000000000000000000E0L,*/ +-2.6201045551331104417768E1L, + 1.9361891836232102174846E2L, +-4.2861221385716144629696E2L, +}; +/* log10(2) */ +#define L102A 0.3125L +#define L102B -1.1470004336018804786261e-2L +/* log10(e) */ +#define L10EA 0.5L +#define L10EB -6.5705518096748172348871e-2L + +#define SQRTH 0.70710678118654752440L + +long double log10l(long double x) +{ + long double y, z; + int e; + + if (isnan(x)) + return x; + if(x <= 0.0) { + if(x == 0.0) + return -1.0 / (x*x); + return (x - x) / 0.0; + } + if (x == INFINITY) + return INFINITY; + /* separate mantissa from exponent */ + /* Note, frexp is used so that denormal numbers + * will be handled properly. + */ + x = frexpl(x, &e); + + /* logarithm using log(x) = z + z**3 P(z)/Q(z), + * where z = 2(x-1)/x+1) + */ + if (e > 2 || e < -2) { + if (x < SQRTH) { /* 2(2x-1)/(2x+1) */ + e -= 1; + z = x - 0.5; + y = 0.5 * z + 0.5; + } else { /* 2 (x-1)/(x+1) */ + z = x - 0.5; + z -= 0.5; + y = 0.5 * x + 0.5; + } + x = z / y; + z = x*x; + y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3)); + goto done; + } + + /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */ + if (x < SQRTH) { + e -= 1; + x = 2.0*x - 1.0; + } else { + x = x - 1.0; + } + z = x*x; + y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7)); + y = y - 0.5*z; + +done: + /* Multiply log of fraction by log10(e) + * and base 2 exponent by log10(2). + * + * ***CAUTION*** + * + * This sequence of operations is critical and it may + * be horribly defeated by some compiler optimizers. + */ + z = y * (L10EB); + z += x * (L10EB); + z += e * (L102B); + z += y * (L10EA); + z += x * (L10EA); + z += e * (L102A); + return z; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double log10l(long double x) +{ + return log10(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/log1p.c b/vendor/modernc.org/libc/musl/src/math/log1p.c new file mode 100644 index 000000000..009713494 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log1p.c @@ -0,0 +1,122 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_log1p.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* double log1p(double x) + * Return the natural logarithm of 1+x. + * + * Method : + * 1. Argument Reduction: find k and f such that + * 1+x = 2^k * (1+f), + * where sqrt(2)/2 < 1+f < sqrt(2) . + * + * Note. If k=0, then f=x is exact. However, if k!=0, then f + * may not be representable exactly. In that case, a correction + * term is need. Let u=1+x rounded. Let c = (1+x)-u, then + * log(1+x) - log(u) ~ c/u. Thus, we proceed to compute log(u), + * and add back the correction term c/u. + * (Note: when x > 2**53, one can simply return log(x)) + * + * 2. Approximation of log(1+f): See log.c + * + * 3. Finally, log1p(x) = k*ln2 + log(1+f) + c/u. See log.c + * + * Special cases: + * log1p(x) is NaN with signal if x < -1 (including -INF) ; + * log1p(+INF) is +INF; log1p(-1) is -INF with signal; + * log1p(NaN) is that NaN with no signal. + * + * Accuracy: + * according to an error analysis, the error is always less than + * 1 ulp (unit in the last place). + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + * + * Note: Assuming log() return accurate answer, the following + * algorithm can be used to compute log1p(x) to within a few ULP: + * + * u = 1+x; + * if(u==1.0) return x ; else + * return log(u)*(x/(u-1.0)); + * + * See HP-15C Advanced Functions Handbook, p.193. + */ + +#include "libm.h" + +static const double +ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */ +ln2_lo = 1.90821492927058770002e-10, /* 3dea39ef 35793c76 */ +Lg1 = 6.666666666666735130e-01, /* 3FE55555 55555593 */ +Lg2 = 3.999999999940941908e-01, /* 3FD99999 9997FA04 */ +Lg3 = 2.857142874366239149e-01, /* 3FD24924 94229359 */ +Lg4 = 2.222219843214978396e-01, /* 3FCC71C5 1D8E78AF */ +Lg5 = 1.818357216161805012e-01, /* 3FC74664 96CB03DE */ +Lg6 = 1.531383769920937332e-01, /* 3FC39A09 D078C69F */ +Lg7 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */ + +double log1p(double x) +{ + union {double f; uint64_t i;} u = {x}; + double_t hfsq,f,c,s,z,R,w,t1,t2,dk; + uint32_t hx,hu; + int k; + + hx = u.i>>32; + k = 1; + if (hx < 0x3fda827a || hx>>31) { /* 1+x < sqrt(2)+ */ + if (hx >= 0xbff00000) { /* x <= -1.0 */ + if (x == -1) + return x/0.0; /* log1p(-1) = -inf */ + return (x-x)/0.0; /* log1p(x<-1) = NaN */ + } + if (hx<<1 < 0x3ca00000<<1) { /* |x| < 2**-53 */ + /* underflow if subnormal */ + if ((hx&0x7ff00000) == 0) + FORCE_EVAL((float)x); + return x; + } + if (hx <= 0xbfd2bec4) { /* sqrt(2)/2- <= 1+x < sqrt(2)+ */ + k = 0; + c = 0; + f = x; + } + } else if (hx >= 0x7ff00000) + return x; + if (k) { + u.f = 1 + x; + hu = u.i>>32; + hu += 0x3ff00000 - 0x3fe6a09e; + k = (int)(hu>>20) - 0x3ff; + /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */ + if (k < 54) { + c = k >= 2 ? 1-(u.f-x) : x-(u.f-1); + c /= u.f; + } else + c = 0; + /* reduce u into [sqrt(2)/2, sqrt(2)] */ + hu = (hu&0x000fffff) + 0x3fe6a09e; + u.i = (uint64_t)hu<<32 | (u.i&0xffffffff); + f = u.f - 1; + } + hfsq = 0.5*f*f; + s = f/(2.0+f); + z = s*s; + w = z*z; + t1 = w*(Lg2+w*(Lg4+w*Lg6)); + t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7))); + R = t2 + t1; + dk = k; + return s*(hfsq+R) + (dk*ln2_lo+c) - hfsq + f + dk*ln2_hi; +} diff --git a/vendor/modernc.org/libc/musl/src/math/log1pf.c b/vendor/modernc.org/libc/musl/src/math/log1pf.c new file mode 100644 index 000000000..23985c356 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log1pf.c @@ -0,0 +1,77 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_log1pf.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float +ln2_hi = 6.9313812256e-01, /* 0x3f317180 */ +ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */ +/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */ +Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */ +Lg2 = 0xccce13.0p-25, /* 0.40000972152 */ +Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */ +Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */ + +float log1pf(float x) +{ + union {float f; uint32_t i;} u = {x}; + float_t hfsq,f,c,s,z,R,w,t1,t2,dk; + uint32_t ix,iu; + int k; + + ix = u.i; + k = 1; + if (ix < 0x3ed413d0 || ix>>31) { /* 1+x < sqrt(2)+ */ + if (ix >= 0xbf800000) { /* x <= -1.0 */ + if (x == -1) + return x/0.0f; /* log1p(-1)=+inf */ + return (x-x)/0.0f; /* log1p(x<-1)=NaN */ + } + if (ix<<1 < 0x33800000<<1) { /* |x| < 2**-24 */ + /* underflow if subnormal */ + if ((ix&0x7f800000) == 0) + FORCE_EVAL(x*x); + return x; + } + if (ix <= 0xbe95f619) { /* sqrt(2)/2- <= 1+x < sqrt(2)+ */ + k = 0; + c = 0; + f = x; + } + } else if (ix >= 0x7f800000) + return x; + if (k) { + u.f = 1 + x; + iu = u.i; + iu += 0x3f800000 - 0x3f3504f3; + k = (int)(iu>>23) - 0x7f; + /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */ + if (k < 25) { + c = k >= 2 ? 1-(u.f-x) : x-(u.f-1); + c /= u.f; + } else + c = 0; + /* reduce u into [sqrt(2)/2, sqrt(2)] */ + iu = (iu&0x007fffff) + 0x3f3504f3; + u.i = iu; + f = u.f - 1; + } + s = f/(2.0f + f); + z = s*s; + w = z*z; + t1= w*(Lg2+w*Lg4); + t2= z*(Lg1+w*Lg3); + R = t2 + t1; + hfsq = 0.5f*f*f; + dk = k; + return s*(hfsq+R) + (dk*ln2_lo+c) - hfsq + f + dk*ln2_hi; +} diff --git a/vendor/modernc.org/libc/musl/src/math/log1pl.c b/vendor/modernc.org/libc/musl/src/math/log1pl.c new file mode 100644 index 000000000..141b5f0b0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log1pl.c @@ -0,0 +1,177 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/s_log1pl.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Relative error logarithm + * Natural logarithm of 1+x, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, log1pl(); + * + * y = log1pl( x ); + * + * + * DESCRIPTION: + * + * Returns the base e (2.718...) logarithm of 1+x. + * + * The argument 1+x is separated into its exponent and fractional + * parts. If the exponent is between -1 and +1, the logarithm + * of the fraction is approximated by + * + * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x). + * + * Otherwise, setting z = 2(x-1)/x+1), + * + * log(x) = z + z^3 P(z)/Q(z). + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -1.0, 9.0 100000 8.2e-20 2.5e-20 + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double log1pl(long double x) +{ + return log1p(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 2.32e-20 + */ +static const long double P[] = { + 4.5270000862445199635215E-5L, + 4.9854102823193375972212E-1L, + 6.5787325942061044846969E0L, + 2.9911919328553073277375E1L, + 6.0949667980987787057556E1L, + 5.7112963590585538103336E1L, + 2.0039553499201281259648E1L, +}; +static const long double Q[] = { +/* 1.0000000000000000000000E0,*/ + 1.5062909083469192043167E1L, + 8.3047565967967209469434E1L, + 2.2176239823732856465394E2L, + 3.0909872225312059774938E2L, + 2.1642788614495947685003E2L, + 6.0118660497603843919306E1L, +}; + +/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), + * where z = 2(x-1)/(x+1) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.16e-22 + */ +static const long double R[4] = { + 1.9757429581415468984296E-3L, +-7.1990767473014147232598E-1L, + 1.0777257190312272158094E1L, +-3.5717684488096787370998E1L, +}; +static const long double S[4] = { +/* 1.00000000000000000000E0L,*/ +-2.6201045551331104417768E1L, + 1.9361891836232102174846E2L, +-4.2861221385716144629696E2L, +}; +static const long double C1 = 6.9314575195312500000000E-1L; +static const long double C2 = 1.4286068203094172321215E-6L; + +#define SQRTH 0.70710678118654752440L + +long double log1pl(long double xm1) +{ + long double x, y, z; + int e; + + if (isnan(xm1)) + return xm1; + if (xm1 == INFINITY) + return xm1; + if (xm1 == 0.0) + return xm1; + + x = xm1 + 1.0; + + /* Test for domain errors. */ + if (x <= 0.0) { + if (x == 0.0) + return -1/(x*x); /* -inf with divbyzero */ + return 0/0.0f; /* nan with invalid */ + } + + /* Separate mantissa from exponent. + Use frexp so that denormal numbers will be handled properly. */ + x = frexpl(x, &e); + + /* logarithm using log(x) = z + z^3 P(z)/Q(z), + where z = 2(x-1)/x+1) */ + if (e > 2 || e < -2) { + if (x < SQRTH) { /* 2(2x-1)/(2x+1) */ + e -= 1; + z = x - 0.5; + y = 0.5 * z + 0.5; + } else { /* 2 (x-1)/(x+1) */ + z = x - 0.5; + z -= 0.5; + y = 0.5 * x + 0.5; + } + x = z / y; + z = x*x; + z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3)); + z = z + e * C2; + z = z + x; + z = z + e * C1; + return z; + } + + /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */ + if (x < SQRTH) { + e -= 1; + if (e != 0) + x = 2.0 * x - 1.0; + else + x = xm1; + } else { + if (e != 0) + x = x - 1.0; + else + x = xm1; + } + z = x*x; + y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6)); + y = y + e * C2; + z = y - 0.5 * z; + z = z + x; + z = z + e * C1; + return z; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double log1pl(long double x) +{ + return log1p(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/log2.c b/vendor/modernc.org/libc/musl/src/math/log2.c new file mode 100644 index 000000000..1276ed4e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2.c @@ -0,0 +1,122 @@ +/* + * Double-precision log2(x) function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "log2_data.h" + +#define T __log2_data.tab +#define T2 __log2_data.tab2 +#define B __log2_data.poly1 +#define A __log2_data.poly +#define InvLn2hi __log2_data.invln2hi +#define InvLn2lo __log2_data.invln2lo +#define N (1 << LOG2_TABLE_BITS) +#define OFF 0x3fe6000000000000 + +/* Top 16 bits of a double. */ +static inline uint32_t top16(double x) +{ + return asuint64(x) >> 48; +} + +double log2(double x) +{ + double_t z, r, r2, r4, y, invc, logc, kd, hi, lo, t1, t2, t3, p; + uint64_t ix, iz, tmp; + uint32_t top; + int k, i; + + ix = asuint64(x); + top = top16(x); +#define LO asuint64(1.0 - 0x1.5b51p-5) +#define HI asuint64(1.0 + 0x1.6ab2p-5) + if (predict_false(ix - LO < HI - LO)) { + /* Handle close to 1.0 inputs separately. */ + /* Fix sign of zero with downward rounding when x==1. */ + if (WANT_ROUNDING && predict_false(ix == asuint64(1.0))) + return 0; + r = x - 1.0; +#if __FP_FAST_FMA + hi = r * InvLn2hi; + lo = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -hi); +#else + double_t rhi, rlo; + rhi = asdouble(asuint64(r) & -1ULL << 32); + rlo = r - rhi; + hi = rhi * InvLn2hi; + lo = rlo * InvLn2hi + r * InvLn2lo; +#endif + r2 = r * r; /* rounding error: 0x1p-62. */ + r4 = r2 * r2; + /* Worst-case error is less than 0.54 ULP (0.55 ULP without fma). */ + p = r2 * (B[0] + r * B[1]); + y = hi + p; + lo += hi - y + p; + lo += r4 * (B[2] + r * B[3] + r2 * (B[4] + r * B[5]) + + r4 * (B[6] + r * B[7] + r2 * (B[8] + r * B[9]))); + y += lo; + return eval_as_double(y); + } + if (predict_false(top - 0x0010 >= 0x7ff0 - 0x0010)) { + /* x < 0x1p-1022 or inf or nan. */ + if (ix * 2 == 0) + return __math_divzero(1); + if (ix == asuint64(INFINITY)) /* log(inf) == inf. */ + return x; + if ((top & 0x8000) || (top & 0x7ff0) == 0x7ff0) + return __math_invalid(x); + /* x is subnormal, normalize it. */ + ix = asuint64(x * 0x1p52); + ix -= 52ULL << 52; + } + + /* x = 2^k z; where z is in range [OFF,2*OFF) and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (52 - LOG2_TABLE_BITS)) % N; + k = (int64_t)tmp >> 52; /* arithmetic shift */ + iz = ix - (tmp & 0xfffULL << 52); + invc = T[i].invc; + logc = T[i].logc; + z = asdouble(iz); + kd = (double_t)k; + + /* log2(x) = log2(z/c) + log2(c) + k. */ + /* r ~= z/c - 1, |r| < 1/(2*N). */ +#if __FP_FAST_FMA + /* rounding error: 0x1p-55/N. */ + r = __builtin_fma(z, invc, -1.0); + t1 = r * InvLn2hi; + t2 = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -t1); +#else + double_t rhi, rlo; + /* rounding error: 0x1p-55/N + 0x1p-65. */ + r = (z - T2[i].chi - T2[i].clo) * invc; + rhi = asdouble(asuint64(r) & -1ULL << 32); + rlo = r - rhi; + t1 = rhi * InvLn2hi; + t2 = rlo * InvLn2hi + r * InvLn2lo; +#endif + + /* hi + lo = r/ln2 + log2(c) + k. */ + t3 = kd + logc; + hi = t3 + t1; + lo = t3 - hi + t1 + t2; + + /* log2(r+1) = r/ln2 + r^2*poly(r). */ + /* Evaluation is optimized assuming superscalar pipelined execution. */ + r2 = r * r; /* rounding error: 0x1p-54/N^2. */ + r4 = r2 * r2; + /* Worst-case error if |y| > 0x1p-4: 0.547 ULP (0.550 ULP without fma). + ~ 0.5 + 2/N/ln2 + abs-poly-error*0x1p56 ULP (+ 0.003 ULP without fma). */ + p = A[0] + r * A[1] + r2 * (A[2] + r * A[3]) + r4 * (A[4] + r * A[5]); + y = lo + r2 * p + hi; + return eval_as_double(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/log2_data.c b/vendor/modernc.org/libc/musl/src/math/log2_data.c new file mode 100644 index 000000000..3dd1ca514 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2_data.c @@ -0,0 +1,201 @@ +/* + * Data for log2. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "log2_data.h" + +#define N (1 << LOG2_TABLE_BITS) + +const struct log2_data __log2_data = { +// First coefficient: 0x1.71547652b82fe1777d0ffda0d24p0 +.invln2hi = 0x1.7154765200000p+0, +.invln2lo = 0x1.705fc2eefa200p-33, +.poly1 = { +// relative error: 0x1.2fad8188p-63 +// in -0x1.5b51p-5 0x1.6ab2p-5 +-0x1.71547652b82fep-1, +0x1.ec709dc3a03f7p-2, +-0x1.71547652b7c3fp-2, +0x1.2776c50f05be4p-2, +-0x1.ec709dd768fe5p-3, +0x1.a61761ec4e736p-3, +-0x1.7153fbc64a79bp-3, +0x1.484d154f01b4ap-3, +-0x1.289e4a72c383cp-3, +0x1.0b32f285aee66p-3, +}, +.poly = { +// relative error: 0x1.a72c2bf8p-58 +// abs error: 0x1.67a552c8p-66 +// in -0x1.f45p-8 0x1.f45p-8 +-0x1.71547652b8339p-1, +0x1.ec709dc3a04bep-2, +-0x1.7154764702ffbp-2, +0x1.2776c50034c48p-2, +-0x1.ec7b328ea92bcp-3, +0x1.a6225e117f92ep-3, +}, +/* Algorithm: + + x = 2^k z + log2(x) = k + log2(c) + log2(z/c) + log2(z/c) = poly(z/c - 1) + +where z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls +into the ith one, then table entries are computed as + + tab[i].invc = 1/c + tab[i].logc = (double)log2(c) + tab2[i].chi = (double)c + tab2[i].clo = (double)(c - (double)c) + +where c is near the center of the subinterval and is chosen by trying +-2^29 +floating point invc candidates around 1/center and selecting one for which + + 1) the rounding error in 0x1.8p10 + logc is 0, + 2) the rounding error in z - chi - clo is < 0x1p-64 and + 3) the rounding error in (double)log2(c) is minimized (< 0x1p-68). + +Note: 1) ensures that k + logc can be computed without rounding error, 2) +ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to a +single rounding error when there is no fast fma for z*invc - 1, 3) ensures +that logc + poly(z/c - 1) has small error, however near x == 1 when +|log2(x)| < 0x1p-4, this is not enough so that is special cased. */ +.tab = { +{0x1.724286bb1acf8p+0, -0x1.1095feecdb000p-1}, +{0x1.6e1f766d2cca1p+0, -0x1.08494bd76d000p-1}, +{0x1.6a13d0e30d48ap+0, -0x1.00143aee8f800p-1}, +{0x1.661ec32d06c85p+0, -0x1.efec5360b4000p-2}, +{0x1.623fa951198f8p+0, -0x1.dfdd91ab7e000p-2}, +{0x1.5e75ba4cf026cp+0, -0x1.cffae0cc79000p-2}, +{0x1.5ac055a214fb8p+0, -0x1.c043811fda000p-2}, +{0x1.571ed0f166e1ep+0, -0x1.b0b67323ae000p-2}, +{0x1.53909590bf835p+0, -0x1.a152f5a2db000p-2}, +{0x1.5014fed61adddp+0, -0x1.9217f5af86000p-2}, +{0x1.4cab88e487bd0p+0, -0x1.8304db0719000p-2}, +{0x1.49539b4334feep+0, -0x1.74189f9a9e000p-2}, +{0x1.460cbdfafd569p+0, -0x1.6552bb5199000p-2}, +{0x1.42d664ee4b953p+0, -0x1.56b23a29b1000p-2}, +{0x1.3fb01111dd8a6p+0, -0x1.483650f5fa000p-2}, +{0x1.3c995b70c5836p+0, -0x1.39de937f6a000p-2}, +{0x1.3991c4ab6fd4ap+0, -0x1.2baa1538d6000p-2}, +{0x1.3698e0ce099b5p+0, -0x1.1d98340ca4000p-2}, +{0x1.33ae48213e7b2p+0, -0x1.0fa853a40e000p-2}, +{0x1.30d191985bdb1p+0, -0x1.01d9c32e73000p-2}, +{0x1.2e025cab271d7p+0, -0x1.e857da2fa6000p-3}, +{0x1.2b404cf13cd82p+0, -0x1.cd3c8633d8000p-3}, +{0x1.288b02c7ccb50p+0, -0x1.b26034c14a000p-3}, +{0x1.25e2263944de5p+0, -0x1.97c1c2f4fe000p-3}, +{0x1.234563d8615b1p+0, -0x1.7d6023f800000p-3}, +{0x1.20b46e33eaf38p+0, -0x1.633a71a05e000p-3}, +{0x1.1e2eefdcda3ddp+0, -0x1.494f5e9570000p-3}, +{0x1.1bb4a580b3930p+0, -0x1.2f9e424e0a000p-3}, +{0x1.19453847f2200p+0, -0x1.162595afdc000p-3}, +{0x1.16e06c0d5d73cp+0, -0x1.f9c9a75bd8000p-4}, +{0x1.1485f47b7e4c2p+0, -0x1.c7b575bf9c000p-4}, +{0x1.12358ad0085d1p+0, -0x1.960c60ff48000p-4}, +{0x1.0fef00f532227p+0, -0x1.64ce247b60000p-4}, +{0x1.0db2077d03a8fp+0, -0x1.33f78b2014000p-4}, +{0x1.0b7e6d65980d9p+0, -0x1.0387d1a42c000p-4}, +{0x1.0953efe7b408dp+0, -0x1.a6f9208b50000p-5}, +{0x1.07325cac53b83p+0, -0x1.47a954f770000p-5}, +{0x1.05197e40d1b5cp+0, -0x1.d23a8c50c0000p-6}, +{0x1.03091c1208ea2p+0, -0x1.16a2629780000p-6}, +{0x1.0101025b37e21p+0, -0x1.720f8d8e80000p-8}, +{0x1.fc07ef9caa76bp-1, 0x1.6fe53b1500000p-7}, +{0x1.f4465d3f6f184p-1, 0x1.11ccce10f8000p-5}, +{0x1.ecc079f84107fp-1, 0x1.c4dfc8c8b8000p-5}, +{0x1.e573a99975ae8p-1, 0x1.3aa321e574000p-4}, +{0x1.de5d6f0bd3de6p-1, 0x1.918a0d08b8000p-4}, +{0x1.d77b681ff38b3p-1, 0x1.e72e9da044000p-4}, +{0x1.d0cb5724de943p-1, 0x1.1dcd2507f6000p-3}, +{0x1.ca4b2dc0e7563p-1, 0x1.476ab03dea000p-3}, +{0x1.c3f8ee8d6cb51p-1, 0x1.7074377e22000p-3}, +{0x1.bdd2b4f020c4cp-1, 0x1.98ede8ba94000p-3}, +{0x1.b7d6c006015cap-1, 0x1.c0db86ad2e000p-3}, +{0x1.b20366e2e338fp-1, 0x1.e840aafcee000p-3}, +{0x1.ac57026295039p-1, 0x1.0790ab4678000p-2}, +{0x1.a6d01bc2731ddp-1, 0x1.1ac056801c000p-2}, +{0x1.a16d3bc3ff18bp-1, 0x1.2db11d4fee000p-2}, +{0x1.9c2d14967feadp-1, 0x1.406464ec58000p-2}, +{0x1.970e4f47c9902p-1, 0x1.52dbe093af000p-2}, +{0x1.920fb3982bcf2p-1, 0x1.651902050d000p-2}, +{0x1.8d30187f759f1p-1, 0x1.771d2cdeaf000p-2}, +{0x1.886e5ebb9f66dp-1, 0x1.88e9c857d9000p-2}, +{0x1.83c97b658b994p-1, 0x1.9a80155e16000p-2}, +{0x1.7f405ffc61022p-1, 0x1.abe186ed3d000p-2}, +{0x1.7ad22181415cap-1, 0x1.bd0f2aea0e000p-2}, +{0x1.767dcf99eff8cp-1, 0x1.ce0a43dbf4000p-2}, +}, +#if !__FP_FAST_FMA +.tab2 = { +{0x1.6200012b90a8ep-1, 0x1.904ab0644b605p-55}, +{0x1.66000045734a6p-1, 0x1.1ff9bea62f7a9p-57}, +{0x1.69fffc325f2c5p-1, 0x1.27ecfcb3c90bap-55}, +{0x1.6e00038b95a04p-1, 0x1.8ff8856739326p-55}, +{0x1.71fffe09994e3p-1, 0x1.afd40275f82b1p-55}, +{0x1.7600015590e1p-1, -0x1.2fd75b4238341p-56}, +{0x1.7a00012655bd5p-1, 0x1.808e67c242b76p-56}, +{0x1.7e0003259e9a6p-1, -0x1.208e426f622b7p-57}, +{0x1.81fffedb4b2d2p-1, -0x1.402461ea5c92fp-55}, +{0x1.860002dfafcc3p-1, 0x1.df7f4a2f29a1fp-57}, +{0x1.89ffff78c6b5p-1, -0x1.e0453094995fdp-55}, +{0x1.8e00039671566p-1, -0x1.a04f3bec77b45p-55}, +{0x1.91fffe2bf1745p-1, -0x1.7fa34400e203cp-56}, +{0x1.95fffcc5c9fd1p-1, -0x1.6ff8005a0695dp-56}, +{0x1.9a0003bba4767p-1, 0x1.0f8c4c4ec7e03p-56}, +{0x1.9dfffe7b92da5p-1, 0x1.e7fd9478c4602p-55}, +{0x1.a1fffd72efdafp-1, -0x1.a0c554dcdae7ep-57}, +{0x1.a5fffde04ff95p-1, 0x1.67da98ce9b26bp-55}, +{0x1.a9fffca5e8d2bp-1, -0x1.284c9b54c13dep-55}, +{0x1.adfffddad03eap-1, 0x1.812c8ea602e3cp-58}, +{0x1.b1ffff10d3d4dp-1, -0x1.efaddad27789cp-55}, +{0x1.b5fffce21165ap-1, 0x1.3cb1719c61237p-58}, +{0x1.b9fffd950e674p-1, 0x1.3f7d94194cep-56}, +{0x1.be000139ca8afp-1, 0x1.50ac4215d9bcp-56}, +{0x1.c20005b46df99p-1, 0x1.beea653e9c1c9p-57}, +{0x1.c600040b9f7aep-1, -0x1.c079f274a70d6p-56}, +{0x1.ca0006255fd8ap-1, -0x1.a0b4076e84c1fp-56}, +{0x1.cdfffd94c095dp-1, 0x1.8f933f99ab5d7p-55}, +{0x1.d1ffff975d6cfp-1, -0x1.82c08665fe1bep-58}, +{0x1.d5fffa2561c93p-1, -0x1.b04289bd295f3p-56}, +{0x1.d9fff9d228b0cp-1, 0x1.70251340fa236p-55}, +{0x1.de00065bc7e16p-1, -0x1.5011e16a4d80cp-56}, +{0x1.e200002f64791p-1, 0x1.9802f09ef62ep-55}, +{0x1.e600057d7a6d8p-1, -0x1.e0b75580cf7fap-56}, +{0x1.ea00027edc00cp-1, -0x1.c848309459811p-55}, +{0x1.ee0006cf5cb7cp-1, -0x1.f8027951576f4p-55}, +{0x1.f2000782b7dccp-1, -0x1.f81d97274538fp-55}, +{0x1.f6000260c450ap-1, -0x1.071002727ffdcp-59}, +{0x1.f9fffe88cd533p-1, -0x1.81bdce1fda8bp-58}, +{0x1.fdfffd50f8689p-1, 0x1.7f91acb918e6ep-55}, +{0x1.0200004292367p+0, 0x1.b7ff365324681p-54}, +{0x1.05fffe3e3d668p+0, 0x1.6fa08ddae957bp-55}, +{0x1.0a0000a85a757p+0, -0x1.7e2de80d3fb91p-58}, +{0x1.0e0001a5f3fccp+0, -0x1.1823305c5f014p-54}, +{0x1.11ffff8afbaf5p+0, -0x1.bfabb6680bac2p-55}, +{0x1.15fffe54d91adp+0, -0x1.d7f121737e7efp-54}, +{0x1.1a00011ac36e1p+0, 0x1.c000a0516f5ffp-54}, +{0x1.1e00019c84248p+0, -0x1.082fbe4da5dap-54}, +{0x1.220000ffe5e6ep+0, -0x1.8fdd04c9cfb43p-55}, +{0x1.26000269fd891p+0, 0x1.cfe2a7994d182p-55}, +{0x1.2a00029a6e6dap+0, -0x1.00273715e8bc5p-56}, +{0x1.2dfffe0293e39p+0, 0x1.b7c39dab2a6f9p-54}, +{0x1.31ffff7dcf082p+0, 0x1.df1336edc5254p-56}, +{0x1.35ffff05a8b6p+0, -0x1.e03564ccd31ebp-54}, +{0x1.3a0002e0eaeccp+0, 0x1.5f0e74bd3a477p-56}, +{0x1.3e000043bb236p+0, 0x1.c7dcb149d8833p-54}, +{0x1.4200002d187ffp+0, 0x1.e08afcf2d3d28p-56}, +{0x1.460000d387cb1p+0, 0x1.20837856599a6p-55}, +{0x1.4a00004569f89p+0, -0x1.9fa5c904fbcd2p-55}, +{0x1.4e000043543f3p+0, -0x1.81125ed175329p-56}, +{0x1.51fffcc027f0fp+0, 0x1.883d8847754dcp-54}, +{0x1.55ffffd87b36fp+0, -0x1.709e731d02807p-55}, +{0x1.59ffff21df7bap+0, 0x1.7f79f68727b02p-55}, +{0x1.5dfffebfc3481p+0, -0x1.180902e30e93ep-54}, +}, +#endif +}; diff --git a/vendor/modernc.org/libc/musl/src/math/log2_data.h b/vendor/modernc.org/libc/musl/src/math/log2_data.h new file mode 100644 index 000000000..276a786d1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2_data.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _LOG2_DATA_H +#define _LOG2_DATA_H + +#include + +#define LOG2_TABLE_BITS 6 +#define LOG2_POLY_ORDER 7 +#define LOG2_POLY1_ORDER 11 +extern hidden const struct log2_data { + double invln2hi; + double invln2lo; + double poly[LOG2_POLY_ORDER - 1]; + double poly1[LOG2_POLY1_ORDER - 1]; + struct { + double invc, logc; + } tab[1 << LOG2_TABLE_BITS]; +#if !__FP_FAST_FMA + struct { + double chi, clo; + } tab2[1 << LOG2_TABLE_BITS]; +#endif +} __log2_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/log2f.c b/vendor/modernc.org/libc/musl/src/math/log2f.c new file mode 100644 index 000000000..c368f88f3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2f.c @@ -0,0 +1,72 @@ +/* + * Single-precision log2 function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "log2f_data.h" + +/* +LOG2F_TABLE_BITS = 4 +LOG2F_POLY_ORDER = 4 + +ULP error: 0.752 (nearest rounding.) +Relative error: 1.9 * 2^-26 (before rounding.) +*/ + +#define N (1 << LOG2F_TABLE_BITS) +#define T __log2f_data.tab +#define A __log2f_data.poly +#define OFF 0x3f330000 + +float log2f(float x) +{ + double_t z, r, r2, p, y, y0, invc, logc; + uint32_t ix, iz, top, tmp; + int k, i; + + ix = asuint(x); + /* Fix sign of zero with downward rounding when x==1. */ + if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) + return 0; + if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000)) { + /* x < 0x1p-126 or inf or nan. */ + if (ix * 2 == 0) + return __math_divzerof(1); + if (ix == 0x7f800000) /* log2(inf) == inf. */ + return x; + if ((ix & 0x80000000) || ix * 2 >= 0xff000000) + return __math_invalidf(x); + /* x is subnormal, normalize it. */ + ix = asuint(x * 0x1p23f); + ix -= 23 << 23; + } + + /* x = 2^k z; where z is in range [OFF,2*OFF] and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (23 - LOG2F_TABLE_BITS)) % N; + top = tmp & 0xff800000; + iz = ix - top; + k = (int32_t)tmp >> 23; /* arithmetic shift */ + invc = T[i].invc; + logc = T[i].logc; + z = (double_t)asfloat(iz); + + /* log2(x) = log1p(z/c-1)/ln2 + log2(c) + k */ + r = z * invc - 1; + y0 = logc + (double_t)k; + + /* Pipelined polynomial evaluation to approximate log1p(r)/ln2. */ + r2 = r * r; + y = A[1] * r + A[2]; + y = A[0] * r2 + y; + p = A[3] * r + y0; + y = y * r2 + p; + return eval_as_float(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/log2f_data.c b/vendor/modernc.org/libc/musl/src/math/log2f_data.c new file mode 100644 index 000000000..24e450f1e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2f_data.c @@ -0,0 +1,33 @@ +/* + * Data definition for log2f. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "log2f_data.h" + +const struct log2f_data __log2f_data = { + .tab = { + { 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2 }, + { 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2 }, + { 0x1.49539f0f010bp+0, -0x1.7418b0a1fb77bp-2 }, + { 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2 }, + { 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2 }, + { 0x1.25e227b0b8eap+0, -0x1.97c1d1b3b7afp-3 }, + { 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3 }, + { 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4 }, + { 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5 }, + { 0x1p+0, 0x0p+0 }, + { 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4 }, + { 0x1.ca4b31f026aap-1, 0x1.476a9543891bap-3 }, + { 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3 }, + { 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2 }, + { 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2 }, + { 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2 }, + }, + .poly = { + -0x1.712b6f70a7e4dp-2, 0x1.ecabf496832ep-2, -0x1.715479ffae3dep-1, + 0x1.715475f35c8b8p0, + } +}; diff --git a/vendor/modernc.org/libc/musl/src/math/log2f_data.h b/vendor/modernc.org/libc/musl/src/math/log2f_data.h new file mode 100644 index 000000000..4fa489560 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2f_data.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _LOG2F_DATA_H +#define _LOG2F_DATA_H + +#include + +#define LOG2F_TABLE_BITS 4 +#define LOG2F_POLY_ORDER 4 +extern hidden const struct log2f_data { + struct { + double invc, logc; + } tab[1 << LOG2F_TABLE_BITS]; + double poly[LOG2F_POLY_ORDER]; +} __log2f_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/log2l.c b/vendor/modernc.org/libc/musl/src/math/log2l.c new file mode 100644 index 000000000..722b451a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log2l.c @@ -0,0 +1,182 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_log2l.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Base 2 logarithm, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, log2l(); + * + * y = log2l( x ); + * + * + * DESCRIPTION: + * + * Returns the base 2 logarithm of x. + * + * The argument is separated into its exponent and fractional + * parts. If the exponent is between -1 and +1, the (natural) + * logarithm of the fraction is approximated by + * + * log(1+x) = x - 0.5 x**2 + x**3 P(x)/Q(x). + * + * Otherwise, setting z = 2(x-1)/x+1), + * + * log(x) = z + z**3 P(z)/Q(z). + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE 0.5, 2.0 30000 9.8e-20 2.7e-20 + * IEEE exp(+-10000) 70000 5.4e-20 2.3e-20 + * + * In the tests over the interval exp(+-10000), the logarithms + * of the random arguments were uniformly distributed over + * [-10000, +10000]. + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double log2l(long double x) +{ + return log2(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.2e-22 + */ +static const long double P[] = { + 4.9962495940332550844739E-1L, + 1.0767376367209449010438E1L, + 7.7671073698359539859595E1L, + 2.5620629828144409632571E2L, + 4.2401812743503691187826E2L, + 3.4258224542413922935104E2L, + 1.0747524399916215149070E2L, +}; +static const long double Q[] = { +/* 1.0000000000000000000000E0,*/ + 2.3479774160285863271658E1L, + 1.9444210022760132894510E2L, + 7.7952888181207260646090E2L, + 1.6911722418503949084863E3L, + 2.0307734695595183428202E3L, + 1.2695660352705325274404E3L, + 3.2242573199748645407652E2L, +}; + +/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), + * where z = 2(x-1)/(x+1) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.16e-22 + */ +static const long double R[4] = { + 1.9757429581415468984296E-3L, +-7.1990767473014147232598E-1L, + 1.0777257190312272158094E1L, +-3.5717684488096787370998E1L, +}; +static const long double S[4] = { +/* 1.00000000000000000000E0L,*/ +-2.6201045551331104417768E1L, + 1.9361891836232102174846E2L, +-4.2861221385716144629696E2L, +}; +/* log2(e) - 1 */ +#define LOG2EA 4.4269504088896340735992e-1L + +#define SQRTH 0.70710678118654752440L + +long double log2l(long double x) +{ + long double y, z; + int e; + + if (isnan(x)) + return x; + if (x == INFINITY) + return x; + if (x <= 0.0) { + if (x == 0.0) + return -1/(x*x); /* -inf with divbyzero */ + return 0/0.0f; /* nan with invalid */ + } + + /* separate mantissa from exponent */ + /* Note, frexp is used so that denormal numbers + * will be handled properly. + */ + x = frexpl(x, &e); + + /* logarithm using log(x) = z + z**3 P(z)/Q(z), + * where z = 2(x-1)/x+1) + */ + if (e > 2 || e < -2) { + if (x < SQRTH) { /* 2(2x-1)/(2x+1) */ + e -= 1; + z = x - 0.5; + y = 0.5 * z + 0.5; + } else { /* 2 (x-1)/(x+1) */ + z = x - 0.5; + z -= 0.5; + y = 0.5 * x + 0.5; + } + x = z / y; + z = x*x; + y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3)); + goto done; + } + + /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */ + if (x < SQRTH) { + e -= 1; + x = 2.0*x - 1.0; + } else { + x = x - 1.0; + } + z = x*x; + y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7)); + y = y - 0.5*z; + +done: + /* Multiply log of fraction by log2(e) + * and base 2 exponent by 1 + * + * ***CAUTION*** + * + * This sequence of operations is critical and it may + * be horribly defeated by some compiler optimizers. + */ + z = y * LOG2EA; + z += x * LOG2EA; + z += y; + z += x; + z += e; + return z; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double log2l(long double x) +{ + return log2(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/log_data.c b/vendor/modernc.org/libc/musl/src/math/log_data.c new file mode 100644 index 000000000..1a6ec712a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log_data.c @@ -0,0 +1,328 @@ +/* + * Data for log. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "log_data.h" + +#define N (1 << LOG_TABLE_BITS) + +const struct log_data __log_data = { +.ln2hi = 0x1.62e42fefa3800p-1, +.ln2lo = 0x1.ef35793c76730p-45, +.poly1 = { +// relative error: 0x1.c04d76cp-63 +// in -0x1p-4 0x1.09p-4 (|log(1+x)| > 0x1p-4 outside the interval) +-0x1p-1, +0x1.5555555555577p-2, +-0x1.ffffffffffdcbp-3, +0x1.999999995dd0cp-3, +-0x1.55555556745a7p-3, +0x1.24924a344de3p-3, +-0x1.fffffa4423d65p-4, +0x1.c7184282ad6cap-4, +-0x1.999eb43b068ffp-4, +0x1.78182f7afd085p-4, +-0x1.5521375d145cdp-4, +}, +.poly = { +// relative error: 0x1.926199e8p-56 +// abs error: 0x1.882ff33p-65 +// in -0x1.fp-9 0x1.fp-9 +-0x1.0000000000001p-1, +0x1.555555551305bp-2, +-0x1.fffffffeb459p-3, +0x1.999b324f10111p-3, +-0x1.55575e506c89fp-3, +}, +/* Algorithm: + + x = 2^k z + log(x) = k ln2 + log(c) + log(z/c) + log(z/c) = poly(z/c - 1) + +where z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls +into the ith one, then table entries are computed as + + tab[i].invc = 1/c + tab[i].logc = (double)log(c) + tab2[i].chi = (double)c + tab2[i].clo = (double)(c - (double)c) + +where c is near the center of the subinterval and is chosen by trying +-2^29 +floating point invc candidates around 1/center and selecting one for which + + 1) the rounding error in 0x1.8p9 + logc is 0, + 2) the rounding error in z - chi - clo is < 0x1p-66 and + 3) the rounding error in (double)log(c) is minimized (< 0x1p-66). + +Note: 1) ensures that k*ln2hi + logc can be computed without rounding error, +2) ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to +a single rounding error when there is no fast fma for z*invc - 1, 3) ensures +that logc + poly(z/c - 1) has small error, however near x == 1 when +|log(x)| < 0x1p-4, this is not enough so that is special cased. */ +.tab = { +{0x1.734f0c3e0de9fp+0, -0x1.7cc7f79e69000p-2}, +{0x1.713786a2ce91fp+0, -0x1.76feec20d0000p-2}, +{0x1.6f26008fab5a0p+0, -0x1.713e31351e000p-2}, +{0x1.6d1a61f138c7dp+0, -0x1.6b85b38287800p-2}, +{0x1.6b1490bc5b4d1p+0, -0x1.65d5590807800p-2}, +{0x1.69147332f0cbap+0, -0x1.602d076180000p-2}, +{0x1.6719f18224223p+0, -0x1.5a8ca86909000p-2}, +{0x1.6524f99a51ed9p+0, -0x1.54f4356035000p-2}, +{0x1.63356aa8f24c4p+0, -0x1.4f637c36b4000p-2}, +{0x1.614b36b9ddc14p+0, -0x1.49da7fda85000p-2}, +{0x1.5f66452c65c4cp+0, -0x1.445923989a800p-2}, +{0x1.5d867b5912c4fp+0, -0x1.3edf439b0b800p-2}, +{0x1.5babccb5b90dep+0, -0x1.396ce448f7000p-2}, +{0x1.59d61f2d91a78p+0, -0x1.3401e17bda000p-2}, +{0x1.5805612465687p+0, -0x1.2e9e2ef468000p-2}, +{0x1.56397cee76bd3p+0, -0x1.2941b3830e000p-2}, +{0x1.54725e2a77f93p+0, -0x1.23ec58cda8800p-2}, +{0x1.52aff42064583p+0, -0x1.1e9e129279000p-2}, +{0x1.50f22dbb2bddfp+0, -0x1.1956d2b48f800p-2}, +{0x1.4f38f4734ded7p+0, -0x1.141679ab9f800p-2}, +{0x1.4d843cfde2840p+0, -0x1.0edd094ef9800p-2}, +{0x1.4bd3ec078a3c8p+0, -0x1.09aa518db1000p-2}, +{0x1.4a27fc3e0258ap+0, -0x1.047e65263b800p-2}, +{0x1.4880524d48434p+0, -0x1.feb224586f000p-3}, +{0x1.46dce1b192d0bp+0, -0x1.f474a7517b000p-3}, +{0x1.453d9d3391854p+0, -0x1.ea4443d103000p-3}, +{0x1.43a2744b4845ap+0, -0x1.e020d44e9b000p-3}, +{0x1.420b54115f8fbp+0, -0x1.d60a22977f000p-3}, +{0x1.40782da3ef4b1p+0, -0x1.cc00104959000p-3}, +{0x1.3ee8f5d57fe8fp+0, -0x1.c202956891000p-3}, +{0x1.3d5d9a00b4ce9p+0, -0x1.b81178d811000p-3}, +{0x1.3bd60c010c12bp+0, -0x1.ae2c9ccd3d000p-3}, +{0x1.3a5242b75dab8p+0, -0x1.a45402e129000p-3}, +{0x1.38d22cd9fd002p+0, -0x1.9a877681df000p-3}, +{0x1.3755bc5847a1cp+0, -0x1.90c6d69483000p-3}, +{0x1.35dce49ad36e2p+0, -0x1.87120a645c000p-3}, +{0x1.34679984dd440p+0, -0x1.7d68fb4143000p-3}, +{0x1.32f5cceffcb24p+0, -0x1.73cb83c627000p-3}, +{0x1.3187775a10d49p+0, -0x1.6a39a9b376000p-3}, +{0x1.301c8373e3990p+0, -0x1.60b3154b7a000p-3}, +{0x1.2eb4ebb95f841p+0, -0x1.5737d76243000p-3}, +{0x1.2d50a0219a9d1p+0, -0x1.4dc7b8fc23000p-3}, +{0x1.2bef9a8b7fd2ap+0, -0x1.4462c51d20000p-3}, +{0x1.2a91c7a0c1babp+0, -0x1.3b08abc830000p-3}, +{0x1.293726014b530p+0, -0x1.31b996b490000p-3}, +{0x1.27dfa5757a1f5p+0, -0x1.2875490a44000p-3}, +{0x1.268b39b1d3bbfp+0, -0x1.1f3b9f879a000p-3}, +{0x1.2539d838ff5bdp+0, -0x1.160c8252ca000p-3}, +{0x1.23eb7aac9083bp+0, -0x1.0ce7f57f72000p-3}, +{0x1.22a012ba940b6p+0, -0x1.03cdc49fea000p-3}, +{0x1.2157996cc4132p+0, -0x1.f57bdbc4b8000p-4}, +{0x1.201201dd2fc9bp+0, -0x1.e370896404000p-4}, +{0x1.1ecf4494d480bp+0, -0x1.d17983ef94000p-4}, +{0x1.1d8f5528f6569p+0, -0x1.bf9674ed8a000p-4}, +{0x1.1c52311577e7cp+0, -0x1.adc79202f6000p-4}, +{0x1.1b17c74cb26e9p+0, -0x1.9c0c3e7288000p-4}, +{0x1.19e010c2c1ab6p+0, -0x1.8a646b372c000p-4}, +{0x1.18ab07bb670bdp+0, -0x1.78d01b3ac0000p-4}, +{0x1.1778a25efbcb6p+0, -0x1.674f145380000p-4}, +{0x1.1648d354c31dap+0, -0x1.55e0e6d878000p-4}, +{0x1.151b990275fddp+0, -0x1.4485cdea1e000p-4}, +{0x1.13f0ea432d24cp+0, -0x1.333d94d6aa000p-4}, +{0x1.12c8b7210f9dap+0, -0x1.22079f8c56000p-4}, +{0x1.11a3028ecb531p+0, -0x1.10e4698622000p-4}, +{0x1.107fbda8434afp+0, -0x1.ffa6c6ad20000p-5}, +{0x1.0f5ee0f4e6bb3p+0, -0x1.dda8d4a774000p-5}, +{0x1.0e4065d2a9fcep+0, -0x1.bbcece4850000p-5}, +{0x1.0d244632ca521p+0, -0x1.9a1894012c000p-5}, +{0x1.0c0a77ce2981ap+0, -0x1.788583302c000p-5}, +{0x1.0af2f83c636d1p+0, -0x1.5715e67d68000p-5}, +{0x1.09ddb98a01339p+0, -0x1.35c8a49658000p-5}, +{0x1.08cabaf52e7dfp+0, -0x1.149e364154000p-5}, +{0x1.07b9f2f4e28fbp+0, -0x1.e72c082eb8000p-6}, +{0x1.06ab58c358f19p+0, -0x1.a55f152528000p-6}, +{0x1.059eea5ecf92cp+0, -0x1.63d62cf818000p-6}, +{0x1.04949cdd12c90p+0, -0x1.228fb8caa0000p-6}, +{0x1.038c6c6f0ada9p+0, -0x1.c317b20f90000p-7}, +{0x1.02865137932a9p+0, -0x1.419355daa0000p-7}, +{0x1.0182427ea7348p+0, -0x1.81203c2ec0000p-8}, +{0x1.008040614b195p+0, -0x1.0040979240000p-9}, +{0x1.fe01ff726fa1ap-1, 0x1.feff384900000p-9}, +{0x1.fa11cc261ea74p-1, 0x1.7dc41353d0000p-7}, +{0x1.f6310b081992ep-1, 0x1.3cea3c4c28000p-6}, +{0x1.f25f63ceeadcdp-1, 0x1.b9fc114890000p-6}, +{0x1.ee9c8039113e7p-1, 0x1.1b0d8ce110000p-5}, +{0x1.eae8078cbb1abp-1, 0x1.58a5bd001c000p-5}, +{0x1.e741aa29d0c9bp-1, 0x1.95c8340d88000p-5}, +{0x1.e3a91830a99b5p-1, 0x1.d276aef578000p-5}, +{0x1.e01e009609a56p-1, 0x1.07598e598c000p-4}, +{0x1.dca01e577bb98p-1, 0x1.253f5e30d2000p-4}, +{0x1.d92f20b7c9103p-1, 0x1.42edd8b380000p-4}, +{0x1.d5cac66fb5ccep-1, 0x1.606598757c000p-4}, +{0x1.d272caa5ede9dp-1, 0x1.7da76356a0000p-4}, +{0x1.cf26e3e6b2ccdp-1, 0x1.9ab434e1c6000p-4}, +{0x1.cbe6da2a77902p-1, 0x1.b78c7bb0d6000p-4}, +{0x1.c8b266d37086dp-1, 0x1.d431332e72000p-4}, +{0x1.c5894bd5d5804p-1, 0x1.f0a3171de6000p-4}, +{0x1.c26b533bb9f8cp-1, 0x1.067152b914000p-3}, +{0x1.bf583eeece73fp-1, 0x1.147858292b000p-3}, +{0x1.bc4fd75db96c1p-1, 0x1.2266ecdca3000p-3}, +{0x1.b951e0c864a28p-1, 0x1.303d7a6c55000p-3}, +{0x1.b65e2c5ef3e2cp-1, 0x1.3dfc33c331000p-3}, +{0x1.b374867c9888bp-1, 0x1.4ba366b7a8000p-3}, +{0x1.b094b211d304ap-1, 0x1.5933928d1f000p-3}, +{0x1.adbe885f2ef7ep-1, 0x1.66acd2418f000p-3}, +{0x1.aaf1d31603da2p-1, 0x1.740f8ec669000p-3}, +{0x1.a82e63fd358a7p-1, 0x1.815c0f51af000p-3}, +{0x1.a5740ef09738bp-1, 0x1.8e92954f68000p-3}, +{0x1.a2c2a90ab4b27p-1, 0x1.9bb3602f84000p-3}, +{0x1.a01a01393f2d1p-1, 0x1.a8bed1c2c0000p-3}, +{0x1.9d79f24db3c1bp-1, 0x1.b5b515c01d000p-3}, +{0x1.9ae2505c7b190p-1, 0x1.c2967ccbcc000p-3}, +{0x1.9852ef297ce2fp-1, 0x1.cf635d5486000p-3}, +{0x1.95cbaeea44b75p-1, 0x1.dc1bd3446c000p-3}, +{0x1.934c69de74838p-1, 0x1.e8c01b8cfe000p-3}, +{0x1.90d4f2f6752e6p-1, 0x1.f5509c0179000p-3}, +{0x1.8e6528effd79dp-1, 0x1.00e6c121fb800p-2}, +{0x1.8bfce9fcc007cp-1, 0x1.071b80e93d000p-2}, +{0x1.899c0dabec30ep-1, 0x1.0d46b9e867000p-2}, +{0x1.87427aa2317fbp-1, 0x1.13687334bd000p-2}, +{0x1.84f00acb39a08p-1, 0x1.1980d67234800p-2}, +{0x1.82a49e8653e55p-1, 0x1.1f8ffe0cc8000p-2}, +{0x1.8060195f40260p-1, 0x1.2595fd7636800p-2}, +{0x1.7e22563e0a329p-1, 0x1.2b9300914a800p-2}, +{0x1.7beb377dcb5adp-1, 0x1.3187210436000p-2}, +{0x1.79baa679725c2p-1, 0x1.377266dec1800p-2}, +{0x1.77907f2170657p-1, 0x1.3d54ffbaf3000p-2}, +{0x1.756cadbd6130cp-1, 0x1.432eee32fe000p-2}, +}, +#if !__FP_FAST_FMA +.tab2 = { +{0x1.61000014fb66bp-1, 0x1.e026c91425b3cp-56}, +{0x1.63000034db495p-1, 0x1.dbfea48005d41p-55}, +{0x1.650000d94d478p-1, 0x1.e7fa786d6a5b7p-55}, +{0x1.67000074e6fadp-1, 0x1.1fcea6b54254cp-57}, +{0x1.68ffffedf0faep-1, -0x1.c7e274c590efdp-56}, +{0x1.6b0000763c5bcp-1, -0x1.ac16848dcda01p-55}, +{0x1.6d0001e5cc1f6p-1, 0x1.33f1c9d499311p-55}, +{0x1.6efffeb05f63ep-1, -0x1.e80041ae22d53p-56}, +{0x1.710000e86978p-1, 0x1.bff6671097952p-56}, +{0x1.72ffffc67e912p-1, 0x1.c00e226bd8724p-55}, +{0x1.74fffdf81116ap-1, -0x1.e02916ef101d2p-57}, +{0x1.770000f679c9p-1, -0x1.7fc71cd549c74p-57}, +{0x1.78ffffa7ec835p-1, 0x1.1bec19ef50483p-55}, +{0x1.7affffe20c2e6p-1, -0x1.07e1729cc6465p-56}, +{0x1.7cfffed3fc9p-1, -0x1.08072087b8b1cp-55}, +{0x1.7efffe9261a76p-1, 0x1.dc0286d9df9aep-55}, +{0x1.81000049ca3e8p-1, 0x1.97fd251e54c33p-55}, +{0x1.8300017932c8fp-1, -0x1.afee9b630f381p-55}, +{0x1.850000633739cp-1, 0x1.9bfbf6b6535bcp-55}, +{0x1.87000204289c6p-1, -0x1.bbf65f3117b75p-55}, +{0x1.88fffebf57904p-1, -0x1.9006ea23dcb57p-55}, +{0x1.8b00022bc04dfp-1, -0x1.d00df38e04b0ap-56}, +{0x1.8cfffe50c1b8ap-1, -0x1.8007146ff9f05p-55}, +{0x1.8effffc918e43p-1, 0x1.3817bd07a7038p-55}, +{0x1.910001efa5fc7p-1, 0x1.93e9176dfb403p-55}, +{0x1.9300013467bb9p-1, 0x1.f804e4b980276p-56}, +{0x1.94fffe6ee076fp-1, -0x1.f7ef0d9ff622ep-55}, +{0x1.96fffde3c12d1p-1, -0x1.082aa962638bap-56}, +{0x1.98ffff4458a0dp-1, -0x1.7801b9164a8efp-55}, +{0x1.9afffdd982e3ep-1, -0x1.740e08a5a9337p-55}, +{0x1.9cfffed49fb66p-1, 0x1.fce08c19bep-60}, +{0x1.9f00020f19c51p-1, -0x1.a3faa27885b0ap-55}, +{0x1.a10001145b006p-1, 0x1.4ff489958da56p-56}, +{0x1.a300007bbf6fap-1, 0x1.cbeab8a2b6d18p-55}, +{0x1.a500010971d79p-1, 0x1.8fecadd78793p-55}, +{0x1.a70001df52e48p-1, -0x1.f41763dd8abdbp-55}, +{0x1.a90001c593352p-1, -0x1.ebf0284c27612p-55}, +{0x1.ab0002a4f3e4bp-1, -0x1.9fd043cff3f5fp-57}, +{0x1.acfffd7ae1ed1p-1, -0x1.23ee7129070b4p-55}, +{0x1.aefffee510478p-1, 0x1.a063ee00edea3p-57}, +{0x1.b0fffdb650d5bp-1, 0x1.a06c8381f0ab9p-58}, +{0x1.b2ffffeaaca57p-1, -0x1.9011e74233c1dp-56}, +{0x1.b4fffd995badcp-1, -0x1.9ff1068862a9fp-56}, +{0x1.b7000249e659cp-1, 0x1.aff45d0864f3ep-55}, +{0x1.b8ffff987164p-1, 0x1.cfe7796c2c3f9p-56}, +{0x1.bafffd204cb4fp-1, -0x1.3ff27eef22bc4p-57}, +{0x1.bcfffd2415c45p-1, -0x1.cffb7ee3bea21p-57}, +{0x1.beffff86309dfp-1, -0x1.14103972e0b5cp-55}, +{0x1.c0fffe1b57653p-1, 0x1.bc16494b76a19p-55}, +{0x1.c2ffff1fa57e3p-1, -0x1.4feef8d30c6edp-57}, +{0x1.c4fffdcbfe424p-1, -0x1.43f68bcec4775p-55}, +{0x1.c6fffed54b9f7p-1, 0x1.47ea3f053e0ecp-55}, +{0x1.c8fffeb998fd5p-1, 0x1.383068df992f1p-56}, +{0x1.cb0002125219ap-1, -0x1.8fd8e64180e04p-57}, +{0x1.ccfffdd94469cp-1, 0x1.e7ebe1cc7ea72p-55}, +{0x1.cefffeafdc476p-1, 0x1.ebe39ad9f88fep-55}, +{0x1.d1000169af82bp-1, 0x1.57d91a8b95a71p-56}, +{0x1.d30000d0ff71dp-1, 0x1.9c1906970c7dap-55}, +{0x1.d4fffea790fc4p-1, -0x1.80e37c558fe0cp-58}, +{0x1.d70002edc87e5p-1, -0x1.f80d64dc10f44p-56}, +{0x1.d900021dc82aap-1, -0x1.47c8f94fd5c5cp-56}, +{0x1.dafffd86b0283p-1, 0x1.c7f1dc521617ep-55}, +{0x1.dd000296c4739p-1, 0x1.8019eb2ffb153p-55}, +{0x1.defffe54490f5p-1, 0x1.e00d2c652cc89p-57}, +{0x1.e0fffcdabf694p-1, -0x1.f8340202d69d2p-56}, +{0x1.e2fffdb52c8ddp-1, 0x1.b00c1ca1b0864p-56}, +{0x1.e4ffff24216efp-1, 0x1.2ffa8b094ab51p-56}, +{0x1.e6fffe88a5e11p-1, -0x1.7f673b1efbe59p-58}, +{0x1.e9000119eff0dp-1, -0x1.4808d5e0bc801p-55}, +{0x1.eafffdfa51744p-1, 0x1.80006d54320b5p-56}, +{0x1.ed0001a127fa1p-1, -0x1.002f860565c92p-58}, +{0x1.ef00007babcc4p-1, -0x1.540445d35e611p-55}, +{0x1.f0ffff57a8d02p-1, -0x1.ffb3139ef9105p-59}, +{0x1.f30001ee58ac7p-1, 0x1.a81acf2731155p-55}, +{0x1.f4ffff5823494p-1, 0x1.a3f41d4d7c743p-55}, +{0x1.f6ffffca94c6bp-1, -0x1.202f41c987875p-57}, +{0x1.f8fffe1f9c441p-1, 0x1.77dd1f477e74bp-56}, +{0x1.fafffd2e0e37ep-1, -0x1.f01199a7ca331p-57}, +{0x1.fd0001c77e49ep-1, 0x1.181ee4bceacb1p-56}, +{0x1.feffff7e0c331p-1, -0x1.e05370170875ap-57}, +{0x1.00ffff465606ep+0, -0x1.a7ead491c0adap-55}, +{0x1.02ffff3867a58p+0, -0x1.77f69c3fcb2ep-54}, +{0x1.04ffffdfc0d17p+0, 0x1.7bffe34cb945bp-54}, +{0x1.0700003cd4d82p+0, 0x1.20083c0e456cbp-55}, +{0x1.08ffff9f2cbe8p+0, -0x1.dffdfbe37751ap-57}, +{0x1.0b000010cda65p+0, -0x1.13f7faee626ebp-54}, +{0x1.0d00001a4d338p+0, 0x1.07dfa79489ff7p-55}, +{0x1.0effffadafdfdp+0, -0x1.7040570d66bcp-56}, +{0x1.110000bbafd96p+0, 0x1.e80d4846d0b62p-55}, +{0x1.12ffffae5f45dp+0, 0x1.dbffa64fd36efp-54}, +{0x1.150000dd59ad9p+0, 0x1.a0077701250aep-54}, +{0x1.170000f21559ap+0, 0x1.dfdf9e2e3deeep-55}, +{0x1.18ffffc275426p+0, 0x1.10030dc3b7273p-54}, +{0x1.1b000123d3c59p+0, 0x1.97f7980030188p-54}, +{0x1.1cffff8299eb7p+0, -0x1.5f932ab9f8c67p-57}, +{0x1.1effff48ad4p+0, 0x1.37fbf9da75bebp-54}, +{0x1.210000c8b86a4p+0, 0x1.f806b91fd5b22p-54}, +{0x1.2300003854303p+0, 0x1.3ffc2eb9fbf33p-54}, +{0x1.24fffffbcf684p+0, 0x1.601e77e2e2e72p-56}, +{0x1.26ffff52921d9p+0, 0x1.ffcbb767f0c61p-56}, +{0x1.2900014933a3cp+0, -0x1.202ca3c02412bp-56}, +{0x1.2b00014556313p+0, -0x1.2808233f21f02p-54}, +{0x1.2cfffebfe523bp+0, -0x1.8ff7e384fdcf2p-55}, +{0x1.2f0000bb8ad96p+0, -0x1.5ff51503041c5p-55}, +{0x1.30ffffb7ae2afp+0, -0x1.10071885e289dp-55}, +{0x1.32ffffeac5f7fp+0, -0x1.1ff5d3fb7b715p-54}, +{0x1.350000ca66756p+0, 0x1.57f82228b82bdp-54}, +{0x1.3700011fbf721p+0, 0x1.000bac40dd5ccp-55}, +{0x1.38ffff9592fb9p+0, -0x1.43f9d2db2a751p-54}, +{0x1.3b00004ddd242p+0, 0x1.57f6b707638e1p-55}, +{0x1.3cffff5b2c957p+0, 0x1.a023a10bf1231p-56}, +{0x1.3efffeab0b418p+0, 0x1.87f6d66b152bp-54}, +{0x1.410001532aff4p+0, 0x1.7f8375f198524p-57}, +{0x1.4300017478b29p+0, 0x1.301e672dc5143p-55}, +{0x1.44fffe795b463p+0, 0x1.9ff69b8b2895ap-55}, +{0x1.46fffe80475ep+0, -0x1.5c0b19bc2f254p-54}, +{0x1.48fffef6fc1e7p+0, 0x1.b4009f23a2a72p-54}, +{0x1.4afffe5bea704p+0, -0x1.4ffb7bf0d7d45p-54}, +{0x1.4d000171027dep+0, -0x1.9c06471dc6a3dp-54}, +{0x1.4f0000ff03ee2p+0, 0x1.77f890b85531cp-54}, +{0x1.5100012dc4bd1p+0, 0x1.004657166a436p-57}, +{0x1.530001605277ap+0, -0x1.6bfcece233209p-54}, +{0x1.54fffecdb704cp+0, -0x1.902720505a1d7p-55}, +{0x1.56fffef5f54a9p+0, 0x1.bbfe60ec96412p-54}, +{0x1.5900017e61012p+0, 0x1.87ec581afef9p-55}, +{0x1.5b00003c93e92p+0, -0x1.f41080abf0ccp-54}, +{0x1.5d0001d4919bcp+0, -0x1.8812afb254729p-54}, +{0x1.5efffe7b87a89p+0, -0x1.47eb780ed6904p-54}, +}, +#endif +}; diff --git a/vendor/modernc.org/libc/musl/src/math/log_data.h b/vendor/modernc.org/libc/musl/src/math/log_data.h new file mode 100644 index 000000000..1be22ab24 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/log_data.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _LOG_DATA_H +#define _LOG_DATA_H + +#include + +#define LOG_TABLE_BITS 7 +#define LOG_POLY_ORDER 6 +#define LOG_POLY1_ORDER 12 +extern hidden const struct log_data { + double ln2hi; + double ln2lo; + double poly[LOG_POLY_ORDER - 1]; /* First coefficient is 1. */ + double poly1[LOG_POLY1_ORDER - 1]; + struct { + double invc, logc; + } tab[1 << LOG_TABLE_BITS]; +#if !__FP_FAST_FMA + struct { + double chi, clo; + } tab2[1 << LOG_TABLE_BITS]; +#endif +} __log_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/logb.c b/vendor/modernc.org/libc/musl/src/math/logb.c new file mode 100644 index 000000000..7f8bdfae1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logb.c @@ -0,0 +1,17 @@ +#include + +/* +special cases: + logb(+-0) = -inf, and raise divbyzero + logb(+-inf) = +inf + logb(nan) = nan +*/ + +double logb(double x) +{ + if (!isfinite(x)) + return x * x; + if (x == 0) + return -1/(x*x); + return ilogb(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/logbf.c b/vendor/modernc.org/libc/musl/src/math/logbf.c new file mode 100644 index 000000000..a0a0b5ed5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logbf.c @@ -0,0 +1,10 @@ +#include + +float logbf(float x) +{ + if (!isfinite(x)) + return x * x; + if (x == 0) + return -1/(x*x); + return ilogbf(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/logbl.c b/vendor/modernc.org/libc/musl/src/math/logbl.c new file mode 100644 index 000000000..962973a7b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logbl.c @@ -0,0 +1,16 @@ +#include +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double logbl(long double x) +{ + return logb(x); +} +#else +long double logbl(long double x) +{ + if (!isfinite(x)) + return x * x; + if (x == 0) + return -1/(x*x); + return ilogbl(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/logf.c b/vendor/modernc.org/libc/musl/src/math/logf.c new file mode 100644 index 000000000..7ee5d7fe6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logf.c @@ -0,0 +1,71 @@ +/* + * Single-precision log function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "logf_data.h" + +/* +LOGF_TABLE_BITS = 4 +LOGF_POLY_ORDER = 4 + +ULP error: 0.818 (nearest rounding.) +Relative error: 1.957 * 2^-26 (before rounding.) +*/ + +#define T __logf_data.tab +#define A __logf_data.poly +#define Ln2 __logf_data.ln2 +#define N (1 << LOGF_TABLE_BITS) +#define OFF 0x3f330000 + +float logf(float x) +{ + double_t z, r, r2, y, y0, invc, logc; + uint32_t ix, iz, tmp; + int k, i; + + ix = asuint(x); + /* Fix sign of zero with downward rounding when x==1. */ + if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) + return 0; + if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000)) { + /* x < 0x1p-126 or inf or nan. */ + if (ix * 2 == 0) + return __math_divzerof(1); + if (ix == 0x7f800000) /* log(inf) == inf. */ + return x; + if ((ix & 0x80000000) || ix * 2 >= 0xff000000) + return __math_invalidf(x); + /* x is subnormal, normalize it. */ + ix = asuint(x * 0x1p23f); + ix -= 23 << 23; + } + + /* x = 2^k z; where z is in range [OFF,2*OFF] and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (23 - LOGF_TABLE_BITS)) % N; + k = (int32_t)tmp >> 23; /* arithmetic shift */ + iz = ix - (tmp & 0x1ff << 23); + invc = T[i].invc; + logc = T[i].logc; + z = (double_t)asfloat(iz); + + /* log(x) = log1p(z/c-1) + log(c) + k*Ln2 */ + r = z * invc - 1; + y0 = logc + (double_t)k * Ln2; + + /* Pipelined polynomial evaluation to approximate log1p(r). */ + r2 = r * r; + y = A[1] * r + A[2]; + y = A[0] * r2 + y; + y = y * r2 + (y0 + r); + return eval_as_float(y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/logf_data.c b/vendor/modernc.org/libc/musl/src/math/logf_data.c new file mode 100644 index 000000000..857221f79 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logf_data.c @@ -0,0 +1,33 @@ +/* + * Data definition for logf. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "logf_data.h" + +const struct logf_data __logf_data = { + .tab = { + { 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2 }, + { 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2 }, + { 0x1.49539f0f010bp+0, -0x1.01eae7f513a67p-2 }, + { 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3 }, + { 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3 }, + { 0x1.25e227b0b8eap+0, -0x1.1aa2bc79c81p-3 }, + { 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4 }, + { 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4 }, + { 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5 }, + { 0x1p+0, 0x0p+0 }, + { 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5 }, + { 0x1.ca4b31f026aap-1, 0x1.c5e53aa362eb4p-4 }, + { 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3 }, + { 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 }, + { 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2 }, + { 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2 }, + }, + .ln2 = 0x1.62e42fefa39efp-1, + .poly = { + -0x1.00ea348b88334p-2, 0x1.5575b0be00b6ap-2, -0x1.ffffef20a4123p-2, + } +}; diff --git a/vendor/modernc.org/libc/musl/src/math/logf_data.h b/vendor/modernc.org/libc/musl/src/math/logf_data.h new file mode 100644 index 000000000..00cff6f81 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logf_data.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _LOGF_DATA_H +#define _LOGF_DATA_H + +#include + +#define LOGF_TABLE_BITS 4 +#define LOGF_POLY_ORDER 4 +extern hidden const struct logf_data { + struct { + double invc, logc; + } tab[1 << LOGF_TABLE_BITS]; + double ln2; + double poly[LOGF_POLY_ORDER - 1]; /* First order coefficient is 1. */ +} __logf_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/logl.c b/vendor/modernc.org/libc/musl/src/math/logl.c new file mode 100644 index 000000000..5d5365929 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/logl.c @@ -0,0 +1,175 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_logl.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Natural logarithm, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, logl(); + * + * y = logl( x ); + * + * + * DESCRIPTION: + * + * Returns the base e (2.718...) logarithm of x. + * + * The argument is separated into its exponent and fractional + * parts. If the exponent is between -1 and +1, the logarithm + * of the fraction is approximated by + * + * log(1+x) = x - 0.5 x**2 + x**3 P(x)/Q(x). + * + * Otherwise, setting z = 2(x-1)/(x+1), + * + * log(x) = log(1+z/2) - log(1-z/2) = z + z**3 P(z)/Q(z). + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE 0.5, 2.0 150000 8.71e-20 2.75e-20 + * IEEE exp(+-10000) 100000 5.39e-20 2.34e-20 + * + * In the tests over the interval exp(+-10000), the logarithms + * of the random arguments were uniformly distributed over + * [-10000, +10000]. + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double logl(long double x) +{ + return log(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 2.32e-20 + */ +static const long double P[] = { + 4.5270000862445199635215E-5L, + 4.9854102823193375972212E-1L, + 6.5787325942061044846969E0L, + 2.9911919328553073277375E1L, + 6.0949667980987787057556E1L, + 5.7112963590585538103336E1L, + 2.0039553499201281259648E1L, +}; +static const long double Q[] = { +/* 1.0000000000000000000000E0,*/ + 1.5062909083469192043167E1L, + 8.3047565967967209469434E1L, + 2.2176239823732856465394E2L, + 3.0909872225312059774938E2L, + 2.1642788614495947685003E2L, + 6.0118660497603843919306E1L, +}; + +/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), + * where z = 2(x-1)/(x+1) + * 1/sqrt(2) <= x < sqrt(2) + * Theoretical peak relative error = 6.16e-22 + */ +static const long double R[4] = { + 1.9757429581415468984296E-3L, +-7.1990767473014147232598E-1L, + 1.0777257190312272158094E1L, +-3.5717684488096787370998E1L, +}; +static const long double S[4] = { +/* 1.00000000000000000000E0L,*/ +-2.6201045551331104417768E1L, + 1.9361891836232102174846E2L, +-4.2861221385716144629696E2L, +}; +static const long double C1 = 6.9314575195312500000000E-1L; +static const long double C2 = 1.4286068203094172321215E-6L; + +#define SQRTH 0.70710678118654752440L + +long double logl(long double x) +{ + long double y, z; + int e; + + if (isnan(x)) + return x; + if (x == INFINITY) + return x; + if (x <= 0.0) { + if (x == 0.0) + return -1/(x*x); /* -inf with divbyzero */ + return 0/0.0f; /* nan with invalid */ + } + + /* separate mantissa from exponent */ + /* Note, frexp is used so that denormal numbers + * will be handled properly. + */ + x = frexpl(x, &e); + + /* logarithm using log(x) = z + z**3 P(z)/Q(z), + * where z = 2(x-1)/(x+1) + */ + if (e > 2 || e < -2) { + if (x < SQRTH) { /* 2(2x-1)/(2x+1) */ + e -= 1; + z = x - 0.5; + y = 0.5 * z + 0.5; + } else { /* 2 (x-1)/(x+1) */ + z = x - 0.5; + z -= 0.5; + y = 0.5 * x + 0.5; + } + x = z / y; + z = x*x; + z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3)); + z = z + e * C2; + z = z + x; + z = z + e * C1; + return z; + } + + /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */ + if (x < SQRTH) { + e -= 1; + x = 2.0*x - 1.0; + } else { + x = x - 1.0; + } + z = x*x; + y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6)); + y = y + e * C2; + z = y - 0.5*z; + /* Note, the sum of above terms does not exceed x/4, + * so it contributes at most about 1/4 lsb to the error. + */ + z = z + x; + z = z + e * C1; /* This sum has an error of 1/2 lsb. */ + return z; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double logl(long double x) +{ + return log(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/lrint.c b/vendor/modernc.org/libc/musl/src/math/lrint.c new file mode 100644 index 000000000..ddee7a0d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lrint.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include "libm.h" + +/* +If the result cannot be represented (overflow, nan), then +lrint raises the invalid exception. + +Otherwise if the input was not an integer then the inexact +exception is raised. + +C99 is a bit vague about whether inexact exception is +allowed to be raised when invalid is raised. +(F.9 explicitly allows spurious inexact exceptions, F.9.6.5 +does not make it clear if that rule applies to lrint, but +IEEE 754r 7.8 seems to forbid spurious inexact exception in +the ineger conversion functions) + +So we try to make sure that no spurious inexact exception is +raised in case of an overflow. + +If the bit size of long > precision of double, then there +cannot be inexact rounding in case the result overflows, +otherwise LONG_MAX and LONG_MIN can be represented exactly +as a double. +*/ + +#if LONG_MAX < 1U<<53 && defined(FE_INEXACT) +#include +#include +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +#ifdef __GNUC__ +/* avoid stack frame in lrint */ +__attribute__((noinline)) +#endif +static long lrint_slow(double x) +{ + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); + x = rint(x); + if (!e && (x > LONG_MAX || x < LONG_MIN)) + feclearexcept(FE_INEXACT); + /* conversion */ + return x; +} + +long lrint(double x) +{ + uint32_t abstop = asuint64(x)>>32 & 0x7fffffff; + uint64_t sign = asuint64(x) & (1ULL << 63); + + if (abstop < 0x41dfffff) { + /* |x| < 0x7ffffc00, no overflow */ + double_t toint = asdouble(asuint64(1/EPS) | sign); + double_t y = x + toint - toint; + return (long)y; + } + return lrint_slow(x); +} +#else +long lrint(double x) +{ + return rint(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/lrintf.c b/vendor/modernc.org/libc/musl/src/math/lrintf.c new file mode 100644 index 000000000..ca0b6a46a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lrintf.c @@ -0,0 +1,8 @@ +#include + +/* uses LONG_MAX > 2^24, see comments in lrint.c */ + +long lrintf(float x) +{ + return rintf(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lrintl.c b/vendor/modernc.org/libc/musl/src/math/lrintl.c new file mode 100644 index 000000000..b2a8106d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lrintl.c @@ -0,0 +1,36 @@ +#include +#include +#include "libm.h" + + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long lrintl(long double x) +{ + return lrint(x); +} +#elif defined(FE_INEXACT) +/* +see comments in lrint.c + +Note that if LONG_MAX == 0x7fffffffffffffff && LDBL_MANT_DIG == 64 +then x == 2**63 - 0.5 is the only input that overflows and +raises inexact (with tonearest or upward rounding mode) +*/ +long lrintl(long double x) +{ + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); + x = rintl(x); + if (!e && (x > LONG_MAX || x < LONG_MIN)) + feclearexcept(FE_INEXACT); + /* conversion */ + return x; +} +#else +long lrintl(long double x) +{ + return rintl(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/lround.c b/vendor/modernc.org/libc/musl/src/math/lround.c new file mode 100644 index 000000000..b8b795470 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lround.c @@ -0,0 +1,6 @@ +#include + +long lround(double x) +{ + return round(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lroundf.c b/vendor/modernc.org/libc/musl/src/math/lroundf.c new file mode 100644 index 000000000..c4707e7db --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lroundf.c @@ -0,0 +1,6 @@ +#include + +long lroundf(float x) +{ + return roundf(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/lroundl.c b/vendor/modernc.org/libc/musl/src/math/lroundl.c new file mode 100644 index 000000000..094fdf648 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/lroundl.c @@ -0,0 +1,6 @@ +#include + +long lroundl(long double x) +{ + return roundl(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/m68k/sqrtl.c b/vendor/modernc.org/libc/musl/src/math/m68k/sqrtl.c new file mode 100644 index 000000000..b1c303c7e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/m68k/sqrtl.c @@ -0,0 +1,15 @@ +#include + +#if __HAVE_68881__ + +long double sqrtl(long double x) +{ + __asm__ ("fsqrt.x %1,%0" : "=f"(x) : "fm"(x)); + return x; +} + +#else + +#include "../sqrtl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/mips/fabs.c b/vendor/modernc.org/libc/musl/src/math/mips/fabs.c new file mode 100644 index 000000000..0a5aa3b1d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/mips/fabs.c @@ -0,0 +1,16 @@ +#if !defined(__mips_soft_float) && defined(__mips_abs2008) + +#include + +double fabs(double x) +{ + double r; + __asm__("abs.d %0,%1" : "=f"(r) : "f"(x)); + return r; +} + +#else + +#include "../fabs.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/mips/fabsf.c b/vendor/modernc.org/libc/musl/src/math/mips/fabsf.c new file mode 100644 index 000000000..35307be6a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/mips/fabsf.c @@ -0,0 +1,16 @@ +#if !defined(__mips_soft_float) && defined(__mips_abs2008) + +#include + +float fabsf(float x) +{ + float r; + __asm__("abs.s %0,%1" : "=f"(r) : "f"(x)); + return r; +} + +#else + +#include "../fabsf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/mips/sqrt.c b/vendor/modernc.org/libc/musl/src/math/mips/sqrt.c new file mode 100644 index 000000000..595c9dbc3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/mips/sqrt.c @@ -0,0 +1,16 @@ +#if !defined(__mips_soft_float) && __mips >= 3 + +#include + +double sqrt(double x) +{ + double r; + __asm__("sqrt.d %0,%1" : "=f"(r) : "f"(x)); + return r; +} + +#else + +#include "../sqrt.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/mips/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/mips/sqrtf.c new file mode 100644 index 000000000..84090d2d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/mips/sqrtf.c @@ -0,0 +1,16 @@ +#if !defined(__mips_soft_float) && __mips >= 2 + +#include + +float sqrtf(float x) +{ + float r; + __asm__("sqrt.s %0,%1" : "=f"(r) : "f"(x)); + return r; +} + +#else + +#include "../sqrtf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/modf.c b/vendor/modernc.org/libc/musl/src/math/modf.c new file mode 100644 index 000000000..1c8a1db90 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/modf.c @@ -0,0 +1,34 @@ +#include "libm.h" + +double modf(double x, double *iptr) +{ + union {double f; uint64_t i;} u = {x}; + uint64_t mask; + int e = (int)(u.i>>52 & 0x7ff) - 0x3ff; + + /* no fractional part */ + if (e >= 52) { + *iptr = x; + if (e == 0x400 && u.i<<12 != 0) /* nan */ + return x; + u.i &= 1ULL<<63; + return u.f; + } + + /* no integral part*/ + if (e < 0) { + u.i &= 1ULL<<63; + *iptr = u.f; + return x; + } + + mask = -1ULL>>12>>e; + if ((u.i & mask) == 0) { + *iptr = x; + u.i &= 1ULL<<63; + return u.f; + } + u.i &= ~mask; + *iptr = u.f; + return x - u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/modff.c b/vendor/modernc.org/libc/musl/src/math/modff.c new file mode 100644 index 000000000..639514eff --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/modff.c @@ -0,0 +1,34 @@ +#include "libm.h" + +float modff(float x, float *iptr) +{ + union {float f; uint32_t i;} u = {x}; + uint32_t mask; + int e = (int)(u.i>>23 & 0xff) - 0x7f; + + /* no fractional part */ + if (e >= 23) { + *iptr = x; + if (e == 0x80 && u.i<<9 != 0) { /* nan */ + return x; + } + u.i &= 0x80000000; + return u.f; + } + /* no integral part */ + if (e < 0) { + u.i &= 0x80000000; + *iptr = u.f; + return x; + } + + mask = 0x007fffff>>e; + if ((u.i & mask) == 0) { + *iptr = x; + u.i &= 0x80000000; + return u.f; + } + u.i &= ~mask; + *iptr = u.f; + return x - u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/modfl.c b/vendor/modernc.org/libc/musl/src/math/modfl.c new file mode 100644 index 000000000..a47b1924f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/modfl.c @@ -0,0 +1,53 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double modfl(long double x, long double *iptr) +{ + double d; + long double r; + + r = modf(x, &d); + *iptr = d; + return r; +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double modfl(long double x, long double *iptr) +{ + union ldshape u = {x}; + int e = (u.i.se & 0x7fff) - 0x3fff; + int s = u.i.se >> 15; + long double absx; + long double y; + + /* no fractional part */ + if (e >= LDBL_MANT_DIG-1) { + *iptr = x; + if (isnan(x)) + return x; + return s ? -0.0 : 0.0; + } + + /* no integral part*/ + if (e < 0) { + *iptr = s ? -0.0 : 0.0; + return x; + } + + /* raises spurious inexact */ + absx = s ? -x : x; + y = absx + toint - toint - absx; + if (y == 0) { + *iptr = x; + return s ? -0.0 : 0.0; + } + if (y > 0) + y -= 1; + if (s) + y = -y; + *iptr = x + y; + return -y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/nan.c b/vendor/modernc.org/libc/musl/src/math/nan.c new file mode 100644 index 000000000..9e0826c77 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nan.c @@ -0,0 +1,6 @@ +#include + +double nan(const char *s) +{ + return NAN; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nanf.c b/vendor/modernc.org/libc/musl/src/math/nanf.c new file mode 100644 index 000000000..752ce5463 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nanf.c @@ -0,0 +1,6 @@ +#include + +float nanf(const char *s) +{ + return NAN; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nanl.c b/vendor/modernc.org/libc/musl/src/math/nanl.c new file mode 100644 index 000000000..969af5641 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nanl.c @@ -0,0 +1,6 @@ +#include + +long double nanl(const char *s) +{ + return NAN; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nearbyint.c b/vendor/modernc.org/libc/musl/src/math/nearbyint.c new file mode 100644 index 000000000..f4e8aac4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nearbyint.c @@ -0,0 +1,20 @@ +#include +#include + +/* nearbyint is the same as rint, but it must not raise the inexact exception */ + +double nearbyint(double x) +{ +#ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); +#endif + x = rint(x); +#ifdef FE_INEXACT + if (!e) + feclearexcept(FE_INEXACT); +#endif + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nearbyintf.c b/vendor/modernc.org/libc/musl/src/math/nearbyintf.c new file mode 100644 index 000000000..092e9ffae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nearbyintf.c @@ -0,0 +1,18 @@ +#include +#include + +float nearbyintf(float x) +{ +#ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); +#endif + x = rintf(x); +#ifdef FE_INEXACT + if (!e) + feclearexcept(FE_INEXACT); +#endif + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nearbyintl.c b/vendor/modernc.org/libc/musl/src/math/nearbyintl.c new file mode 100644 index 000000000..82852492f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nearbyintl.c @@ -0,0 +1,26 @@ +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double nearbyintl(long double x) +{ + return nearbyint(x); +} +#else +#include +long double nearbyintl(long double x) +{ +#ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON + int e; + + e = fetestexcept(FE_INEXACT); +#endif + x = rintl(x); +#ifdef FE_INEXACT + if (!e) + feclearexcept(FE_INEXACT); +#endif + return x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/nextafter.c b/vendor/modernc.org/libc/musl/src/math/nextafter.c new file mode 100644 index 000000000..ab5795a47 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nextafter.c @@ -0,0 +1,31 @@ +#include "libm.h" + +double nextafter(double x, double y) +{ + union {double f; uint64_t i;} ux={x}, uy={y}; + uint64_t ax, ay; + int e; + + if (isnan(x) || isnan(y)) + return x + y; + if (ux.i == uy.i) + return y; + ax = ux.i & -1ULL/2; + ay = uy.i & -1ULL/2; + if (ax == 0) { + if (ay == 0) + return y; + ux.i = (uy.i & 1ULL<<63) | 1; + } else if (ax > ay || ((ux.i ^ uy.i) & 1ULL<<63)) + ux.i--; + else + ux.i++; + e = ux.i >> 52 & 0x7ff; + /* raise overflow if ux.f is infinite and x is finite */ + if (e == 0x7ff) + FORCE_EVAL(x+x); + /* raise underflow if ux.f is subnormal or zero */ + if (e == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nextafterf.c b/vendor/modernc.org/libc/musl/src/math/nextafterf.c new file mode 100644 index 000000000..75a09f7d1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nextafterf.c @@ -0,0 +1,30 @@ +#include "libm.h" + +float nextafterf(float x, float y) +{ + union {float f; uint32_t i;} ux={x}, uy={y}; + uint32_t ax, ay, e; + + if (isnan(x) || isnan(y)) + return x + y; + if (ux.i == uy.i) + return y; + ax = ux.i & 0x7fffffff; + ay = uy.i & 0x7fffffff; + if (ax == 0) { + if (ay == 0) + return y; + ux.i = (uy.i & 0x80000000) | 1; + } else if (ax > ay || ((ux.i ^ uy.i) & 0x80000000)) + ux.i--; + else + ux.i++; + e = ux.i & 0x7f800000; + /* raise overflow if ux.f is infinite and x is finite */ + if (e == 0x7f800000) + FORCE_EVAL(x+x); + /* raise underflow if ux.f is subnormal or zero */ + if (e == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nextafterl.c b/vendor/modernc.org/libc/musl/src/math/nextafterl.c new file mode 100644 index 000000000..37e858fb4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nextafterl.c @@ -0,0 +1,75 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double nextafterl(long double x, long double y) +{ + return nextafter(x, y); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +long double nextafterl(long double x, long double y) +{ + union ldshape ux, uy; + + if (isnan(x) || isnan(y)) + return x + y; + if (x == y) + return y; + ux.f = x; + if (x == 0) { + uy.f = y; + ux.i.m = 1; + ux.i.se = uy.i.se & 0x8000; + } else if ((x < y) == !(ux.i.se & 0x8000)) { + ux.i.m++; + if (ux.i.m << 1 == 0) { + ux.i.m = 1ULL << 63; + ux.i.se++; + } + } else { + if (ux.i.m << 1 == 0) { + ux.i.se--; + if (ux.i.se) + ux.i.m = 0; + } + ux.i.m--; + } + /* raise overflow if ux is infinite and x is finite */ + if ((ux.i.se & 0x7fff) == 0x7fff) + return x + x; + /* raise underflow if ux is subnormal or zero */ + if ((ux.i.se & 0x7fff) == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +long double nextafterl(long double x, long double y) +{ + union ldshape ux, uy; + + if (isnan(x) || isnan(y)) + return x + y; + if (x == y) + return y; + ux.f = x; + if (x == 0) { + uy.f = y; + ux.i.lo = 1; + ux.i.se = uy.i.se & 0x8000; + } else if ((x < y) == !(ux.i.se & 0x8000)) { + ux.i2.lo++; + if (ux.i2.lo == 0) + ux.i2.hi++; + } else { + if (ux.i2.lo == 0) + ux.i2.hi--; + ux.i2.lo--; + } + /* raise overflow if ux is infinite and x is finite */ + if ((ux.i.se & 0x7fff) == 0x7fff) + return x + x; + /* raise underflow if ux is subnormal or zero */ + if ((ux.i.se & 0x7fff) == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/nexttoward.c b/vendor/modernc.org/libc/musl/src/math/nexttoward.c new file mode 100644 index 000000000..827ee5c3c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nexttoward.c @@ -0,0 +1,42 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +double nexttoward(double x, long double y) +{ + return nextafter(x, y); +} +#else +double nexttoward(double x, long double y) +{ + union {double f; uint64_t i;} ux = {x}; + int e; + + if (isnan(x) || isnan(y)) + return x + y; + if (x == y) + return y; + if (x == 0) { + ux.i = 1; + if (signbit(y)) + ux.i |= 1ULL<<63; + } else if (x < y) { + if (signbit(x)) + ux.i--; + else + ux.i++; + } else { + if (signbit(x)) + ux.i++; + else + ux.i--; + } + e = ux.i>>52 & 0x7ff; + /* raise overflow if ux.f is infinite and x is finite */ + if (e == 0x7ff) + FORCE_EVAL(x+x); + /* raise underflow if ux.f is subnormal or zero */ + if (e == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/nexttowardf.c b/vendor/modernc.org/libc/musl/src/math/nexttowardf.c new file mode 100644 index 000000000..bbf172f9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nexttowardf.c @@ -0,0 +1,35 @@ +#include "libm.h" + +float nexttowardf(float x, long double y) +{ + union {float f; uint32_t i;} ux = {x}; + uint32_t e; + + if (isnan(x) || isnan(y)) + return x + y; + if (x == y) + return y; + if (x == 0) { + ux.i = 1; + if (signbit(y)) + ux.i |= 0x80000000; + } else if (x < y) { + if (signbit(x)) + ux.i--; + else + ux.i++; + } else { + if (signbit(x)) + ux.i++; + else + ux.i--; + } + e = ux.i & 0x7f800000; + /* raise overflow if ux.f is infinite and x is finite */ + if (e == 0x7f800000) + FORCE_EVAL(x+x); + /* raise underflow if ux.f is subnormal or zero */ + if (e == 0) + FORCE_EVAL(x*x + ux.f*ux.f); + return ux.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/nexttowardl.c b/vendor/modernc.org/libc/musl/src/math/nexttowardl.c new file mode 100644 index 000000000..67a634039 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/nexttowardl.c @@ -0,0 +1,6 @@ +#include + +long double nexttowardl(long double x, long double y) +{ + return nextafterl(x, y); +} diff --git a/vendor/modernc.org/libc/musl/src/math/pow.c b/vendor/modernc.org/libc/musl/src/math/pow.c new file mode 100644 index 000000000..694c2ef64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/pow.c @@ -0,0 +1,343 @@ +/* + * Double-precision x^y function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp_data.h" +#include "pow_data.h" + +/* +Worst-case error: 0.54 ULP (~= ulperr_exp + 1024*Ln2*relerr_log*2^53) +relerr_log: 1.3 * 2^-68 (Relative error of log, 1.5 * 2^-68 without fma) +ulperr_exp: 0.509 ULP (ULP error of exp, 0.511 ULP without fma) +*/ + +#define T __pow_log_data.tab +#define A __pow_log_data.poly +#define Ln2hi __pow_log_data.ln2hi +#define Ln2lo __pow_log_data.ln2lo +#define N (1 << POW_LOG_TABLE_BITS) +#define OFF 0x3fe6955500000000 + +/* Top 12 bits of a double (sign and exponent bits). */ +static inline uint32_t top12(double x) +{ + return asuint64(x) >> 52; +} + +/* Compute y+TAIL = log(x) where the rounded result is y and TAIL has about + additional 15 bits precision. IX is the bit representation of x, but + normalized in the subnormal range using the sign bit for the exponent. */ +static inline double_t log_inline(uint64_t ix, double_t *tail) +{ + /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */ + double_t z, r, y, invc, logc, logctail, kd, hi, t1, t2, lo, lo1, lo2, p; + uint64_t iz, tmp; + int k, i; + + /* x = 2^k z; where z is in range [OFF,2*OFF) and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (52 - POW_LOG_TABLE_BITS)) % N; + k = (int64_t)tmp >> 52; /* arithmetic shift */ + iz = ix - (tmp & 0xfffULL << 52); + z = asdouble(iz); + kd = (double_t)k; + + /* log(x) = k*Ln2 + log(c) + log1p(z/c-1). */ + invc = T[i].invc; + logc = T[i].logc; + logctail = T[i].logctail; + + /* Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and + |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible. */ +#if __FP_FAST_FMA + r = __builtin_fma(z, invc, -1.0); +#else + /* Split z such that rhi, rlo and rhi*rhi are exact and |rlo| <= |r|. */ + double_t zhi = asdouble((iz + (1ULL << 31)) & (-1ULL << 32)); + double_t zlo = z - zhi; + double_t rhi = zhi * invc - 1.0; + double_t rlo = zlo * invc; + r = rhi + rlo; +#endif + + /* k*Ln2 + log(c) + r. */ + t1 = kd * Ln2hi + logc; + t2 = t1 + r; + lo1 = kd * Ln2lo + logctail; + lo2 = t1 - t2 + r; + + /* Evaluation is optimized assuming superscalar pipelined execution. */ + double_t ar, ar2, ar3, lo3, lo4; + ar = A[0] * r; /* A[0] = -0.5. */ + ar2 = r * ar; + ar3 = r * ar2; + /* k*Ln2 + log(c) + r + A[0]*r*r. */ +#if __FP_FAST_FMA + hi = t2 + ar2; + lo3 = __builtin_fma(ar, r, -ar2); + lo4 = t2 - hi + ar2; +#else + double_t arhi = A[0] * rhi; + double_t arhi2 = rhi * arhi; + hi = t2 + arhi2; + lo3 = rlo * (ar + arhi); + lo4 = t2 - hi + arhi2; +#endif + /* p = log1p(r) - r - A[0]*r*r. */ + p = (ar3 * (A[1] + r * A[2] + + ar2 * (A[3] + r * A[4] + ar2 * (A[5] + r * A[6])))); + lo = lo1 + lo2 + lo3 + lo4 + p; + y = hi + lo; + *tail = hi - y + lo; + return y; +} + +#undef N +#undef T +#define N (1 << EXP_TABLE_BITS) +#define InvLn2N __exp_data.invln2N +#define NegLn2hiN __exp_data.negln2hiN +#define NegLn2loN __exp_data.negln2loN +#define Shift __exp_data.shift +#define T __exp_data.tab +#define C2 __exp_data.poly[5 - EXP_POLY_ORDER] +#define C3 __exp_data.poly[6 - EXP_POLY_ORDER] +#define C4 __exp_data.poly[7 - EXP_POLY_ORDER] +#define C5 __exp_data.poly[8 - EXP_POLY_ORDER] +#define C6 __exp_data.poly[9 - EXP_POLY_ORDER] + +/* Handle cases that may overflow or underflow when computing the result that + is scale*(1+TMP) without intermediate rounding. The bit representation of + scale is in SBITS, however it has a computed exponent that may have + overflown into the sign bit so that needs to be adjusted before using it as + a double. (int32_t)KI is the k used in the argument reduction and exponent + adjustment of scale, positive k here means the result may overflow and + negative k means the result may underflow. */ +static inline double specialcase(double_t tmp, uint64_t sbits, uint64_t ki) +{ + double_t scale, y; + + if ((ki & 0x80000000) == 0) { + /* k > 0, the exponent of scale might have overflowed by <= 460. */ + sbits -= 1009ull << 52; + scale = asdouble(sbits); + y = 0x1p1009 * (scale + scale * tmp); + return eval_as_double(y); + } + /* k < 0, need special care in the subnormal range. */ + sbits += 1022ull << 52; + /* Note: sbits is signed scale. */ + scale = asdouble(sbits); + y = scale + scale * tmp; + if (fabs(y) < 1.0) { + /* Round y to the right precision before scaling it into the subnormal + range to avoid double rounding that can cause 0.5+E/2 ulp error where + E is the worst-case ulp error outside the subnormal range. So this + is only useful if the goal is better than 1 ulp worst-case error. */ + double_t hi, lo, one = 1.0; + if (y < 0.0) + one = -1.0; + lo = scale - y + scale * tmp; + hi = one + y; + lo = one - hi + y + lo; + y = eval_as_double(hi + lo) - one; + /* Fix the sign of 0. */ + if (y == 0.0) + y = asdouble(sbits & 0x8000000000000000); + /* The underflow exception needs to be signaled explicitly. */ + fp_force_eval(fp_barrier(0x1p-1022) * 0x1p-1022); + } + y = 0x1p-1022 * y; + return eval_as_double(y); +} + +#define SIGN_BIAS (0x800 << EXP_TABLE_BITS) + +/* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|. + The sign_bias argument is SIGN_BIAS or 0 and sets the sign to -1 or 1. */ +static inline double exp_inline(double_t x, double_t xtail, uint32_t sign_bias) +{ + uint32_t abstop; + uint64_t ki, idx, top, sbits; + /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */ + double_t kd, z, r, r2, scale, tail, tmp; + + abstop = top12(x) & 0x7ff; + if (predict_false(abstop - top12(0x1p-54) >= + top12(512.0) - top12(0x1p-54))) { + if (abstop - top12(0x1p-54) >= 0x80000000) { + /* Avoid spurious underflow for tiny x. */ + /* Note: 0 is common input. */ + double_t one = WANT_ROUNDING ? 1.0 + x : 1.0; + return sign_bias ? -one : one; + } + if (abstop >= top12(1024.0)) { + /* Note: inf and nan are already handled. */ + if (asuint64(x) >> 63) + return __math_uflow(sign_bias); + else + return __math_oflow(sign_bias); + } + /* Large x is special cased below. */ + abstop = 0; + } + + /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]. */ + /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]. */ + z = InvLn2N * x; +#if TOINT_INTRINSICS + kd = roundtoint(z); + ki = converttoint(z); +#elif EXP_USE_TOINT_NARROW + /* z - kd is in [-0.5-2^-16, 0.5] in all rounding modes. */ + kd = eval_as_double(z + Shift); + ki = asuint64(kd) >> 16; + kd = (double_t)(int32_t)ki; +#else + /* z - kd is in [-1, 1] in non-nearest rounding modes. */ + kd = eval_as_double(z + Shift); + ki = asuint64(kd); + kd -= Shift; +#endif + r = x + kd * NegLn2hiN + kd * NegLn2loN; + /* The code assumes 2^-200 < |xtail| < 2^-8/N. */ + r += xtail; + /* 2^(k/N) ~= scale * (1 + tail). */ + idx = 2 * (ki % N); + top = (ki + sign_bias) << (52 - EXP_TABLE_BITS); + tail = asdouble(T[idx]); + /* This is only a valid scale when -1023*N < k < 1024*N. */ + sbits = T[idx + 1] + top; + /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1). */ + /* Evaluation is optimized assuming superscalar pipelined execution. */ + r2 = r * r; + /* Without fma the worst case error is 0.25/N ulp larger. */ + /* Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp. */ + tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5); + if (predict_false(abstop == 0)) + return specialcase(tmp, sbits, ki); + scale = asdouble(sbits); + /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there + is no spurious underflow here even without fma. */ + return eval_as_double(scale + scale * tmp); +} + +/* Returns 0 if not int, 1 if odd int, 2 if even int. The argument is + the bit representation of a non-zero finite floating-point value. */ +static inline int checkint(uint64_t iy) +{ + int e = iy >> 52 & 0x7ff; + if (e < 0x3ff) + return 0; + if (e > 0x3ff + 52) + return 2; + if (iy & ((1ULL << (0x3ff + 52 - e)) - 1)) + return 0; + if (iy & (1ULL << (0x3ff + 52 - e))) + return 1; + return 2; +} + +/* Returns 1 if input is the bit representation of 0, infinity or nan. */ +static inline int zeroinfnan(uint64_t i) +{ + return 2 * i - 1 >= 2 * asuint64(INFINITY) - 1; +} + +double pow(double x, double y) +{ + uint32_t sign_bias = 0; + uint64_t ix, iy; + uint32_t topx, topy; + + ix = asuint64(x); + iy = asuint64(y); + topx = top12(x); + topy = top12(y); + if (predict_false(topx - 0x001 >= 0x7ff - 0x001 || + (topy & 0x7ff) - 0x3be >= 0x43e - 0x3be)) { + /* Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0 + and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1. */ + /* Special cases: (x < 0x1p-126 or inf or nan) or + (|y| < 0x1p-65 or |y| >= 0x1p63 or nan). */ + if (predict_false(zeroinfnan(iy))) { + if (2 * iy == 0) + return issignaling_inline(x) ? x + y : 1.0; + if (ix == asuint64(1.0)) + return issignaling_inline(y) ? x + y : 1.0; + if (2 * ix > 2 * asuint64(INFINITY) || + 2 * iy > 2 * asuint64(INFINITY)) + return x + y; + if (2 * ix == 2 * asuint64(1.0)) + return 1.0; + if ((2 * ix < 2 * asuint64(1.0)) == !(iy >> 63)) + return 0.0; /* |x|<1 && y==inf or |x|>1 && y==-inf. */ + return y * y; + } + if (predict_false(zeroinfnan(ix))) { + double_t x2 = x * x; + if (ix >> 63 && checkint(iy) == 1) + x2 = -x2; + /* Without the barrier some versions of clang hoist the 1/x2 and + thus division by zero exception can be signaled spuriously. */ + return iy >> 63 ? fp_barrier(1 / x2) : x2; + } + /* Here x and y are non-zero finite. */ + if (ix >> 63) { + /* Finite x < 0. */ + int yint = checkint(iy); + if (yint == 0) + return __math_invalid(x); + if (yint == 1) + sign_bias = SIGN_BIAS; + ix &= 0x7fffffffffffffff; + topx &= 0x7ff; + } + if ((topy & 0x7ff) - 0x3be >= 0x43e - 0x3be) { + /* Note: sign_bias == 0 here because y is not odd. */ + if (ix == asuint64(1.0)) + return 1.0; + if ((topy & 0x7ff) < 0x3be) { + /* |y| < 2^-65, x^y ~= 1 + y*log(x). */ + if (WANT_ROUNDING) + return ix > asuint64(1.0) ? 1.0 + y : + 1.0 - y; + else + return 1.0; + } + return (ix > asuint64(1.0)) == (topy < 0x800) ? + __math_oflow(0) : + __math_uflow(0); + } + if (topx == 0) { + /* Normalize subnormal x so exponent becomes negative. */ + ix = asuint64(x * 0x1p52); + ix &= 0x7fffffffffffffff; + ix -= 52ULL << 52; + } + } + + double_t lo; + double_t hi = log_inline(ix, &lo); + double_t ehi, elo; +#if __FP_FAST_FMA + ehi = y * hi; + elo = y * lo + __builtin_fma(y, hi, -ehi); +#else + double_t yhi = asdouble(iy & -1ULL << 27); + double_t ylo = y - yhi; + double_t lhi = asdouble(asuint64(hi) & -1ULL << 27); + double_t llo = hi - lhi + lo; + ehi = yhi * lhi; + elo = ylo * lhi + y * llo; /* |elo| < |ehi| * 2^-25. */ +#endif + return exp_inline(ehi, elo, sign_bias); +} diff --git a/vendor/modernc.org/libc/musl/src/math/pow_data.c b/vendor/modernc.org/libc/musl/src/math/pow_data.c new file mode 100644 index 000000000..81e760de1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/pow_data.c @@ -0,0 +1,180 @@ +/* + * Data for the log part of pow. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "pow_data.h" + +#define N (1 << POW_LOG_TABLE_BITS) + +const struct pow_log_data __pow_log_data = { +.ln2hi = 0x1.62e42fefa3800p-1, +.ln2lo = 0x1.ef35793c76730p-45, +.poly = { +// relative error: 0x1.11922ap-70 +// in -0x1.6bp-8 0x1.6bp-8 +// Coefficients are scaled to match the scaling during evaluation. +-0x1p-1, +0x1.555555555556p-2 * -2, +-0x1.0000000000006p-2 * -2, +0x1.999999959554ep-3 * 4, +-0x1.555555529a47ap-3 * 4, +0x1.2495b9b4845e9p-3 * -8, +-0x1.0002b8b263fc3p-3 * -8, +}, +/* Algorithm: + + x = 2^k z + log(x) = k ln2 + log(c) + log(z/c) + log(z/c) = poly(z/c - 1) + +where z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals +and z falls into the ith one, then table entries are computed as + + tab[i].invc = 1/c + tab[i].logc = round(0x1p43*log(c))/0x1p43 + tab[i].logctail = (double)(log(c) - logc) + +where c is chosen near the center of the subinterval such that 1/c has only a +few precision bits so z/c - 1 is exactly representible as double: + + 1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2 + +Note: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| < 0x1p-97, +the last few bits of logc are rounded away so k*ln2hi + logc has no rounding +error and the interval for z is selected such that near x == 1, where log(x) +is tiny, large cancellation error is avoided in logc + poly(z/c - 1). */ +.tab = { +#define A(a, b, c) {a, 0, b, c}, +A(0x1.6a00000000000p+0, -0x1.62c82f2b9c800p-2, 0x1.ab42428375680p-48) +A(0x1.6800000000000p+0, -0x1.5d1bdbf580800p-2, -0x1.ca508d8e0f720p-46) +A(0x1.6600000000000p+0, -0x1.5767717455800p-2, -0x1.362a4d5b6506dp-45) +A(0x1.6400000000000p+0, -0x1.51aad872df800p-2, -0x1.684e49eb067d5p-49) +A(0x1.6200000000000p+0, -0x1.4be5f95777800p-2, -0x1.41b6993293ee0p-47) +A(0x1.6000000000000p+0, -0x1.4618bc21c6000p-2, 0x1.3d82f484c84ccp-46) +A(0x1.5e00000000000p+0, -0x1.404308686a800p-2, 0x1.c42f3ed820b3ap-50) +A(0x1.5c00000000000p+0, -0x1.3a64c55694800p-2, 0x1.0b1c686519460p-45) +A(0x1.5a00000000000p+0, -0x1.347dd9a988000p-2, 0x1.5594dd4c58092p-45) +A(0x1.5800000000000p+0, -0x1.2e8e2bae12000p-2, 0x1.67b1e99b72bd8p-45) +A(0x1.5600000000000p+0, -0x1.2895a13de8800p-2, 0x1.5ca14b6cfb03fp-46) +A(0x1.5600000000000p+0, -0x1.2895a13de8800p-2, 0x1.5ca14b6cfb03fp-46) +A(0x1.5400000000000p+0, -0x1.22941fbcf7800p-2, -0x1.65a242853da76p-46) +A(0x1.5200000000000p+0, -0x1.1c898c1699800p-2, -0x1.fafbc68e75404p-46) +A(0x1.5000000000000p+0, -0x1.1675cababa800p-2, 0x1.f1fc63382a8f0p-46) +A(0x1.4e00000000000p+0, -0x1.1058bf9ae4800p-2, -0x1.6a8c4fd055a66p-45) +A(0x1.4c00000000000p+0, -0x1.0a324e2739000p-2, -0x1.c6bee7ef4030ep-47) +A(0x1.4a00000000000p+0, -0x1.0402594b4d000p-2, -0x1.036b89ef42d7fp-48) +A(0x1.4a00000000000p+0, -0x1.0402594b4d000p-2, -0x1.036b89ef42d7fp-48) +A(0x1.4800000000000p+0, -0x1.fb9186d5e4000p-3, 0x1.d572aab993c87p-47) +A(0x1.4600000000000p+0, -0x1.ef0adcbdc6000p-3, 0x1.b26b79c86af24p-45) +A(0x1.4400000000000p+0, -0x1.e27076e2af000p-3, -0x1.72f4f543fff10p-46) +A(0x1.4200000000000p+0, -0x1.d5c216b4fc000p-3, 0x1.1ba91bbca681bp-45) +A(0x1.4000000000000p+0, -0x1.c8ff7c79aa000p-3, 0x1.7794f689f8434p-45) +A(0x1.4000000000000p+0, -0x1.c8ff7c79aa000p-3, 0x1.7794f689f8434p-45) +A(0x1.3e00000000000p+0, -0x1.bc286742d9000p-3, 0x1.94eb0318bb78fp-46) +A(0x1.3c00000000000p+0, -0x1.af3c94e80c000p-3, 0x1.a4e633fcd9066p-52) +A(0x1.3a00000000000p+0, -0x1.a23bc1fe2b000p-3, -0x1.58c64dc46c1eap-45) +A(0x1.3a00000000000p+0, -0x1.a23bc1fe2b000p-3, -0x1.58c64dc46c1eap-45) +A(0x1.3800000000000p+0, -0x1.9525a9cf45000p-3, -0x1.ad1d904c1d4e3p-45) +A(0x1.3600000000000p+0, -0x1.87fa06520d000p-3, 0x1.bbdbf7fdbfa09p-45) +A(0x1.3400000000000p+0, -0x1.7ab890210e000p-3, 0x1.bdb9072534a58p-45) +A(0x1.3400000000000p+0, -0x1.7ab890210e000p-3, 0x1.bdb9072534a58p-45) +A(0x1.3200000000000p+0, -0x1.6d60fe719d000p-3, -0x1.0e46aa3b2e266p-46) +A(0x1.3000000000000p+0, -0x1.5ff3070a79000p-3, -0x1.e9e439f105039p-46) +A(0x1.3000000000000p+0, -0x1.5ff3070a79000p-3, -0x1.e9e439f105039p-46) +A(0x1.2e00000000000p+0, -0x1.526e5e3a1b000p-3, -0x1.0de8b90075b8fp-45) +A(0x1.2c00000000000p+0, -0x1.44d2b6ccb8000p-3, 0x1.70cc16135783cp-46) +A(0x1.2c00000000000p+0, -0x1.44d2b6ccb8000p-3, 0x1.70cc16135783cp-46) +A(0x1.2a00000000000p+0, -0x1.371fc201e9000p-3, 0x1.178864d27543ap-48) +A(0x1.2800000000000p+0, -0x1.29552f81ff000p-3, -0x1.48d301771c408p-45) +A(0x1.2600000000000p+0, -0x1.1b72ad52f6000p-3, -0x1.e80a41811a396p-45) +A(0x1.2600000000000p+0, -0x1.1b72ad52f6000p-3, -0x1.e80a41811a396p-45) +A(0x1.2400000000000p+0, -0x1.0d77e7cd09000p-3, 0x1.a699688e85bf4p-47) +A(0x1.2400000000000p+0, -0x1.0d77e7cd09000p-3, 0x1.a699688e85bf4p-47) +A(0x1.2200000000000p+0, -0x1.fec9131dbe000p-4, -0x1.575545ca333f2p-45) +A(0x1.2000000000000p+0, -0x1.e27076e2b0000p-4, 0x1.a342c2af0003cp-45) +A(0x1.2000000000000p+0, -0x1.e27076e2b0000p-4, 0x1.a342c2af0003cp-45) +A(0x1.1e00000000000p+0, -0x1.c5e548f5bc000p-4, -0x1.d0c57585fbe06p-46) +A(0x1.1c00000000000p+0, -0x1.a926d3a4ae000p-4, 0x1.53935e85baac8p-45) +A(0x1.1c00000000000p+0, -0x1.a926d3a4ae000p-4, 0x1.53935e85baac8p-45) +A(0x1.1a00000000000p+0, -0x1.8c345d631a000p-4, 0x1.37c294d2f5668p-46) +A(0x1.1a00000000000p+0, -0x1.8c345d631a000p-4, 0x1.37c294d2f5668p-46) +A(0x1.1800000000000p+0, -0x1.6f0d28ae56000p-4, -0x1.69737c93373dap-45) +A(0x1.1600000000000p+0, -0x1.51b073f062000p-4, 0x1.f025b61c65e57p-46) +A(0x1.1600000000000p+0, -0x1.51b073f062000p-4, 0x1.f025b61c65e57p-46) +A(0x1.1400000000000p+0, -0x1.341d7961be000p-4, 0x1.c5edaccf913dfp-45) +A(0x1.1400000000000p+0, -0x1.341d7961be000p-4, 0x1.c5edaccf913dfp-45) +A(0x1.1200000000000p+0, -0x1.16536eea38000p-4, 0x1.47c5e768fa309p-46) +A(0x1.1000000000000p+0, -0x1.f0a30c0118000p-5, 0x1.d599e83368e91p-45) +A(0x1.1000000000000p+0, -0x1.f0a30c0118000p-5, 0x1.d599e83368e91p-45) +A(0x1.0e00000000000p+0, -0x1.b42dd71198000p-5, 0x1.c827ae5d6704cp-46) +A(0x1.0e00000000000p+0, -0x1.b42dd71198000p-5, 0x1.c827ae5d6704cp-46) +A(0x1.0c00000000000p+0, -0x1.77458f632c000p-5, -0x1.cfc4634f2a1eep-45) +A(0x1.0c00000000000p+0, -0x1.77458f632c000p-5, -0x1.cfc4634f2a1eep-45) +A(0x1.0a00000000000p+0, -0x1.39e87b9fec000p-5, 0x1.502b7f526feaap-48) +A(0x1.0a00000000000p+0, -0x1.39e87b9fec000p-5, 0x1.502b7f526feaap-48) +A(0x1.0800000000000p+0, -0x1.f829b0e780000p-6, -0x1.980267c7e09e4p-45) +A(0x1.0800000000000p+0, -0x1.f829b0e780000p-6, -0x1.980267c7e09e4p-45) +A(0x1.0600000000000p+0, -0x1.7b91b07d58000p-6, -0x1.88d5493faa639p-45) +A(0x1.0400000000000p+0, -0x1.fc0a8b0fc0000p-7, -0x1.f1e7cf6d3a69cp-50) +A(0x1.0400000000000p+0, -0x1.fc0a8b0fc0000p-7, -0x1.f1e7cf6d3a69cp-50) +A(0x1.0200000000000p+0, -0x1.fe02a6b100000p-8, -0x1.9e23f0dda40e4p-46) +A(0x1.0200000000000p+0, -0x1.fe02a6b100000p-8, -0x1.9e23f0dda40e4p-46) +A(0x1.0000000000000p+0, 0x0.0000000000000p+0, 0x0.0000000000000p+0) +A(0x1.0000000000000p+0, 0x0.0000000000000p+0, 0x0.0000000000000p+0) +A(0x1.fc00000000000p-1, 0x1.0101575890000p-7, -0x1.0c76b999d2be8p-46) +A(0x1.f800000000000p-1, 0x1.0205658938000p-6, -0x1.3dc5b06e2f7d2p-45) +A(0x1.f400000000000p-1, 0x1.8492528c90000p-6, -0x1.aa0ba325a0c34p-45) +A(0x1.f000000000000p-1, 0x1.0415d89e74000p-5, 0x1.111c05cf1d753p-47) +A(0x1.ec00000000000p-1, 0x1.466aed42e0000p-5, -0x1.c167375bdfd28p-45) +A(0x1.e800000000000p-1, 0x1.894aa149fc000p-5, -0x1.97995d05a267dp-46) +A(0x1.e400000000000p-1, 0x1.ccb73cdddc000p-5, -0x1.a68f247d82807p-46) +A(0x1.e200000000000p-1, 0x1.eea31c006c000p-5, -0x1.e113e4fc93b7bp-47) +A(0x1.de00000000000p-1, 0x1.1973bd1466000p-4, -0x1.5325d560d9e9bp-45) +A(0x1.da00000000000p-1, 0x1.3bdf5a7d1e000p-4, 0x1.cc85ea5db4ed7p-45) +A(0x1.d600000000000p-1, 0x1.5e95a4d97a000p-4, -0x1.c69063c5d1d1ep-45) +A(0x1.d400000000000p-1, 0x1.700d30aeac000p-4, 0x1.c1e8da99ded32p-49) +A(0x1.d000000000000p-1, 0x1.9335e5d594000p-4, 0x1.3115c3abd47dap-45) +A(0x1.cc00000000000p-1, 0x1.b6ac88dad6000p-4, -0x1.390802bf768e5p-46) +A(0x1.ca00000000000p-1, 0x1.c885801bc4000p-4, 0x1.646d1c65aacd3p-45) +A(0x1.c600000000000p-1, 0x1.ec739830a2000p-4, -0x1.dc068afe645e0p-45) +A(0x1.c400000000000p-1, 0x1.fe89139dbe000p-4, -0x1.534d64fa10afdp-45) +A(0x1.c000000000000p-1, 0x1.1178e8227e000p-3, 0x1.1ef78ce2d07f2p-45) +A(0x1.be00000000000p-1, 0x1.1aa2b7e23f000p-3, 0x1.ca78e44389934p-45) +A(0x1.ba00000000000p-1, 0x1.2d1610c868000p-3, 0x1.39d6ccb81b4a1p-47) +A(0x1.b800000000000p-1, 0x1.365fcb0159000p-3, 0x1.62fa8234b7289p-51) +A(0x1.b400000000000p-1, 0x1.4913d8333b000p-3, 0x1.5837954fdb678p-45) +A(0x1.b200000000000p-1, 0x1.527e5e4a1b000p-3, 0x1.633e8e5697dc7p-45) +A(0x1.ae00000000000p-1, 0x1.6574ebe8c1000p-3, 0x1.9cf8b2c3c2e78p-46) +A(0x1.ac00000000000p-1, 0x1.6f0128b757000p-3, -0x1.5118de59c21e1p-45) +A(0x1.aa00000000000p-1, 0x1.7898d85445000p-3, -0x1.c661070914305p-46) +A(0x1.a600000000000p-1, 0x1.8beafeb390000p-3, -0x1.73d54aae92cd1p-47) +A(0x1.a400000000000p-1, 0x1.95a5adcf70000p-3, 0x1.7f22858a0ff6fp-47) +A(0x1.a000000000000p-1, 0x1.a93ed3c8ae000p-3, -0x1.8724350562169p-45) +A(0x1.9e00000000000p-1, 0x1.b31d8575bd000p-3, -0x1.c358d4eace1aap-47) +A(0x1.9c00000000000p-1, 0x1.bd087383be000p-3, -0x1.d4bc4595412b6p-45) +A(0x1.9a00000000000p-1, 0x1.c6ffbc6f01000p-3, -0x1.1ec72c5962bd2p-48) +A(0x1.9600000000000p-1, 0x1.db13db0d49000p-3, -0x1.aff2af715b035p-45) +A(0x1.9400000000000p-1, 0x1.e530effe71000p-3, 0x1.212276041f430p-51) +A(0x1.9200000000000p-1, 0x1.ef5ade4dd0000p-3, -0x1.a211565bb8e11p-51) +A(0x1.9000000000000p-1, 0x1.f991c6cb3b000p-3, 0x1.bcbecca0cdf30p-46) +A(0x1.8c00000000000p-1, 0x1.07138604d5800p-2, 0x1.89cdb16ed4e91p-48) +A(0x1.8a00000000000p-1, 0x1.0c42d67616000p-2, 0x1.7188b163ceae9p-45) +A(0x1.8800000000000p-1, 0x1.1178e8227e800p-2, -0x1.c210e63a5f01cp-45) +A(0x1.8600000000000p-1, 0x1.16b5ccbacf800p-2, 0x1.b9acdf7a51681p-45) +A(0x1.8400000000000p-1, 0x1.1bf99635a6800p-2, 0x1.ca6ed5147bdb7p-45) +A(0x1.8200000000000p-1, 0x1.214456d0eb800p-2, 0x1.a87deba46baeap-47) +A(0x1.7e00000000000p-1, 0x1.2bef07cdc9000p-2, 0x1.a9cfa4a5004f4p-45) +A(0x1.7c00000000000p-1, 0x1.314f1e1d36000p-2, -0x1.8e27ad3213cb8p-45) +A(0x1.7a00000000000p-1, 0x1.36b6776be1000p-2, 0x1.16ecdb0f177c8p-46) +A(0x1.7800000000000p-1, 0x1.3c25277333000p-2, 0x1.83b54b606bd5cp-46) +A(0x1.7600000000000p-1, 0x1.419b423d5e800p-2, 0x1.8e436ec90e09dp-47) +A(0x1.7400000000000p-1, 0x1.4718dc271c800p-2, -0x1.f27ce0967d675p-45) +A(0x1.7200000000000p-1, 0x1.4c9e09e173000p-2, -0x1.e20891b0ad8a4p-45) +A(0x1.7000000000000p-1, 0x1.522ae0738a000p-2, 0x1.ebe708164c759p-45) +A(0x1.6e00000000000p-1, 0x1.57bf753c8d000p-2, 0x1.fadedee5d40efp-46) +A(0x1.6c00000000000p-1, 0x1.5d5bddf596000p-2, -0x1.a0b2a08a465dcp-47) +}, +}; diff --git a/vendor/modernc.org/libc/musl/src/math/pow_data.h b/vendor/modernc.org/libc/musl/src/math/pow_data.h new file mode 100644 index 000000000..5d609ae80 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/pow_data.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _POW_DATA_H +#define _POW_DATA_H + +#include + +#define POW_LOG_TABLE_BITS 7 +#define POW_LOG_POLY_ORDER 8 +extern hidden const struct pow_log_data { + double ln2hi; + double ln2lo; + double poly[POW_LOG_POLY_ORDER - 1]; /* First coefficient is 1. */ + /* Note: the pad field is unused, but allows slightly faster indexing. */ + struct { + double invc, pad, logc, logctail; + } tab[1 << POW_LOG_TABLE_BITS]; +} __pow_log_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/fabs.c b/vendor/modernc.org/libc/musl/src/math/powerpc/fabs.c new file mode 100644 index 000000000..0efc21ef8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/fabs.c @@ -0,0 +1,15 @@ +#include + +#if defined(_SOFT_FLOAT) || defined(BROKEN_PPC_D_ASM) + +#include "../fabs.c" + +#else + +double fabs(double x) +{ + __asm__ ("fabs %0, %1" : "=d"(x) : "d"(x)); + return x; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/fabsf.c b/vendor/modernc.org/libc/musl/src/math/powerpc/fabsf.c new file mode 100644 index 000000000..d88b5911c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/fabsf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _SOFT_FLOAT + +#include "../fabsf.c" + +#else + +float fabsf(float x) +{ + __asm__ ("fabs %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/fma.c b/vendor/modernc.org/libc/musl/src/math/powerpc/fma.c new file mode 100644 index 000000000..135c99035 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/fma.c @@ -0,0 +1,15 @@ +#include + +#if defined(_SOFT_FLOAT) || defined(BROKEN_PPC_D_ASM) + +#include "../fma.c" + +#else + +double fma(double x, double y, double z) +{ + __asm__("fmadd %0, %1, %2, %3" : "=d"(x) : "d"(x), "d"(y), "d"(z)); + return x; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/fmaf.c b/vendor/modernc.org/libc/musl/src/math/powerpc/fmaf.c new file mode 100644 index 000000000..a99a2a3ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/fmaf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _SOFT_FLOAT + +#include "../fmaf.c" + +#else + +float fmaf(float x, float y, float z) +{ + __asm__("fmadds %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z)); + return x; +} + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/sqrt.c b/vendor/modernc.org/libc/musl/src/math/powerpc/sqrt.c new file mode 100644 index 000000000..8718dbd0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/sqrt.c @@ -0,0 +1,15 @@ +#include + +#if !defined _SOFT_FLOAT && defined _ARCH_PPCSQ + +double sqrt(double x) +{ + __asm__ ("fsqrt %0, %1\n" : "=d" (x) : "d" (x)); + return x; +} + +#else + +#include "../sqrt.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/powerpc/sqrtf.c new file mode 100644 index 000000000..3431b672d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc/sqrtf.c @@ -0,0 +1,15 @@ +#include + +#if !defined _SOFT_FLOAT && defined _ARCH_PPCSQ + +float sqrtf(float x) +{ + __asm__ ("fsqrts %0, %1\n" : "=f" (x) : "f" (x)); + return x; +} + +#else + +#include "../sqrtf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/ceil.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/ceil.c new file mode 100644 index 000000000..4b0113366 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/ceil.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +double ceil(double x) +{ + __asm__ ("frip %0, %1" : "=d"(x) : "d"(x)); + return x; +} + +#else + +#include "../ceil.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/ceilf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/ceilf.c new file mode 100644 index 000000000..59ba39617 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/ceilf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +float ceilf(float x) +{ + __asm__ ("frip %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../ceilf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fabs.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fabs.c new file mode 100644 index 000000000..6123c7535 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fabs.c @@ -0,0 +1,7 @@ +#include + +double fabs(double x) +{ + __asm__ ("fabs %0, %1" : "=d"(x) : "d"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fabsf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fabsf.c new file mode 100644 index 000000000..e9e45643d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fabsf.c @@ -0,0 +1,7 @@ +#include + +float fabsf(float x) +{ + __asm__ ("fabs %0, %1" : "=f"(x) : "f"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/floor.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/floor.c new file mode 100644 index 000000000..4e6804449 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/floor.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +double floor(double x) +{ + __asm__ ("frim %0, %1" : "=d"(x) : "d"(x)); + return x; +} + +#else + +#include "../floor.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/floorf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/floorf.c new file mode 100644 index 000000000..e1031ef40 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/floorf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +float floorf(float x) +{ + __asm__ ("frim %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../floorf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fma.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fma.c new file mode 100644 index 000000000..5aebd1ac3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fma.c @@ -0,0 +1,7 @@ +#include + +double fma(double x, double y, double z) +{ + __asm__ ("fmadd %0, %1, %2, %3" : "=d"(x) : "d"(x), "d"(y), "d"(z)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaf.c new file mode 100644 index 000000000..c678fefec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaf.c @@ -0,0 +1,7 @@ +#include + +float fmaf(float x, float y, float z) +{ + __asm__ ("fmadds %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fmax.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmax.c new file mode 100644 index 000000000..992df7f12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmax.c @@ -0,0 +1,15 @@ +#include + +#ifdef __VSX__ + +double fmax(double x, double y) +{ + __asm__ ("xsmaxdp %x0, %x1, %x2" : "=ws"(x) : "ws"(x), "ws"(y)); + return x; +} + +#else + +#include "../fmax.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaxf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaxf.c new file mode 100644 index 000000000..345a234a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmaxf.c @@ -0,0 +1,15 @@ +#include + +#ifdef __VSX__ + +float fmaxf(float x, float y) +{ + __asm__ ("xsmaxdp %x0, %x1, %x2" : "=ww"(x) : "ww"(x), "ww"(y)); + return x; +} + +#else + +#include "../fmaxf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fmin.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmin.c new file mode 100644 index 000000000..adf71bad9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fmin.c @@ -0,0 +1,15 @@ +#include + +#ifdef __VSX__ + +double fmin(double x, double y) +{ + __asm__ ("xsmindp %x0, %x1, %x2" : "=ws"(x) : "ws"(x), "ws"(y)); + return x; +} + +#else + +#include "../fmin.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/fminf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/fminf.c new file mode 100644 index 000000000..faf0e47e9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/fminf.c @@ -0,0 +1,15 @@ +#include + +#ifdef __VSX__ + +float fminf(float x, float y) +{ + __asm__ ("xsmindp %x0, %x1, %x2" : "=ww"(x) : "ww"(x), "ww"(y)); + return x; +} + +#else + +#include "../fminf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/lrint.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/lrint.c new file mode 100644 index 000000000..4e4b2e00a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/lrint.c @@ -0,0 +1,16 @@ +#include + +#ifdef _ARCH_PWR5X + +long lrint(double x) +{ + long n; + __asm__ ("fctid %0, %1" : "=d"(n) : "d"(x)); + return n; +} + +#else + +#include "../lrint.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/lrintf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/lrintf.c new file mode 100644 index 000000000..9070fc03d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/lrintf.c @@ -0,0 +1,16 @@ +#include + +#ifdef _ARCH_PWR5X + +long lrintf(float x) +{ + long n; + __asm__ ("fctid %0, %1" : "=d"(n) : "f"(x)); + return n; +} + +#else + +#include "../lrintf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/lround.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/lround.c new file mode 100644 index 000000000..ee4d1143c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/lround.c @@ -0,0 +1,18 @@ +#include + +#ifdef __VSX__ + +long lround(double x) +{ + long n; + __asm__ ( + "xsrdpi %1, %1\n" + "fctid %0, %1\n" : "=d"(n), "+d"(x)); + return n; +} + +#else + +#include "../lround.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/lroundf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/lroundf.c new file mode 100644 index 000000000..033094ffb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/lroundf.c @@ -0,0 +1,18 @@ +#include + +#ifdef __VSX__ + +long lroundf(float x) +{ + long n; + __asm__ ( + "xsrdpi %1, %1\n" + "fctid %0, %1\n" : "=d"(n), "+f"(x)); + return n; +} + +#else + +#include "../lroundf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/round.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/round.c new file mode 100644 index 000000000..4b9318e09 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/round.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +double round(double x) +{ + __asm__ ("frin %0, %1" : "=d"(x) : "d"(x)); + return x; +} + +#else + +#include "../round.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/roundf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/roundf.c new file mode 100644 index 000000000..ae93f999a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/roundf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +float roundf(float x) +{ + __asm__ ("frin %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../roundf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrt.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrt.c new file mode 100644 index 000000000..13bb98d91 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrt.c @@ -0,0 +1,7 @@ +#include + +double sqrt(double x) +{ + __asm__ ("fsqrt %0, %1" : "=d"(x) : "d"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrtf.c new file mode 100644 index 000000000..b6ecb106b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/sqrtf.c @@ -0,0 +1,7 @@ +#include + +float sqrtf(float x) +{ + __asm__ ("fsqrts %0, %1" : "=f"(x) : "f"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/trunc.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/trunc.c new file mode 100644 index 000000000..57918548b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/trunc.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +double trunc(double x) +{ + __asm__ ("friz %0, %1" : "=d"(x) : "d"(x)); + return x; +} + +#else + +#include "../trunc.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powerpc64/truncf.c b/vendor/modernc.org/libc/musl/src/math/powerpc64/truncf.c new file mode 100644 index 000000000..94e638fb7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powerpc64/truncf.c @@ -0,0 +1,15 @@ +#include + +#ifdef _ARCH_PWR5X + +float truncf(float x) +{ + __asm__ ("friz %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../truncf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powf.c b/vendor/modernc.org/libc/musl/src/math/powf.c new file mode 100644 index 000000000..de8fab545 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powf.c @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include "libm.h" +#include "exp2f_data.h" +#include "powf_data.h" + +/* +POWF_LOG2_POLY_ORDER = 5 +EXP2F_TABLE_BITS = 5 + +ULP error: 0.82 (~ 0.5 + relerr*2^24) +relerr: 1.27 * 2^-26 (Relative error ~= 128*Ln2*relerr_log2 + relerr_exp2) +relerr_log2: 1.83 * 2^-33 (Relative error of logx.) +relerr_exp2: 1.69 * 2^-34 (Relative error of exp2(ylogx).) +*/ + +#define N (1 << POWF_LOG2_TABLE_BITS) +#define T __powf_log2_data.tab +#define A __powf_log2_data.poly +#define OFF 0x3f330000 + +/* Subnormal input is normalized so ix has negative biased exponent. + Output is multiplied by N (POWF_SCALE) if TOINT_INTRINICS is set. */ +static inline double_t log2_inline(uint32_t ix) +{ + double_t z, r, r2, r4, p, q, y, y0, invc, logc; + uint32_t iz, top, tmp; + int k, i; + + /* x = 2^k z; where z is in range [OFF,2*OFF] and exact. + The range is split into N subintervals. + The ith subinterval contains z and c is near its center. */ + tmp = ix - OFF; + i = (tmp >> (23 - POWF_LOG2_TABLE_BITS)) % N; + top = tmp & 0xff800000; + iz = ix - top; + k = (int32_t)top >> (23 - POWF_SCALE_BITS); /* arithmetic shift */ + invc = T[i].invc; + logc = T[i].logc; + z = (double_t)asfloat(iz); + + /* log2(x) = log1p(z/c-1)/ln2 + log2(c) + k */ + r = z * invc - 1; + y0 = logc + (double_t)k; + + /* Pipelined polynomial evaluation to approximate log1p(r)/ln2. */ + r2 = r * r; + y = A[0] * r + A[1]; + p = A[2] * r + A[3]; + r4 = r2 * r2; + q = A[4] * r + y0; + q = p * r2 + q; + y = y * r4 + q; + return y; +} + +#undef N +#undef T +#define N (1 << EXP2F_TABLE_BITS) +#define T __exp2f_data.tab +#define SIGN_BIAS (1 << (EXP2F_TABLE_BITS + 11)) + +/* The output of log2 and thus the input of exp2 is either scaled by N + (in case of fast toint intrinsics) or not. The unscaled xd must be + in [-1021,1023], sign_bias sets the sign of the result. */ +static inline float exp2_inline(double_t xd, uint32_t sign_bias) +{ + uint64_t ki, ski, t; + double_t kd, z, r, r2, y, s; + +#if TOINT_INTRINSICS +#define C __exp2f_data.poly_scaled + /* N*x = k + r with r in [-1/2, 1/2] */ + kd = roundtoint(xd); /* k */ + ki = converttoint(xd); +#else +#define C __exp2f_data.poly +#define SHIFT __exp2f_data.shift_scaled + /* x = k/N + r with r in [-1/(2N), 1/(2N)] */ + kd = eval_as_double(xd + SHIFT); + ki = asuint64(kd); + kd -= SHIFT; /* k/N */ +#endif + r = xd - kd; + + /* exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1) */ + t = T[ki % N]; + ski = ki + sign_bias; + t += ski << (52 - EXP2F_TABLE_BITS); + s = asdouble(t); + z = C[0] * r + C[1]; + r2 = r * r; + y = C[2] * r + 1; + y = z * r2 + y; + y = y * s; + return eval_as_float(y); +} + +/* Returns 0 if not int, 1 if odd int, 2 if even int. The argument is + the bit representation of a non-zero finite floating-point value. */ +static inline int checkint(uint32_t iy) +{ + int e = iy >> 23 & 0xff; + if (e < 0x7f) + return 0; + if (e > 0x7f + 23) + return 2; + if (iy & ((1 << (0x7f + 23 - e)) - 1)) + return 0; + if (iy & (1 << (0x7f + 23 - e))) + return 1; + return 2; +} + +static inline int zeroinfnan(uint32_t ix) +{ + return 2 * ix - 1 >= 2u * 0x7f800000 - 1; +} + +float powf(float x, float y) +{ + uint32_t sign_bias = 0; + uint32_t ix, iy; + + ix = asuint(x); + iy = asuint(y); + if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000 || + zeroinfnan(iy))) { + /* Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan). */ + if (predict_false(zeroinfnan(iy))) { + if (2 * iy == 0) + return issignalingf_inline(x) ? x + y : 1.0f; + if (ix == 0x3f800000) + return issignalingf_inline(y) ? x + y : 1.0f; + if (2 * ix > 2u * 0x7f800000 || + 2 * iy > 2u * 0x7f800000) + return x + y; + if (2 * ix == 2 * 0x3f800000) + return 1.0f; + if ((2 * ix < 2 * 0x3f800000) == !(iy & 0x80000000)) + return 0.0f; /* |x|<1 && y==inf or |x|>1 && y==-inf. */ + return y * y; + } + if (predict_false(zeroinfnan(ix))) { + float_t x2 = x * x; + if (ix & 0x80000000 && checkint(iy) == 1) + x2 = -x2; + /* Without the barrier some versions of clang hoist the 1/x2 and + thus division by zero exception can be signaled spuriously. */ + return iy & 0x80000000 ? fp_barrierf(1 / x2) : x2; + } + /* x and y are non-zero finite. */ + if (ix & 0x80000000) { + /* Finite x < 0. */ + int yint = checkint(iy); + if (yint == 0) + return __math_invalidf(x); + if (yint == 1) + sign_bias = SIGN_BIAS; + ix &= 0x7fffffff; + } + if (ix < 0x00800000) { + /* Normalize subnormal x so exponent becomes negative. */ + ix = asuint(x * 0x1p23f); + ix &= 0x7fffffff; + ix -= 23 << 23; + } + } + double_t logx = log2_inline(ix); + double_t ylogx = y * logx; /* cannot overflow, y is single prec. */ + if (predict_false((asuint64(ylogx) >> 47 & 0xffff) >= + asuint64(126.0 * POWF_SCALE) >> 47)) { + /* |y*log(x)| >= 126. */ + if (ylogx > 0x1.fffffffd1d571p+6 * POWF_SCALE) + return __math_oflowf(sign_bias); + if (ylogx <= -150.0 * POWF_SCALE) + return __math_uflowf(sign_bias); + } + return exp2_inline(ylogx, sign_bias); +} diff --git a/vendor/modernc.org/libc/musl/src/math/powf_data.c b/vendor/modernc.org/libc/musl/src/math/powf_data.c new file mode 100644 index 000000000..13e1d9a06 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powf_data.c @@ -0,0 +1,34 @@ +/* + * Data definition for powf. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ + +#include "powf_data.h" + +const struct powf_log2_data __powf_log2_data = { + .tab = { + { 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2 * POWF_SCALE }, + { 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2 * POWF_SCALE }, + { 0x1.49539f0f010bp+0, -0x1.7418b0a1fb77bp-2 * POWF_SCALE }, + { 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2 * POWF_SCALE }, + { 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2 * POWF_SCALE }, + { 0x1.25e227b0b8eap+0, -0x1.97c1d1b3b7afp-3 * POWF_SCALE }, + { 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3 * POWF_SCALE }, + { 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4 * POWF_SCALE }, + { 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5 * POWF_SCALE }, + { 0x1p+0, 0x0p+0 * POWF_SCALE }, + { 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4 * POWF_SCALE }, + { 0x1.ca4b31f026aap-1, 0x1.476a9543891bap-3 * POWF_SCALE }, + { 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3 * POWF_SCALE }, + { 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2 * POWF_SCALE }, + { 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2 * POWF_SCALE }, + { 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2 * POWF_SCALE }, + }, + .poly = { + 0x1.27616c9496e0bp-2 * POWF_SCALE, -0x1.71969a075c67ap-2 * POWF_SCALE, + 0x1.ec70a6ca7baddp-2 * POWF_SCALE, -0x1.7154748bef6c8p-1 * POWF_SCALE, + 0x1.71547652ab82bp0 * POWF_SCALE, + } +}; diff --git a/vendor/modernc.org/libc/musl/src/math/powf_data.h b/vendor/modernc.org/libc/musl/src/math/powf_data.h new file mode 100644 index 000000000..5b136e283 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powf_data.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _POWF_DATA_H +#define _POWF_DATA_H + +#include "libm.h" +#include "exp2f_data.h" + +#define POWF_LOG2_TABLE_BITS 4 +#define POWF_LOG2_POLY_ORDER 5 +#if TOINT_INTRINSICS +#define POWF_SCALE_BITS EXP2F_TABLE_BITS +#else +#define POWF_SCALE_BITS 0 +#endif +#define POWF_SCALE ((double)(1 << POWF_SCALE_BITS)) +extern hidden const struct powf_log2_data { + struct { + double invc, logc; + } tab[1 << POWF_LOG2_TABLE_BITS]; + double poly[POWF_LOG2_POLY_ORDER]; +} __powf_log2_data; + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/powl.c b/vendor/modernc.org/libc/musl/src/math/powl.c new file mode 100644 index 000000000..5b6da07b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/powl.c @@ -0,0 +1,522 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_powl.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* powl.c + * + * Power function, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, z, powl(); + * + * z = powl( x, y ); + * + * + * DESCRIPTION: + * + * Computes x raised to the yth power. Analytically, + * + * x**y = exp( y log(x) ). + * + * Following Cody and Waite, this program uses a lookup table + * of 2**-i/32 and pseudo extended precision arithmetic to + * obtain several extra bits of accuracy in both the logarithm + * and the exponential. + * + * + * ACCURACY: + * + * The relative error of pow(x,y) can be estimated + * by y dl ln(2), where dl is the absolute error of + * the internally computed base 2 logarithm. At the ends + * of the approximation interval the logarithm equal 1/32 + * and its relative error is about 1 lsb = 1.1e-19. Hence + * the predicted relative error in the result is 2.3e-21 y . + * + * Relative error: + * arithmetic domain # trials peak rms + * + * IEEE +-1000 40000 2.8e-18 3.7e-19 + * .001 < x < 1000, with log(x) uniformly distributed. + * -1000 < y < 1000, y uniformly distributed. + * + * IEEE 0,8700 60000 6.5e-18 1.0e-18 + * 0.99 < x < 1.01, 0 < y < 8700, uniformly distributed. + * + * + * ERROR MESSAGES: + * + * message condition value returned + * pow overflow x**y > MAXNUM INFINITY + * pow underflow x**y < 1/MAXNUM 0.0 + * pow domain x<0 and y noninteger 0.0 + * + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double powl(long double x, long double y) +{ + return pow(x, y); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 + +/* Table size */ +#define NXT 32 + +/* log(1+x) = x - .5x^2 + x^3 * P(z)/Q(z) + * on the domain 2^(-1/32) - 1 <= x <= 2^(1/32) - 1 + */ +static const long double P[] = { + 8.3319510773868690346226E-4L, + 4.9000050881978028599627E-1L, + 1.7500123722550302671919E0L, + 1.4000100839971580279335E0L, +}; +static const long double Q[] = { +/* 1.0000000000000000000000E0L,*/ + 5.2500282295834889175431E0L, + 8.4000598057587009834666E0L, + 4.2000302519914740834728E0L, +}; +/* A[i] = 2^(-i/32), rounded to IEEE long double precision. + * If i is even, A[i] + B[i/2] gives additional accuracy. + */ +static const long double A[33] = { + 1.0000000000000000000000E0L, + 9.7857206208770013448287E-1L, + 9.5760328069857364691013E-1L, + 9.3708381705514995065011E-1L, + 9.1700404320467123175367E-1L, + 8.9735453750155359320742E-1L, + 8.7812608018664974155474E-1L, + 8.5930964906123895780165E-1L, + 8.4089641525371454301892E-1L, + 8.2287773907698242225554E-1L, + 8.0524516597462715409607E-1L, + 7.8799042255394324325455E-1L, + 7.7110541270397041179298E-1L, + 7.5458221379671136985669E-1L, + 7.3841307296974965571198E-1L, + 7.2259040348852331001267E-1L, + 7.0710678118654752438189E-1L, + 6.9195494098191597746178E-1L, + 6.7712777346844636413344E-1L, + 6.6261832157987064729696E-1L, + 6.4841977732550483296079E-1L, + 6.3452547859586661129850E-1L, + 6.2092890603674202431705E-1L, + 6.0762367999023443907803E-1L, + 5.9460355750136053334378E-1L, + 5.8186242938878875689693E-1L, + 5.6939431737834582684856E-1L, + 5.5719337129794626814472E-1L, + 5.4525386633262882960438E-1L, + 5.3357020033841180906486E-1L, + 5.2213689121370692017331E-1L, + 5.1094857432705833910408E-1L, + 5.0000000000000000000000E-1L, +}; +static const long double B[17] = { + 0.0000000000000000000000E0L, + 2.6176170809902549338711E-20L, +-1.0126791927256478897086E-20L, + 1.3438228172316276937655E-21L, + 1.2207982955417546912101E-20L, +-6.3084814358060867200133E-21L, + 1.3164426894366316434230E-20L, +-1.8527916071632873716786E-20L, + 1.8950325588932570796551E-20L, + 1.5564775779538780478155E-20L, + 6.0859793637556860974380E-21L, +-2.0208749253662532228949E-20L, + 1.4966292219224761844552E-20L, + 3.3540909728056476875639E-21L, +-8.6987564101742849540743E-22L, +-1.2327176863327626135542E-20L, + 0.0000000000000000000000E0L, +}; + +/* 2^x = 1 + x P(x), + * on the interval -1/32 <= x <= 0 + */ +static const long double R[] = { + 1.5089970579127659901157E-5L, + 1.5402715328927013076125E-4L, + 1.3333556028915671091390E-3L, + 9.6181291046036762031786E-3L, + 5.5504108664798463044015E-2L, + 2.4022650695910062854352E-1L, + 6.9314718055994530931447E-1L, +}; + +#define MEXP (NXT*16384.0L) +/* The following if denormal numbers are supported, else -MEXP: */ +#define MNEXP (-NXT*(16384.0L+64.0L)) +/* log2(e) - 1 */ +#define LOG2EA 0.44269504088896340735992L + +#define F W +#define Fa Wa +#define Fb Wb +#define G W +#define Ga Wa +#define Gb u +#define H W +#define Ha Wb +#define Hb Wb + +static const long double MAXLOGL = 1.1356523406294143949492E4L; +static const long double MINLOGL = -1.13994985314888605586758E4L; +static const long double LOGE2L = 6.9314718055994530941723E-1L; +static const long double huge = 0x1p10000L; +/* XXX Prevent gcc from erroneously constant folding this. */ +static const volatile long double twom10000 = 0x1p-10000L; + +static long double reducl(long double); +static long double powil(long double, int); + +long double powl(long double x, long double y) +{ + /* double F, Fa, Fb, G, Ga, Gb, H, Ha, Hb */ + int i, nflg, iyflg, yoddint; + long e; + volatile long double z=0; + long double w=0, W=0, Wa=0, Wb=0, ya=0, yb=0, u=0; + + /* make sure no invalid exception is raised by nan comparision */ + if (isnan(x)) { + if (!isnan(y) && y == 0.0) + return 1.0; + return x; + } + if (isnan(y)) { + if (x == 1.0) + return 1.0; + return y; + } + if (x == 1.0) + return 1.0; /* 1**y = 1, even if y is nan */ + if (x == -1.0 && !isfinite(y)) + return 1.0; /* -1**inf = 1 */ + if (y == 0.0) + return 1.0; /* x**0 = 1, even if x is nan */ + if (y == 1.0) + return x; + if (y >= LDBL_MAX) { + if (x > 1.0 || x < -1.0) + return INFINITY; + if (x != 0.0) + return 0.0; + } + if (y <= -LDBL_MAX) { + if (x > 1.0 || x < -1.0) + return 0.0; + if (x != 0.0 || y == -INFINITY) + return INFINITY; + } + if (x >= LDBL_MAX) { + if (y > 0.0) + return INFINITY; + return 0.0; + } + + w = floorl(y); + + /* Set iyflg to 1 if y is an integer. */ + iyflg = 0; + if (w == y) + iyflg = 1; + + /* Test for odd integer y. */ + yoddint = 0; + if (iyflg) { + ya = fabsl(y); + ya = floorl(0.5 * ya); + yb = 0.5 * fabsl(w); + if( ya != yb ) + yoddint = 1; + } + + if (x <= -LDBL_MAX) { + if (y > 0.0) { + if (yoddint) + return -INFINITY; + return INFINITY; + } + if (y < 0.0) { + if (yoddint) + return -0.0; + return 0.0; + } + } + nflg = 0; /* (x<0)**(odd int) */ + if (x <= 0.0) { + if (x == 0.0) { + if (y < 0.0) { + if (signbit(x) && yoddint) + /* (-0.0)**(-odd int) = -inf, divbyzero */ + return -1.0/0.0; + /* (+-0.0)**(negative) = inf, divbyzero */ + return 1.0/0.0; + } + if (signbit(x) && yoddint) + return -0.0; + return 0.0; + } + if (iyflg == 0) + return (x - x) / (x - x); /* (x<0)**(non-int) is NaN */ + /* (x<0)**(integer) */ + if (yoddint) + nflg = 1; /* negate result */ + x = -x; + } + /* (+integer)**(integer) */ + if (iyflg && floorl(x) == x && fabsl(y) < 32768.0) { + w = powil(x, (int)y); + return nflg ? -w : w; + } + + /* separate significand from exponent */ + x = frexpl(x, &i); + e = i; + + /* find significand in antilog table A[] */ + i = 1; + if (x <= A[17]) + i = 17; + if (x <= A[i+8]) + i += 8; + if (x <= A[i+4]) + i += 4; + if (x <= A[i+2]) + i += 2; + if (x >= A[1]) + i = -1; + i += 1; + + /* Find (x - A[i])/A[i] + * in order to compute log(x/A[i]): + * + * log(x) = log( a x/a ) = log(a) + log(x/a) + * + * log(x/a) = log(1+v), v = x/a - 1 = (x-a)/a + */ + x -= A[i]; + x -= B[i/2]; + x /= A[i]; + + /* rational approximation for log(1+v): + * + * log(1+v) = v - v**2/2 + v**3 P(v) / Q(v) + */ + z = x*x; + w = x * (z * __polevll(x, P, 3) / __p1evll(x, Q, 3)); + w = w - 0.5*z; + + /* Convert to base 2 logarithm: + * multiply by log2(e) = 1 + LOG2EA + */ + z = LOG2EA * w; + z += w; + z += LOG2EA * x; + z += x; + + /* Compute exponent term of the base 2 logarithm. */ + w = -i; + w /= NXT; + w += e; + /* Now base 2 log of x is w + z. */ + + /* Multiply base 2 log by y, in extended precision. */ + + /* separate y into large part ya + * and small part yb less than 1/NXT + */ + ya = reducl(y); + yb = y - ya; + + /* (w+z)(ya+yb) + * = w*ya + w*yb + z*y + */ + F = z * y + w * yb; + Fa = reducl(F); + Fb = F - Fa; + + G = Fa + w * ya; + Ga = reducl(G); + Gb = G - Ga; + + H = Fb + Gb; + Ha = reducl(H); + w = (Ga + Ha) * NXT; + + /* Test the power of 2 for overflow */ + if (w > MEXP) + return huge * huge; /* overflow */ + if (w < MNEXP) + return twom10000 * twom10000; /* underflow */ + + e = w; + Hb = H - Ha; + + if (Hb > 0.0) { + e += 1; + Hb -= 1.0/NXT; /*0.0625L;*/ + } + + /* Now the product y * log2(x) = Hb + e/NXT. + * + * Compute base 2 exponential of Hb, + * where -0.0625 <= Hb <= 0. + */ + z = Hb * __polevll(Hb, R, 6); /* z = 2**Hb - 1 */ + + /* Express e/NXT as an integer plus a negative number of (1/NXT)ths. + * Find lookup table entry for the fractional power of 2. + */ + if (e < 0) + i = 0; + else + i = 1; + i = e/NXT + i; + e = NXT*i - e; + w = A[e]; + z = w * z; /* 2**-e * ( 1 + (2**Hb-1) ) */ + z = z + w; + z = scalbnl(z, i); /* multiply by integer power of 2 */ + + if (nflg) + z = -z; + return z; +} + + +/* Find a multiple of 1/NXT that is within 1/NXT of x. */ +static long double reducl(long double x) +{ + long double t; + + t = x * NXT; + t = floorl(t); + t = t / NXT; + return t; +} + +/* + * Positive real raised to integer power, long double precision + * + * + * SYNOPSIS: + * + * long double x, y, powil(); + * int n; + * + * y = powil( x, n ); + * + * + * DESCRIPTION: + * + * Returns argument x>0 raised to the nth power. + * The routine efficiently decomposes n as a sum of powers of + * two. The desired power is a product of two-to-the-kth + * powers of x. Thus to compute the 32767 power of x requires + * 28 multiplications instead of 32767 multiplications. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic x domain n domain # trials peak rms + * IEEE .001,1000 -1022,1023 50000 4.3e-17 7.8e-18 + * IEEE 1,2 -1022,1023 20000 3.9e-17 7.6e-18 + * IEEE .99,1.01 0,8700 10000 3.6e-16 7.2e-17 + * + * Returns MAXNUM on overflow, zero on underflow. + */ + +static long double powil(long double x, int nn) +{ + long double ww, y; + long double s; + int n, e, sign, lx; + + if (nn == 0) + return 1.0; + + if (nn < 0) { + sign = -1; + n = -nn; + } else { + sign = 1; + n = nn; + } + + /* Overflow detection */ + + /* Calculate approximate logarithm of answer */ + s = x; + s = frexpl( s, &lx); + e = (lx - 1)*n; + if ((e == 0) || (e > 64) || (e < -64)) { + s = (s - 7.0710678118654752e-1L) / (s + 7.0710678118654752e-1L); + s = (2.9142135623730950L * s - 0.5 + lx) * nn * LOGE2L; + } else { + s = LOGE2L * e; + } + + if (s > MAXLOGL) + return huge * huge; /* overflow */ + + if (s < MINLOGL) + return twom10000 * twom10000; /* underflow */ + /* Handle tiny denormal answer, but with less accuracy + * since roundoff error in 1.0/x will be amplified. + * The precise demarcation should be the gradual underflow threshold. + */ + if (s < -MAXLOGL+2.0) { + x = 1.0/x; + sign = -sign; + } + + /* First bit of the power */ + if (n & 1) + y = x; + else + y = 1.0; + + ww = x; + n >>= 1; + while (n) { + ww = ww * ww; /* arg to the 2-to-the-kth power */ + if (n & 1) /* if that bit is set, then include in product */ + y *= ww; + n >>= 1; + } + + if (sign < 0) + y = 1.0/y; + return y; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double powl(long double x, long double y) +{ + return pow(x, y); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/remainder.c b/vendor/modernc.org/libc/musl/src/math/remainder.c new file mode 100644 index 000000000..612155fed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remainder.c @@ -0,0 +1,9 @@ +#include + +double remainder(double x, double y) +{ + int q; + return remquo(x, y, &q); +} + +weak_alias(remainder, drem); diff --git a/vendor/modernc.org/libc/musl/src/math/remainderf.c b/vendor/modernc.org/libc/musl/src/math/remainderf.c new file mode 100644 index 000000000..bf1d7b283 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remainderf.c @@ -0,0 +1,9 @@ +#include + +float remainderf(float x, float y) +{ + int q; + return remquof(x, y, &q); +} + +weak_alias(remainderf, dremf); diff --git a/vendor/modernc.org/libc/musl/src/math/remainderl.c b/vendor/modernc.org/libc/musl/src/math/remainderl.c new file mode 100644 index 000000000..2a13c1d5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remainderl.c @@ -0,0 +1,15 @@ +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double remainderl(long double x, long double y) +{ + return remainder(x, y); +} +#else +long double remainderl(long double x, long double y) +{ + int q; + return remquol(x, y, &q); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/remquo.c b/vendor/modernc.org/libc/musl/src/math/remquo.c new file mode 100644 index 000000000..59d5ad57e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remquo.c @@ -0,0 +1,82 @@ +#include +#include + +double remquo(double x, double y, int *quo) +{ + union {double f; uint64_t i;} ux = {x}, uy = {y}; + int ex = ux.i>>52 & 0x7ff; + int ey = uy.i>>52 & 0x7ff; + int sx = ux.i>>63; + int sy = uy.i>>63; + uint32_t q; + uint64_t i; + uint64_t uxi = ux.i; + + *quo = 0; + if (uy.i<<1 == 0 || isnan(y) || ex == 0x7ff) + return (x*y)/(x*y); + if (ux.i<<1 == 0) + return x; + + /* normalize x and y */ + if (!ex) { + for (i = uxi<<12; i>>63 == 0; ex--, i <<= 1); + uxi <<= -ex + 1; + } else { + uxi &= -1ULL >> 12; + uxi |= 1ULL << 52; + } + if (!ey) { + for (i = uy.i<<12; i>>63 == 0; ey--, i <<= 1); + uy.i <<= -ey + 1; + } else { + uy.i &= -1ULL >> 12; + uy.i |= 1ULL << 52; + } + + q = 0; + if (ex < ey) { + if (ex+1 == ey) + goto end; + return x; + } + + /* x mod y */ + for (; ex > ey; ex--) { + i = uxi - uy.i; + if (i >> 63 == 0) { + uxi = i; + q++; + } + uxi <<= 1; + q <<= 1; + } + i = uxi - uy.i; + if (i >> 63 == 0) { + uxi = i; + q++; + } + if (uxi == 0) + ex = -60; + else + for (; uxi>>52 == 0; uxi <<= 1, ex--); +end: + /* scale result and decide between |x| and |x|-|y| */ + if (ex > 0) { + uxi -= 1ULL << 52; + uxi |= (uint64_t)ex << 52; + } else { + uxi >>= -ex + 1; + } + ux.i = uxi; + x = ux.f; + if (sy) + y = -y; + if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) { + x -= y; + q++; + } + q &= 0x7fffffff; + *quo = sx^sy ? -(int)q : (int)q; + return sx ? -x : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/remquof.c b/vendor/modernc.org/libc/musl/src/math/remquof.c new file mode 100644 index 000000000..2f41ff706 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remquof.c @@ -0,0 +1,82 @@ +#include +#include + +float remquof(float x, float y, int *quo) +{ + union {float f; uint32_t i;} ux = {x}, uy = {y}; + int ex = ux.i>>23 & 0xff; + int ey = uy.i>>23 & 0xff; + int sx = ux.i>>31; + int sy = uy.i>>31; + uint32_t q; + uint32_t i; + uint32_t uxi = ux.i; + + *quo = 0; + if (uy.i<<1 == 0 || isnan(y) || ex == 0xff) + return (x*y)/(x*y); + if (ux.i<<1 == 0) + return x; + + /* normalize x and y */ + if (!ex) { + for (i = uxi<<9; i>>31 == 0; ex--, i <<= 1); + uxi <<= -ex + 1; + } else { + uxi &= -1U >> 9; + uxi |= 1U << 23; + } + if (!ey) { + for (i = uy.i<<9; i>>31 == 0; ey--, i <<= 1); + uy.i <<= -ey + 1; + } else { + uy.i &= -1U >> 9; + uy.i |= 1U << 23; + } + + q = 0; + if (ex < ey) { + if (ex+1 == ey) + goto end; + return x; + } + + /* x mod y */ + for (; ex > ey; ex--) { + i = uxi - uy.i; + if (i >> 31 == 0) { + uxi = i; + q++; + } + uxi <<= 1; + q <<= 1; + } + i = uxi - uy.i; + if (i >> 31 == 0) { + uxi = i; + q++; + } + if (uxi == 0) + ex = -30; + else + for (; uxi>>23 == 0; uxi <<= 1, ex--); +end: + /* scale result and decide between |x| and |x|-|y| */ + if (ex > 0) { + uxi -= 1U << 23; + uxi |= (uint32_t)ex << 23; + } else { + uxi >>= -ex + 1; + } + ux.i = uxi; + x = ux.f; + if (sy) + y = -y; + if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) { + x -= y; + q++; + } + q &= 0x7fffffff; + *quo = sx^sy ? -(int)q : (int)q; + return sx ? -x : x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/remquol.c b/vendor/modernc.org/libc/musl/src/math/remquol.c new file mode 100644 index 000000000..9b065c007 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/remquol.c @@ -0,0 +1,124 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double remquol(long double x, long double y, int *quo) +{ + return remquo(x, y, quo); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double remquol(long double x, long double y, int *quo) +{ + union ldshape ux = {x}, uy = {y}; + int ex = ux.i.se & 0x7fff; + int ey = uy.i.se & 0x7fff; + int sx = ux.i.se >> 15; + int sy = uy.i.se >> 15; + uint32_t q; + + *quo = 0; + if (y == 0 || isnan(y) || ex == 0x7fff) + return (x*y)/(x*y); + if (x == 0) + return x; + + /* normalize x and y */ + if (!ex) { + ux.i.se = ex; + ux.f *= 0x1p120f; + ex = ux.i.se - 120; + } + if (!ey) { + uy.i.se = ey; + uy.f *= 0x1p120f; + ey = uy.i.se - 120; + } + + q = 0; + if (ex >= ey) { + /* x mod y */ +#if LDBL_MANT_DIG == 64 + uint64_t i, mx, my; + mx = ux.i.m; + my = uy.i.m; + for (; ex > ey; ex--) { + i = mx - my; + if (mx >= my) { + mx = 2*i; + q++; + q <<= 1; + } else if (2*mx < mx) { + mx = 2*mx - my; + q <<= 1; + q++; + } else { + mx = 2*mx; + q <<= 1; + } + } + i = mx - my; + if (mx >= my) { + mx = i; + q++; + } + if (mx == 0) + ex = -120; + else + for (; mx >> 63 == 0; mx *= 2, ex--); + ux.i.m = mx; +#elif LDBL_MANT_DIG == 113 + uint64_t hi, lo, xhi, xlo, yhi, ylo; + xhi = (ux.i2.hi & -1ULL>>16) | 1ULL<<48; + yhi = (uy.i2.hi & -1ULL>>16) | 1ULL<<48; + xlo = ux.i2.lo; + ylo = ux.i2.lo; + for (; ex > ey; ex--) { + hi = xhi - yhi; + lo = xlo - ylo; + if (xlo < ylo) + hi -= 1; + if (hi >> 63 == 0) { + xhi = 2*hi + (lo>>63); + xlo = 2*lo; + q++; + } else { + xhi = 2*xhi + (xlo>>63); + xlo = 2*xlo; + } + q <<= 1; + } + hi = xhi - yhi; + lo = xlo - ylo; + if (xlo < ylo) + hi -= 1; + if (hi >> 63 == 0) { + xhi = hi; + xlo = lo; + q++; + } + if ((xhi|xlo) == 0) + ex = -120; + else + for (; xhi >> 48 == 0; xhi = 2*xhi + (xlo>>63), xlo = 2*xlo, ex--); + ux.i2.hi = xhi; + ux.i2.lo = xlo; +#endif + } + + /* scale result and decide between |x| and |x|-|y| */ + if (ex <= 0) { + ux.i.se = ex + 120; + ux.f *= 0x1p-120f; + } else + ux.i.se = ex; + x = ux.f; + if (sy) + y = -y; + if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) { + x -= y; + q++; + } + q &= 0x7fffffff; + *quo = sx^sy ? -(int)q : (int)q; + return sx ? -x : x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/rint.c b/vendor/modernc.org/libc/musl/src/math/rint.c new file mode 100644 index 000000000..fbba390e7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/rint.c @@ -0,0 +1,28 @@ +#include +#include +#include + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const double_t toint = 1/EPS; + +double rint(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = u.i>>52 & 0x7ff; + int s = u.i>>63; + double_t y; + + if (e >= 0x3ff+52) + return x; + if (s) + y = x - toint + toint; + else + y = x + toint - toint; + if (y == 0) + return s ? -0.0 : 0; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/rintf.c b/vendor/modernc.org/libc/musl/src/math/rintf.c new file mode 100644 index 000000000..9047688d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/rintf.c @@ -0,0 +1,30 @@ +#include +#include +#include + +#if FLT_EVAL_METHOD==0 +#define EPS FLT_EPSILON +#elif FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const float_t toint = 1/EPS; + +float rintf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = u.i>>23 & 0xff; + int s = u.i>>31; + float_t y; + + if (e >= 0x7f+23) + return x; + if (s) + y = x - toint + toint; + else + y = x + toint - toint; + if (y == 0) + return s ? -0.0f : 0.0f; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/rintl.c b/vendor/modernc.org/libc/musl/src/math/rintl.c new file mode 100644 index 000000000..374327db2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/rintl.c @@ -0,0 +1,29 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double rintl(long double x) +{ + return rint(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double rintl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + int s = u.i.se >> 15; + long double y; + + if (e >= 0x3fff+LDBL_MANT_DIG-1) + return x; + if (s) + y = x - toint + toint; + else + y = x + toint - toint; + if (y == 0) + return 0*x; + return y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/copysign.c b/vendor/modernc.org/libc/musl/src/math/riscv64/copysign.c new file mode 100644 index 000000000..c7854178f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/copysign.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double copysign(double x, double y) +{ + __asm__ ("fsgnj.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../copysign.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/copysignf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/copysignf.c new file mode 100644 index 000000000..a125611ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/copysignf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float copysignf(float x, float y) +{ + __asm__ ("fsgnj.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../copysignf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fabs.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fabs.c new file mode 100644 index 000000000..5290b6f09 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fabs.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double fabs(double x) +{ + __asm__ ("fabs.d %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../fabs.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fabsf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fabsf.c new file mode 100644 index 000000000..f5032e354 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fabsf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float fabsf(float x) +{ + __asm__ ("fabs.s %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../fabsf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fma.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fma.c new file mode 100644 index 000000000..99b057130 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fma.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double fma(double x, double y, double z) +{ + __asm__ ("fmadd.d %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z)); + return x; +} + +#else + +#include "../fma.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fmaf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fmaf.c new file mode 100644 index 000000000..f9dc47eda --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fmaf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float fmaf(float x, float y, float z) +{ + __asm__ ("fmadd.s %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z)); + return x; +} + +#else + +#include "../fmaf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fmax.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fmax.c new file mode 100644 index 000000000..023709cdf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fmax.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double fmax(double x, double y) +{ + __asm__ ("fmax.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../fmax.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fmaxf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fmaxf.c new file mode 100644 index 000000000..863d2bd17 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fmaxf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float fmaxf(float x, float y) +{ + __asm__ ("fmax.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../fmaxf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fmin.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fmin.c new file mode 100644 index 000000000..a4e3b0671 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fmin.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double fmin(double x, double y) +{ + __asm__ ("fmin.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../fmin.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/fminf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/fminf.c new file mode 100644 index 000000000..32156e80e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/fminf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float fminf(float x, float y) +{ + __asm__ ("fmin.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y)); + return x; +} + +#else + +#include "../fminf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/sqrt.c b/vendor/modernc.org/libc/musl/src/math/riscv64/sqrt.c new file mode 100644 index 000000000..867a504c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/sqrt.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 64 + +double sqrt(double x) +{ + __asm__ ("fsqrt.d %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../sqrt.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/riscv64/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/riscv64/sqrtf.c new file mode 100644 index 000000000..610c2cf80 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/riscv64/sqrtf.c @@ -0,0 +1,15 @@ +#include + +#if __riscv_flen >= 32 + +float sqrtf(float x) +{ + __asm__ ("fsqrt.s %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../sqrtf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/round.c b/vendor/modernc.org/libc/musl/src/math/round.c new file mode 100644 index 000000000..130d58d25 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/round.c @@ -0,0 +1,35 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const double_t toint = 1/EPS; + +double round(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = u.i >> 52 & 0x7ff; + double_t y; + + if (e >= 0x3ff+52) + return x; + if (u.i >> 63) + x = -x; + if (e < 0x3ff-1) { + /* raise inexact if x!=0 */ + FORCE_EVAL(x + toint); + return 0*u.f; + } + y = x + toint - toint - x; + if (y > 0.5) + y = y + x - 1; + else if (y <= -0.5) + y = y + x + 1; + else + y = y + x; + if (u.i >> 63) + y = -y; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/roundf.c b/vendor/modernc.org/libc/musl/src/math/roundf.c new file mode 100644 index 000000000..e8210af56 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/roundf.c @@ -0,0 +1,36 @@ +#include "libm.h" + +#if FLT_EVAL_METHOD==0 +#define EPS FLT_EPSILON +#elif FLT_EVAL_METHOD==1 +#define EPS DBL_EPSILON +#elif FLT_EVAL_METHOD==2 +#define EPS LDBL_EPSILON +#endif +static const float_t toint = 1/EPS; + +float roundf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = u.i >> 23 & 0xff; + float_t y; + + if (e >= 0x7f+23) + return x; + if (u.i >> 31) + x = -x; + if (e < 0x7f-1) { + FORCE_EVAL(x + toint); + return 0*u.f; + } + y = x + toint - toint - x; + if (y > 0.5f) + y = y + x - 1; + else if (y <= -0.5f) + y = y + x + 1; + else + y = y + x; + if (u.i >> 31) + y = -y; + return y; +} diff --git a/vendor/modernc.org/libc/musl/src/math/roundl.c b/vendor/modernc.org/libc/musl/src/math/roundl.c new file mode 100644 index 000000000..f4ff6820a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/roundl.c @@ -0,0 +1,37 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double roundl(long double x) +{ + return round(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double roundl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + long double y; + + if (e >= 0x3fff+LDBL_MANT_DIG-1) + return x; + if (u.i.se >> 15) + x = -x; + if (e < 0x3fff-1) { + FORCE_EVAL(x + toint); + return 0*u.f; + } + y = x + toint - toint - x; + if (y > 0.5) + y = y + x - 1; + else if (y <= -0.5) + y = y + x + 1; + else + y = y + x; + if (u.i.se >> 15) + y = -y; + return y; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/ceil.c b/vendor/modernc.org/libc/musl/src/math/s390x/ceil.c new file mode 100644 index 000000000..aee17df75 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/ceil.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double ceil(double x) +{ + __asm__ ("fidbra %0, 6, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../ceil.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/ceilf.c b/vendor/modernc.org/libc/musl/src/math/s390x/ceilf.c new file mode 100644 index 000000000..29ba8d4e7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/ceilf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float ceilf(float x) +{ + __asm__ ("fiebra %0, 6, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../ceilf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/ceill.c b/vendor/modernc.org/libc/musl/src/math/s390x/ceill.c new file mode 100644 index 000000000..b838dc13e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/ceill.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double ceill(long double x) +{ + __asm__ ("fixbra %0, 6, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../ceill.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/fabs.c b/vendor/modernc.org/libc/musl/src/math/s390x/fabs.c new file mode 100644 index 000000000..9bb51cb5f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/fabs.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double fabs(double x) +{ + __asm__ ("lpdbr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../fabs.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/fabsf.c b/vendor/modernc.org/libc/musl/src/math/s390x/fabsf.c new file mode 100644 index 000000000..9fd96bc9d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/fabsf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float fabsf(float x) +{ + __asm__ ("lpebr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../fabsf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/fabsl.c b/vendor/modernc.org/libc/musl/src/math/s390x/fabsl.c new file mode 100644 index 000000000..65f1005d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/fabsl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double fabsl(long double x) +{ + __asm__ ("lpxbr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../fabsl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/floor.c b/vendor/modernc.org/libc/musl/src/math/s390x/floor.c new file mode 100644 index 000000000..4c0c7f1ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/floor.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double floor(double x) +{ + __asm__ ("fidbra %0, 7, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../floor.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/floorf.c b/vendor/modernc.org/libc/musl/src/math/s390x/floorf.c new file mode 100644 index 000000000..ea28ec7ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/floorf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float floorf(float x) +{ + __asm__ ("fiebra %0, 7, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../floorf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/floorl.c b/vendor/modernc.org/libc/musl/src/math/s390x/floorl.c new file mode 100644 index 000000000..8a0e16a2f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/floorl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double floorl(long double x) +{ + __asm__ ("fixbra %0, 7, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../floorl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/fma.c b/vendor/modernc.org/libc/musl/src/math/s390x/fma.c new file mode 100644 index 000000000..86da0e495 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/fma.c @@ -0,0 +1,7 @@ +#include + +double fma(double x, double y, double z) +{ + __asm__ ("madbr %0, %1, %2" : "+f"(z) : "f"(x), "f"(y)); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/fmaf.c b/vendor/modernc.org/libc/musl/src/math/s390x/fmaf.c new file mode 100644 index 000000000..f1aec6ade --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/fmaf.c @@ -0,0 +1,7 @@ +#include + +float fmaf(float x, float y, float z) +{ + __asm__ ("maebr %0, %1, %2" : "+f"(z) : "f"(x), "f"(y)); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/nearbyint.c b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyint.c new file mode 100644 index 000000000..b70da52de --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyint.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double nearbyint(double x) +{ + __asm__ ("fidbra %0, 0, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../nearbyint.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintf.c b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintf.c new file mode 100644 index 000000000..704f26781 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float nearbyintf(float x) +{ + __asm__ ("fiebra %0, 0, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../nearbyintf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintl.c b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintl.c new file mode 100644 index 000000000..b4bd5523c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/nearbyintl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double nearbyintl(long double x) +{ + __asm__ ("fixbra %0, 0, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../nearbyintl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/rint.c b/vendor/modernc.org/libc/musl/src/math/s390x/rint.c new file mode 100644 index 000000000..b02f09eb0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/rint.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double rint(double x) +{ + __asm__ ("fidbr %0, 0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../rint.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/rintf.c b/vendor/modernc.org/libc/musl/src/math/s390x/rintf.c new file mode 100644 index 000000000..c9f13130c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/rintf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float rintf(float x) +{ + __asm__ ("fiebr %0, 0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../rintf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/rintl.c b/vendor/modernc.org/libc/musl/src/math/s390x/rintl.c new file mode 100644 index 000000000..bae53185a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/rintl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double rintl(long double x) +{ + __asm__ ("fixbr %0, 0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../rintl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/round.c b/vendor/modernc.org/libc/musl/src/math/s390x/round.c new file mode 100644 index 000000000..71f802511 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/round.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double round(double x) +{ + __asm__ ("fidbra %0, 1, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../round.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/roundf.c b/vendor/modernc.org/libc/musl/src/math/s390x/roundf.c new file mode 100644 index 000000000..46d2e10c8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/roundf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float roundf(float x) +{ + __asm__ ("fiebra %0, 1, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../roundf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/roundl.c b/vendor/modernc.org/libc/musl/src/math/s390x/roundl.c new file mode 100644 index 000000000..ce644ddd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/roundl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double roundl(long double x) +{ + __asm__ ("fixbra %0, 1, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../roundl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/sqrt.c b/vendor/modernc.org/libc/musl/src/math/s390x/sqrt.c new file mode 100644 index 000000000..a80dc4a7d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/sqrt.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double sqrt(double x) +{ + __asm__ ("sqdbr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../sqrt.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/s390x/sqrtf.c new file mode 100644 index 000000000..52f57eb99 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/sqrtf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float sqrtf(float x) +{ + __asm__ ("sqebr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../sqrtf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/sqrtl.c b/vendor/modernc.org/libc/musl/src/math/s390x/sqrtl.c new file mode 100644 index 000000000..5702d54da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/sqrtl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double sqrtl(long double x) +{ + __asm__ ("sqxbr %0, %1" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../sqrtl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/trunc.c b/vendor/modernc.org/libc/musl/src/math/s390x/trunc.c new file mode 100644 index 000000000..3e5d8862e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/trunc.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +double trunc(double x) +{ + __asm__ ("fidbra %0, 5, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../trunc.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/truncf.c b/vendor/modernc.org/libc/musl/src/math/s390x/truncf.c new file mode 100644 index 000000000..9097bacd0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/truncf.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +float truncf(float x) +{ + __asm__ ("fiebra %0, 5, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../truncf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/s390x/truncl.c b/vendor/modernc.org/libc/musl/src/math/s390x/truncl.c new file mode 100644 index 000000000..4eb920a51 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/s390x/truncl.c @@ -0,0 +1,15 @@ +#include + +#if defined(__HTM__) || __ARCH__ >= 9 + +long double truncl(long double x) +{ + __asm__ ("fixbra %0, 5, %1, 4" : "=f"(x) : "f"(x)); + return x; +} + +#else + +#include "../truncl.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/scalb.c b/vendor/modernc.org/libc/musl/src/math/scalb.c new file mode 100644 index 000000000..efe69e60c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalb.c @@ -0,0 +1,35 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_scalb.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* + * scalb(x, fn) is provide for + * passing various standard test suite. One + * should use scalbn() instead. + */ + +#define _GNU_SOURCE +#include + +double scalb(double x, double fn) +{ + if (isnan(x) || isnan(fn)) + return x*fn; + if (!isfinite(fn)) { + if (fn > 0.0) + return x*fn; + else + return x/(-fn); + } + if (rint(fn) != fn) return (fn-fn)/(fn-fn); + if ( fn > 65000.0) return scalbn(x, 65000); + if (-fn > 65000.0) return scalbn(x,-65000); + return scalbn(x,(int)fn); +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalbf.c b/vendor/modernc.org/libc/musl/src/math/scalbf.c new file mode 100644 index 000000000..f44ed5b64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalbf.c @@ -0,0 +1,32 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_scalbf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#define _GNU_SOURCE +#include + +float scalbf(float x, float fn) +{ + if (isnan(x) || isnan(fn)) return x*fn; + if (!isfinite(fn)) { + if (fn > 0.0f) + return x*fn; + else + return x/(-fn); + } + if (rintf(fn) != fn) return (fn-fn)/(fn-fn); + if ( fn > 65000.0f) return scalbnf(x, 65000); + if (-fn > 65000.0f) return scalbnf(x,-65000); + return scalbnf(x,(int)fn); +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalbln.c b/vendor/modernc.org/libc/musl/src/math/scalbln.c new file mode 100644 index 000000000..e6f3f195c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalbln.c @@ -0,0 +1,11 @@ +#include +#include + +double scalbln(double x, long n) +{ + if (n > INT_MAX) + n = INT_MAX; + else if (n < INT_MIN) + n = INT_MIN; + return scalbn(x, n); +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalblnf.c b/vendor/modernc.org/libc/musl/src/math/scalblnf.c new file mode 100644 index 000000000..d8e8166b1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalblnf.c @@ -0,0 +1,11 @@ +#include +#include + +float scalblnf(float x, long n) +{ + if (n > INT_MAX) + n = INT_MAX; + else if (n < INT_MIN) + n = INT_MIN; + return scalbnf(x, n); +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalblnl.c b/vendor/modernc.org/libc/musl/src/math/scalblnl.c new file mode 100644 index 000000000..854c51c4c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalblnl.c @@ -0,0 +1,19 @@ +#include +#include +#include + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double scalblnl(long double x, long n) +{ + return scalbln(x, n); +} +#else +long double scalblnl(long double x, long n) +{ + if (n > INT_MAX) + n = INT_MAX; + else if (n < INT_MIN) + n = INT_MIN; + return scalbnl(x, n); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/scalbn.c b/vendor/modernc.org/libc/musl/src/math/scalbn.c new file mode 100644 index 000000000..182f56106 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalbn.c @@ -0,0 +1,33 @@ +#include +#include + +double scalbn(double x, int n) +{ + union {double f; uint64_t i;} u; + double_t y = x; + + if (n > 1023) { + y *= 0x1p1023; + n -= 1023; + if (n > 1023) { + y *= 0x1p1023; + n -= 1023; + if (n > 1023) + n = 1023; + } + } else if (n < -1022) { + /* make sure final n < -53 to avoid double + rounding in the subnormal range */ + y *= 0x1p-1022 * 0x1p53; + n += 1022 - 53; + if (n < -1022) { + y *= 0x1p-1022 * 0x1p53; + n += 1022 - 53; + if (n < -1022) + n = -1022; + } + } + u.i = (uint64_t)(0x3ff+n)<<52; + x = y * u.f; + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalbnf.c b/vendor/modernc.org/libc/musl/src/math/scalbnf.c new file mode 100644 index 000000000..a5ad208b6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalbnf.c @@ -0,0 +1,31 @@ +#include +#include + +float scalbnf(float x, int n) +{ + union {float f; uint32_t i;} u; + float_t y = x; + + if (n > 127) { + y *= 0x1p127f; + n -= 127; + if (n > 127) { + y *= 0x1p127f; + n -= 127; + if (n > 127) + n = 127; + } + } else if (n < -126) { + y *= 0x1p-126f * 0x1p24f; + n += 126 - 24; + if (n < -126) { + y *= 0x1p-126f * 0x1p24f; + n += 126 - 24; + if (n < -126) + n = -126; + } + } + u.i = (uint32_t)(0x7f+n)<<23; + x = y * u.f; + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/scalbnl.c b/vendor/modernc.org/libc/musl/src/math/scalbnl.c new file mode 100644 index 000000000..db44dab06 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/scalbnl.c @@ -0,0 +1,36 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double scalbnl(long double x, int n) +{ + return scalbn(x, n); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double scalbnl(long double x, int n) +{ + union ldshape u; + + if (n > 16383) { + x *= 0x1p16383L; + n -= 16383; + if (n > 16383) { + x *= 0x1p16383L; + n -= 16383; + if (n > 16383) + n = 16383; + } + } else if (n < -16382) { + x *= 0x1p-16382L * 0x1p113L; + n += 16382 - 113; + if (n < -16382) { + x *= 0x1p-16382L * 0x1p113L; + n += 16382 - 113; + if (n < -16382) + n = -16382; + } + } + u.f = 1.0; + u.i.se = 0x3fff + n; + return x * u.f; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/signgam.c b/vendor/modernc.org/libc/musl/src/math/signgam.c new file mode 100644 index 000000000..ee331b274 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/signgam.c @@ -0,0 +1,6 @@ +#include +#include "libm.h" + +int __signgam = 0; + +weak_alias(__signgam, signgam); diff --git a/vendor/modernc.org/libc/musl/src/math/significand.c b/vendor/modernc.org/libc/musl/src/math/significand.c new file mode 100644 index 000000000..40d9aa9f4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/significand.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +double significand(double x) +{ + return scalbn(x, -ilogb(x)); +} diff --git a/vendor/modernc.org/libc/musl/src/math/significandf.c b/vendor/modernc.org/libc/musl/src/math/significandf.c new file mode 100644 index 000000000..8a697e1aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/significandf.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +float significandf(float x) +{ + return scalbnf(x, -ilogbf(x)); +} diff --git a/vendor/modernc.org/libc/musl/src/math/sin.c b/vendor/modernc.org/libc/musl/src/math/sin.c new file mode 100644 index 000000000..055e215bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sin.c @@ -0,0 +1,78 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_sin.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* sin(x) + * Return sine function of x. + * + * kernel function: + * __sin ... sine function on [-pi/4,pi/4] + * __cos ... cose function on [-pi/4,pi/4] + * __rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "libm.h" + +double sin(double x) +{ + double y[2]; + uint32_t ix; + unsigned n; + + /* High word of x. */ + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + + /* |x| ~< pi/4 */ + if (ix <= 0x3fe921fb) { + if (ix < 0x3e500000) { /* |x| < 2**-26 */ + /* raise inexact if x != 0 and underflow if subnormal*/ + FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f); + return x; + } + return __sin(x, 0.0, 0); + } + + /* sin(Inf or NaN) is NaN */ + if (ix >= 0x7ff00000) + return x - x; + + /* argument reduction needed */ + n = __rem_pio2(x, y); + switch (n&3) { + case 0: return __sin(y[0], y[1], 1); + case 1: return __cos(y[0], y[1]); + case 2: return -__sin(y[0], y[1], 1); + default: + return -__cos(y[0], y[1]); + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/sincos.c b/vendor/modernc.org/libc/musl/src/math/sincos.c new file mode 100644 index 000000000..35b2d9239 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sincos.c @@ -0,0 +1,69 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_sin.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#define _GNU_SOURCE +#include "libm.h" + +void sincos(double x, double *sin, double *cos) +{ + double y[2], s, c; + uint32_t ix; + unsigned n; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + + /* |x| ~< pi/4 */ + if (ix <= 0x3fe921fb) { + /* if |x| < 2**-27 * sqrt(2) */ + if (ix < 0x3e46a09e) { + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f); + *sin = x; + *cos = 1.0; + return; + } + *sin = __sin(x, 0.0, 0); + *cos = __cos(x, 0.0); + return; + } + + /* sincos(Inf or NaN) is NaN */ + if (ix >= 0x7ff00000) { + *sin = *cos = x - x; + return; + } + + /* argument reduction needed */ + n = __rem_pio2(x, y); + s = __sin(y[0], y[1], 1); + c = __cos(y[0], y[1]); + switch (n&3) { + case 0: + *sin = s; + *cos = c; + break; + case 1: + *sin = c; + *cos = -s; + break; + case 2: + *sin = -s; + *cos = -c; + break; + case 3: + default: + *sin = -c; + *cos = s; + break; + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/sincosf.c b/vendor/modernc.org/libc/musl/src/math/sincosf.c new file mode 100644 index 000000000..f8ca7232c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sincosf.c @@ -0,0 +1,117 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_sinf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#define _GNU_SOURCE +#include "libm.h" + +/* Small multiples of pi/2 rounded to double precision. */ +static const double +s1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */ +s2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */ +s3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */ +s4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */ + +void sincosf(float x, float *sin, float *cos) +{ + double y; + float_t s, c; + uint32_t ix; + unsigned n, sign; + + GET_FLOAT_WORD(ix, x); + sign = ix >> 31; + ix &= 0x7fffffff; + + /* |x| ~<= pi/4 */ + if (ix <= 0x3f490fda) { + /* |x| < 2**-12 */ + if (ix < 0x39800000) { + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f); + *sin = x; + *cos = 1.0f; + return; + } + *sin = __sindf(x); + *cos = __cosdf(x); + return; + } + + /* |x| ~<= 5*pi/4 */ + if (ix <= 0x407b53d1) { + if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */ + if (sign) { + *sin = -__cosdf(x + s1pio2); + *cos = __sindf(x + s1pio2); + } else { + *sin = __cosdf(s1pio2 - x); + *cos = __sindf(s1pio2 - x); + } + return; + } + /* -sin(x+c) is not correct if x+c could be 0: -0 vs +0 */ + *sin = -__sindf(sign ? x + s2pio2 : x - s2pio2); + *cos = -__cosdf(sign ? x + s2pio2 : x - s2pio2); + return; + } + + /* |x| ~<= 9*pi/4 */ + if (ix <= 0x40e231d5) { + if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */ + if (sign) { + *sin = __cosdf(x + s3pio2); + *cos = -__sindf(x + s3pio2); + } else { + *sin = -__cosdf(x - s3pio2); + *cos = __sindf(x - s3pio2); + } + return; + } + *sin = __sindf(sign ? x + s4pio2 : x - s4pio2); + *cos = __cosdf(sign ? x + s4pio2 : x - s4pio2); + return; + } + + /* sin(Inf or NaN) is NaN */ + if (ix >= 0x7f800000) { + *sin = *cos = x - x; + return; + } + + /* general argument reduction needed */ + n = __rem_pio2f(x, &y); + s = __sindf(y); + c = __cosdf(y); + switch (n&3) { + case 0: + *sin = s; + *cos = c; + break; + case 1: + *sin = c; + *cos = -s; + break; + case 2: + *sin = -s; + *cos = -c; + break; + case 3: + default: + *sin = -c; + *cos = s; + break; + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/sincosl.c b/vendor/modernc.org/libc/musl/src/math/sincosl.c new file mode 100644 index 000000000..d3ac1c4c8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sincosl.c @@ -0,0 +1,60 @@ +#define _GNU_SOURCE +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +void sincosl(long double x, long double *sin, long double *cos) +{ + double sind, cosd; + sincos(x, &sind, &cosd); + *sin = sind; + *cos = cosd; +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +void sincosl(long double x, long double *sin, long double *cos) +{ + union ldshape u = {x}; + unsigned n; + long double y[2], s, c; + + u.i.se &= 0x7fff; + if (u.i.se == 0x7fff) { + *sin = *cos = x - x; + return; + } + if (u.f < M_PI_4) { + if (u.i.se < 0x3fff - LDBL_MANT_DIG) { + /* raise underflow if subnormal */ + if (u.i.se == 0) FORCE_EVAL(x*0x1p-120f); + *sin = x; + /* raise inexact if x!=0 */ + *cos = 1.0 + x; + return; + } + *sin = __sinl(x, 0, 0); + *cos = __cosl(x, 0); + return; + } + n = __rem_pio2l(x, y); + s = __sinl(y[0], y[1], 1); + c = __cosl(y[0], y[1]); + switch (n & 3) { + case 0: + *sin = s; + *cos = c; + break; + case 1: + *sin = c; + *cos = -s; + break; + case 2: + *sin = -s; + *cos = -c; + break; + case 3: + default: + *sin = -c; + *cos = s; + break; + } +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/sinf.c b/vendor/modernc.org/libc/musl/src/math/sinf.c new file mode 100644 index 000000000..64e39f501 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sinf.c @@ -0,0 +1,76 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_sinf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* Small multiples of pi/2 rounded to double precision. */ +static const double +s1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */ +s2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */ +s3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */ +s4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */ + +float sinf(float x) +{ + double y; + uint32_t ix; + int n, sign; + + GET_FLOAT_WORD(ix, x); + sign = ix >> 31; + ix &= 0x7fffffff; + + if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if (ix < 0x39800000) { /* |x| < 2**-12 */ + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(ix < 0x00800000 ? x/0x1p120f : x+0x1p120f); + return x; + } + return __sindf(x); + } + if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */ + if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */ + if (sign) + return -__cosdf(x + s1pio2); + else + return __cosdf(x - s1pio2); + } + return __sindf(sign ? -(x + s2pio2) : -(x - s2pio2)); + } + if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */ + if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */ + if (sign) + return __cosdf(x + s3pio2); + else + return -__cosdf(x - s3pio2); + } + return __sindf(sign ? x + s4pio2 : x - s4pio2); + } + + /* sin(Inf or NaN) is NaN */ + if (ix >= 0x7f800000) + return x - x; + + /* general argument reduction needed */ + n = __rem_pio2f(x, &y); + switch (n&3) { + case 0: return __sindf(y); + case 1: return __cosdf(y); + case 2: return __sindf(-y); + default: + return -__cosdf(y); + } +} diff --git a/vendor/modernc.org/libc/musl/src/math/sinh.c b/vendor/modernc.org/libc/musl/src/math/sinh.c new file mode 100644 index 000000000..a01951ae6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sinh.c @@ -0,0 +1,39 @@ +#include "libm.h" + +/* sinh(x) = (exp(x) - 1/exp(x))/2 + * = (exp(x)-1 + (exp(x)-1)/exp(x))/2 + * = x + x^3/6 + o(x^5) + */ +double sinh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + uint32_t w; + double t, h, absx; + + h = 0.5; + if (u.i >> 63) + h = -h; + /* |x| */ + u.i &= (uint64_t)-1/2; + absx = u.f; + w = u.i >> 32; + + /* |x| < log(DBL_MAX) */ + if (w < 0x40862e42) { + t = expm1(absx); + if (w < 0x3ff00000) { + if (w < 0x3ff00000 - (26<<20)) + /* note: inexact and underflow are raised by expm1 */ + /* note: this branch avoids spurious underflow */ + return x; + return h*(2*t - t*t/(t+1)); + } + /* note: |x|>log(0x1p26)+eps could be just h*exp(x) */ + return h*(t + t/(t+1)); + } + + /* |x| > log(DBL_MAX) or nan */ + /* note: the result is stored to handle overflow */ + t = __expo2(absx, 2*h); + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/sinhf.c b/vendor/modernc.org/libc/musl/src/math/sinhf.c new file mode 100644 index 000000000..b9caa793c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sinhf.c @@ -0,0 +1,31 @@ +#include "libm.h" + +float sinhf(float x) +{ + union {float f; uint32_t i;} u = {.f = x}; + uint32_t w; + float t, h, absx; + + h = 0.5; + if (u.i >> 31) + h = -h; + /* |x| */ + u.i &= 0x7fffffff; + absx = u.f; + w = u.i; + + /* |x| < log(FLT_MAX) */ + if (w < 0x42b17217) { + t = expm1f(absx); + if (w < 0x3f800000) { + if (w < 0x3f800000 - (12<<23)) + return x; + return h*(2*t - t*t/(t+1)); + } + return h*(t + t/(t+1)); + } + + /* |x| > logf(FLT_MAX) or nan */ + t = __expo2f(absx, 2*h); + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/sinhl.c b/vendor/modernc.org/libc/musl/src/math/sinhl.c new file mode 100644 index 000000000..b305d4d2f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sinhl.c @@ -0,0 +1,43 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double sinhl(long double x) +{ + return sinh(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +long double sinhl(long double x) +{ + union ldshape u = {x}; + unsigned ex = u.i.se & 0x7fff; + long double h, t, absx; + + h = 0.5; + if (u.i.se & 0x8000) + h = -h; + /* |x| */ + u.i.se = ex; + absx = u.f; + + /* |x| < log(LDBL_MAX) */ + if (ex < 0x3fff+13 || (ex == 0x3fff+13 && u.i.m>>32 < 0xb17217f7)) { + t = expm1l(absx); + if (ex < 0x3fff) { + if (ex < 0x3fff-32) + return x; + return h*(2*t - t*t/(1+t)); + } + return h*(t + t/(t+1)); + } + + /* |x| > log(LDBL_MAX) or nan */ + t = expl(0.5*absx); + return h*t*t; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double sinhl(long double x) +{ + return sinh(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/sinl.c b/vendor/modernc.org/libc/musl/src/math/sinl.c new file mode 100644 index 000000000..9c0b16eed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sinl.c @@ -0,0 +1,41 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double sinl(long double x) +{ + return sin(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double sinl(long double x) +{ + union ldshape u = {x}; + unsigned n; + long double y[2], hi, lo; + + u.i.se &= 0x7fff; + if (u.i.se == 0x7fff) + return x - x; + if (u.f < M_PI_4) { + if (u.i.se < 0x3fff - LDBL_MANT_DIG/2) { + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(u.i.se == 0 ? x*0x1p-120f : x+0x1p120f); + return x; + } + return __sinl(x, 0.0, 0); + } + n = __rem_pio2l(x, y); + hi = y[0]; + lo = y[1]; + switch (n & 3) { + case 0: + return __sinl(hi, lo, 1); + case 1: + return __cosl(hi, lo); + case 2: + return -__sinl(hi, lo, 1); + case 3: + default: + return -__cosl(hi, lo); + } +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/sqrt.c b/vendor/modernc.org/libc/musl/src/math/sqrt.c new file mode 100644 index 000000000..f1f6d76c7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sqrt.c @@ -0,0 +1,184 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrt.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* sqrt(x) + * Return correctly rounded sqrt. + * ------------------------------------------ + * | Use the hardware sqrt if you have one | + * ------------------------------------------ + * Method: + * Bit by bit method using integer arithmetic. (Slow, but portable) + * 1. Normalization + * Scale x to y in [1,4) with even powers of 2: + * find an integer k such that 1 <= (y=x*2^(2k)) < 4, then + * sqrt(x) = 2^k * sqrt(y) + * 2. Bit by bit computation + * Let q = sqrt(y) truncated to i bit after binary point (q = 1), + * i 0 + * i+1 2 + * s = 2*q , and y = 2 * ( y - q ). (1) + * i i i i + * + * To compute q from q , one checks whether + * i+1 i + * + * -(i+1) 2 + * (q + 2 ) <= y. (2) + * i + * -(i+1) + * If (2) is false, then q = q ; otherwise q = q + 2 . + * i+1 i i+1 i + * + * With some algebric manipulation, it is not difficult to see + * that (2) is equivalent to + * -(i+1) + * s + 2 <= y (3) + * i i + * + * The advantage of (3) is that s and y can be computed by + * i i + * the following recurrence formula: + * if (3) is false + * + * s = s , y = y ; (4) + * i+1 i i+1 i + * + * otherwise, + * -i -(i+1) + * s = s + 2 , y = y - s - 2 (5) + * i+1 i i+1 i i + * + * One may easily use induction to prove (4) and (5). + * Note. Since the left hand side of (3) contain only i+2 bits, + * it does not necessary to do a full (53-bit) comparison + * in (3). + * 3. Final rounding + * After generating the 53 bits result, we compute one more bit. + * Together with the remainder, we can decide whether the + * result is exact, bigger than 1/2ulp, or less than 1/2ulp + * (it will never equal to 1/2ulp). + * The rounding mode can be detected by checking whether + * huge + tiny is equal to huge, and whether huge - tiny is + * equal to huge for some floating point number "huge" and "tiny". + * + * Special cases: + * sqrt(+-0) = +-0 ... exact + * sqrt(inf) = inf + * sqrt(-ve) = NaN ... with invalid signal + * sqrt(NaN) = NaN ... with invalid signal for signaling NaN + */ + +#include "libm.h" + +static const double tiny = 1.0e-300; + +double sqrt(double x) +{ + double z; + int32_t sign = (int)0x80000000; + int32_t ix0,s0,q,m,t,i; + uint32_t r,t1,s1,ix1,q1; + + EXTRACT_WORDS(ix0, ix1, x); + + /* take care of Inf and NaN */ + if ((ix0&0x7ff00000) == 0x7ff00000) { + return x*x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */ + } + /* take care of zero */ + if (ix0 <= 0) { + if (((ix0&~sign)|ix1) == 0) + return x; /* sqrt(+-0) = +-0 */ + if (ix0 < 0) + return (x-x)/(x-x); /* sqrt(-ve) = sNaN */ + } + /* normalize x */ + m = ix0>>20; + if (m == 0) { /* subnormal x */ + while (ix0 == 0) { + m -= 21; + ix0 |= (ix1>>11); + ix1 <<= 21; + } + for (i=0; (ix0&0x00100000) == 0; i++) + ix0<<=1; + m -= i - 1; + ix0 |= ix1>>(32-i); + ix1 <<= i; + } + m -= 1023; /* unbias exponent */ + ix0 = (ix0&0x000fffff)|0x00100000; + if (m & 1) { /* odd m, double x to make it even */ + ix0 += ix0 + ((ix1&sign)>>31); + ix1 += ix1; + } + m >>= 1; /* m = [m/2] */ + + /* generate sqrt(x) bit by bit */ + ix0 += ix0 + ((ix1&sign)>>31); + ix1 += ix1; + q = q1 = s0 = s1 = 0; /* [q,q1] = sqrt(x) */ + r = 0x00200000; /* r = moving bit from right to left */ + + while (r != 0) { + t = s0 + r; + if (t <= ix0) { + s0 = t + r; + ix0 -= t; + q += r; + } + ix0 += ix0 + ((ix1&sign)>>31); + ix1 += ix1; + r >>= 1; + } + + r = sign; + while (r != 0) { + t1 = s1 + r; + t = s0; + if (t < ix0 || (t == ix0 && t1 <= ix1)) { + s1 = t1 + r; + if ((t1&sign) == sign && (s1&sign) == 0) + s0++; + ix0 -= t; + if (ix1 < t1) + ix0--; + ix1 -= t1; + q1 += r; + } + ix0 += ix0 + ((ix1&sign)>>31); + ix1 += ix1; + r >>= 1; + } + + /* use floating add to find out rounding direction */ + if ((ix0|ix1) != 0) { + z = 1.0 - tiny; /* raise inexact flag */ + if (z >= 1.0) { + z = 1.0 + tiny; + if (q1 == (uint32_t)0xffffffff) { + q1 = 0; + q++; + } else if (z > 1.0) { + if (q1 == (uint32_t)0xfffffffe) + q++; + q1 += 2; + } else + q1 += q1 & 1; + } + } + ix0 = (q>>1) + 0x3fe00000; + ix1 = q1>>1; + if (q&1) + ix1 |= sign; + INSERT_WORDS(z, ix0 + ((uint32_t)m << 20), ix1); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/sqrtf.c new file mode 100644 index 000000000..d6ace38aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sqrtf.c @@ -0,0 +1,83 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrtf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +static const float tiny = 1.0e-30; + +float sqrtf(float x) +{ + float z; + int32_t sign = (int)0x80000000; + int32_t ix,s,q,m,t,i; + uint32_t r; + + GET_FLOAT_WORD(ix, x); + + /* take care of Inf and NaN */ + if ((ix&0x7f800000) == 0x7f800000) + return x*x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */ + + /* take care of zero */ + if (ix <= 0) { + if ((ix&~sign) == 0) + return x; /* sqrt(+-0) = +-0 */ + if (ix < 0) + return (x-x)/(x-x); /* sqrt(-ve) = sNaN */ + } + /* normalize x */ + m = ix>>23; + if (m == 0) { /* subnormal x */ + for (i = 0; (ix&0x00800000) == 0; i++) + ix<<=1; + m -= i - 1; + } + m -= 127; /* unbias exponent */ + ix = (ix&0x007fffff)|0x00800000; + if (m&1) /* odd m, double x to make it even */ + ix += ix; + m >>= 1; /* m = [m/2] */ + + /* generate sqrt(x) bit by bit */ + ix += ix; + q = s = 0; /* q = sqrt(x) */ + r = 0x01000000; /* r = moving bit from right to left */ + + while (r != 0) { + t = s + r; + if (t <= ix) { + s = t+r; + ix -= t; + q += r; + } + ix += ix; + r >>= 1; + } + + /* use floating add to find out rounding direction */ + if (ix != 0) { + z = 1.0f - tiny; /* raise inexact flag */ + if (z >= 1.0f) { + z = 1.0f + tiny; + if (z > 1.0f) + q += 2; + else + q += q & 1; + } + } + ix = (q>>1) + 0x3f000000; + SET_FLOAT_WORD(z, ix + ((uint32_t)m << 23)); + return z; +} diff --git a/vendor/modernc.org/libc/musl/src/math/sqrtl.c b/vendor/modernc.org/libc/musl/src/math/sqrtl.c new file mode 100644 index 000000000..83a8f80c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/sqrtl.c @@ -0,0 +1,7 @@ +#include + +long double sqrtl(long double x) +{ + /* FIXME: implement in C, this is for LDBL_MANT_DIG == 64 only */ + return sqrt(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/tan.c b/vendor/modernc.org/libc/musl/src/math/tan.c new file mode 100644 index 000000000..9c724a45a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tan.c @@ -0,0 +1,70 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_tan.c */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +/* tan(x) + * Return tangent function of x. + * + * kernel function: + * __tan ... tangent function on [-pi/4,pi/4] + * __rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "libm.h" + +double tan(double x) +{ + double y[2]; + uint32_t ix; + unsigned n; + + GET_HIGH_WORD(ix, x); + ix &= 0x7fffffff; + + /* |x| ~< pi/4 */ + if (ix <= 0x3fe921fb) { + if (ix < 0x3e400000) { /* |x| < 2**-27 */ + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f); + return x; + } + return __tan(x, 0.0, 0); + } + + /* tan(Inf or NaN) is NaN */ + if (ix >= 0x7ff00000) + return x - x; + + /* argument reduction */ + n = __rem_pio2(x, y); + return __tan(y[0], y[1], n&1); +} diff --git a/vendor/modernc.org/libc/musl/src/math/tanf.c b/vendor/modernc.org/libc/musl/src/math/tanf.c new file mode 100644 index 000000000..aba197777 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tanf.c @@ -0,0 +1,64 @@ +/* origin: FreeBSD /usr/src/lib/msun/src/s_tanf.c */ +/* + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include "libm.h" + +/* Small multiples of pi/2 rounded to double precision. */ +static const double +t1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */ +t2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */ +t3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */ +t4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */ + +float tanf(float x) +{ + double y; + uint32_t ix; + unsigned n, sign; + + GET_FLOAT_WORD(ix, x); + sign = ix >> 31; + ix &= 0x7fffffff; + + if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if (ix < 0x39800000) { /* |x| < 2**-12 */ + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(ix < 0x00800000 ? x/0x1p120f : x+0x1p120f); + return x; + } + return __tandf(x, 0); + } + if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */ + if (ix <= 0x4016cbe3) /* |x| ~<= 3pi/4 */ + return __tandf((sign ? x+t1pio2 : x-t1pio2), 1); + else + return __tandf((sign ? x+t2pio2 : x-t2pio2), 0); + } + if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */ + if (ix <= 0x40afeddf) /* |x| ~<= 7*pi/4 */ + return __tandf((sign ? x+t3pio2 : x-t3pio2), 1); + else + return __tandf((sign ? x+t4pio2 : x-t4pio2), 0); + } + + /* tan(Inf or NaN) is NaN */ + if (ix >= 0x7f800000) + return x - x; + + /* argument reduction */ + n = __rem_pio2f(x, &y); + return __tandf(y, n&1); +} diff --git a/vendor/modernc.org/libc/musl/src/math/tanh.c b/vendor/modernc.org/libc/musl/src/math/tanh.c new file mode 100644 index 000000000..20d6dbcf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tanh.c @@ -0,0 +1,45 @@ +#include "libm.h" + +/* tanh(x) = (exp(x) - exp(-x))/(exp(x) + exp(-x)) + * = (exp(2*x) - 1)/(exp(2*x) - 1 + 2) + * = (1 - exp(-2*x))/(exp(-2*x) - 1 + 2) + */ +double tanh(double x) +{ + union {double f; uint64_t i;} u = {.f = x}; + uint32_t w; + int sign; + double_t t; + + /* x = |x| */ + sign = u.i >> 63; + u.i &= (uint64_t)-1/2; + x = u.f; + w = u.i >> 32; + + if (w > 0x3fe193ea) { + /* |x| > log(3)/2 ~= 0.5493 or nan */ + if (w > 0x40340000) { + /* |x| > 20 or nan */ + /* note: this branch avoids raising overflow */ + t = 1 - 0/x; + } else { + t = expm1(2*x); + t = 1 - 2/(t+2); + } + } else if (w > 0x3fd058ae) { + /* |x| > log(5/3)/2 ~= 0.2554 */ + t = expm1(2*x); + t = t/(t+2); + } else if (w >= 0x00100000) { + /* |x| >= 0x1p-1022, up to 2ulp error in [0.1,0.2554] */ + t = expm1(-2*x); + t = -t/(t+2); + } else { + /* |x| is subnormal */ + /* note: the branch above would not raise underflow in [0x1p-1023,0x1p-1022) */ + FORCE_EVAL((float)x); + t = x; + } + return sign ? -t : t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/tanhf.c b/vendor/modernc.org/libc/musl/src/math/tanhf.c new file mode 100644 index 000000000..10636fbd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tanhf.c @@ -0,0 +1,39 @@ +#include "libm.h" + +float tanhf(float x) +{ + union {float f; uint32_t i;} u = {.f = x}; + uint32_t w; + int sign; + float t; + + /* x = |x| */ + sign = u.i >> 31; + u.i &= 0x7fffffff; + x = u.f; + w = u.i; + + if (w > 0x3f0c9f54) { + /* |x| > log(3)/2 ~= 0.5493 or nan */ + if (w > 0x41200000) { + /* |x| > 10 */ + t = 1 + 0/x; + } else { + t = expm1f(2*x); + t = 1 - 2/(t+2); + } + } else if (w > 0x3e82c578) { + /* |x| > log(5/3)/2 ~= 0.2554 */ + t = expm1f(2*x); + t = t/(t+2); + } else if (w >= 0x00800000) { + /* |x| >= 0x1p-126 */ + t = expm1f(-2*x); + t = -t/(t+2); + } else { + /* |x| is subnormal */ + FORCE_EVAL(x*x); + t = x; + } + return sign ? -t : t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/tanhl.c b/vendor/modernc.org/libc/musl/src/math/tanhl.c new file mode 100644 index 000000000..4e1aa9f87 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tanhl.c @@ -0,0 +1,48 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double tanhl(long double x) +{ + return tanh(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +long double tanhl(long double x) +{ + union ldshape u = {x}; + unsigned ex = u.i.se & 0x7fff; + unsigned sign = u.i.se & 0x8000; + uint32_t w; + long double t; + + /* x = |x| */ + u.i.se = ex; + x = u.f; + w = u.i.m >> 32; + + if (ex > 0x3ffe || (ex == 0x3ffe && w > 0x8c9f53d5)) { + /* |x| > log(3)/2 ~= 0.5493 or nan */ + if (ex >= 0x3fff+5) { + /* |x| >= 32 */ + t = 1 + 0/(x + 0x1p-120f); + } else { + t = expm1l(2*x); + t = 1 - 2/(t+2); + } + } else if (ex > 0x3ffd || (ex == 0x3ffd && w > 0x82c577d4)) { + /* |x| > log(5/3)/2 ~= 0.2554 */ + t = expm1l(2*x); + t = t/(t+2); + } else { + /* |x| is small */ + t = expm1l(-2*x); + t = -t/(t+2); + } + return sign ? -t : t; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double tanhl(long double x) +{ + return tanh(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/tanl.c b/vendor/modernc.org/libc/musl/src/math/tanl.c new file mode 100644 index 000000000..6af067127 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tanl.c @@ -0,0 +1,29 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double tanl(long double x) +{ + return tan(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double tanl(long double x) +{ + union ldshape u = {x}; + long double y[2]; + unsigned n; + + u.i.se &= 0x7fff; + if (u.i.se == 0x7fff) + return x - x; + if (u.f < M_PI_4) { + if (u.i.se < 0x3fff - LDBL_MANT_DIG/2) { + /* raise inexact if x!=0 and underflow if subnormal */ + FORCE_EVAL(u.i.se == 0 ? x*0x1p-120f : x+0x1p120f); + return x; + } + return __tanl(x, 0, 0); + } + n = __rem_pio2l(x, y); + return __tanl(y[0], y[1], n&1); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/tgamma.c b/vendor/modernc.org/libc/musl/src/math/tgamma.c new file mode 100644 index 000000000..28f6e0f83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tgamma.c @@ -0,0 +1,222 @@ +/* +"A Precision Approximation of the Gamma Function" - Cornelius Lanczos (1964) +"Lanczos Implementation of the Gamma Function" - Paul Godfrey (2001) +"An Analysis of the Lanczos Gamma Approximation" - Glendon Ralph Pugh (2004) + +approximation method: + + (x - 0.5) S(x) +Gamma(x) = (x + g - 0.5) * ---------------- + exp(x + g - 0.5) + +with + a1 a2 a3 aN +S(x) ~= [ a0 + ----- + ----- + ----- + ... + ----- ] + x + 1 x + 2 x + 3 x + N + +with a0, a1, a2, a3,.. aN constants which depend on g. + +for x < 0 the following reflection formula is used: + +Gamma(x)*Gamma(-x) = -pi/(x sin(pi x)) + +most ideas and constants are from boost and python +*/ +#include "libm.h" + +static const double pi = 3.141592653589793238462643383279502884; + +/* sin(pi x) with x > 0x1p-100, if sin(pi*x)==0 the sign is arbitrary */ +static double sinpi(double x) +{ + int n; + + /* argument reduction: x = |x| mod 2 */ + /* spurious inexact when x is odd int */ + x = x * 0.5; + x = 2 * (x - floor(x)); + + /* reduce x into [-.25,.25] */ + n = 4 * x; + n = (n+1)/2; + x -= n * 0.5; + + x *= pi; + switch (n) { + default: /* case 4 */ + case 0: + return __sin(x, 0, 0); + case 1: + return __cos(x, 0); + case 2: + return __sin(-x, 0, 0); + case 3: + return -__cos(x, 0); + } +} + +#define N 12 +//static const double g = 6.024680040776729583740234375; +static const double gmhalf = 5.524680040776729583740234375; +static const double Snum[N+1] = { + 23531376880.410759688572007674451636754734846804940, + 42919803642.649098768957899047001988850926355848959, + 35711959237.355668049440185451547166705960488635843, + 17921034426.037209699919755754458931112671403265390, + 6039542586.3520280050642916443072979210699388420708, + 1439720407.3117216736632230727949123939715485786772, + 248874557.86205415651146038641322942321632125127801, + 31426415.585400194380614231628318205362874684987640, + 2876370.6289353724412254090516208496135991145378768, + 186056.26539522349504029498971604569928220784236328, + 8071.6720023658162106380029022722506138218516325024, + 210.82427775157934587250973392071336271166969580291, + 2.5066282746310002701649081771338373386264310793408, +}; +static const double Sden[N+1] = { + 0, 39916800, 120543840, 150917976, 105258076, 45995730, 13339535, + 2637558, 357423, 32670, 1925, 66, 1, +}; +/* n! for small integer n */ +static const double fact[] = { + 1, 1, 2, 6, 24, 120, 720, 5040.0, 40320.0, 362880.0, 3628800.0, 39916800.0, + 479001600.0, 6227020800.0, 87178291200.0, 1307674368000.0, 20922789888000.0, + 355687428096000.0, 6402373705728000.0, 121645100408832000.0, + 2432902008176640000.0, 51090942171709440000.0, 1124000727777607680000.0, +}; + +/* S(x) rational function for positive x */ +static double S(double x) +{ + double_t num = 0, den = 0; + int i; + + /* to avoid overflow handle large x differently */ + if (x < 8) + for (i = N; i >= 0; i--) { + num = num * x + Snum[i]; + den = den * x + Sden[i]; + } + else + for (i = 0; i <= N; i++) { + num = num / x + Snum[i]; + den = den / x + Sden[i]; + } + return num/den; +} + +double tgamma(double x) +{ + union {double f; uint64_t i;} u = {x}; + double absx, y; + double_t dy, z, r; + uint32_t ix = u.i>>32 & 0x7fffffff; + int sign = u.i>>63; + + /* special cases */ + if (ix >= 0x7ff00000) + /* tgamma(nan)=nan, tgamma(inf)=inf, tgamma(-inf)=nan with invalid */ + return x + INFINITY; + if (ix < (0x3ff-54)<<20) + /* |x| < 2^-54: tgamma(x) ~ 1/x, +-0 raises div-by-zero */ + return 1/x; + + /* integer arguments */ + /* raise inexact when non-integer */ + if (x == floor(x)) { + if (sign) + return 0/0.0; + if (x <= sizeof fact/sizeof *fact) + return fact[(int)x - 1]; + } + + /* x >= 172: tgamma(x)=inf with overflow */ + /* x =< -184: tgamma(x)=+-0 with underflow */ + if (ix >= 0x40670000) { /* |x| >= 184 */ + if (sign) { + FORCE_EVAL((float)(0x1p-126/x)); + if (floor(x) * 0.5 == floor(x * 0.5)) + return 0; + return -0.0; + } + x *= 0x1p1023; + return x; + } + + absx = sign ? -x : x; + + /* handle the error of x + g - 0.5 */ + y = absx + gmhalf; + if (absx > gmhalf) { + dy = y - absx; + dy -= gmhalf; + } else { + dy = y - gmhalf; + dy -= absx; + } + + z = absx - 0.5; + r = S(absx) * exp(-y); + if (x < 0) { + /* reflection formula for negative x */ + /* sinpi(absx) is not 0, integers are already handled */ + r = -pi / (sinpi(absx) * absx * r); + dy = -dy; + z = -z; + } + r += dy * (gmhalf+0.5) * r / y; + z = pow(y, 0.5*z); + y = r * z * z; + return y; +} + +#if 0 +double __lgamma_r(double x, int *sign) +{ + double r, absx; + + *sign = 1; + + /* special cases */ + if (!isfinite(x)) + /* lgamma(nan)=nan, lgamma(+-inf)=inf */ + return x*x; + + /* integer arguments */ + if (x == floor(x) && x <= 2) { + /* n <= 0: lgamma(n)=inf with divbyzero */ + /* n == 1,2: lgamma(n)=0 */ + if (x <= 0) + return 1/0.0; + return 0; + } + + absx = fabs(x); + + /* lgamma(x) ~ -log(|x|) for tiny |x| */ + if (absx < 0x1p-54) { + *sign = 1 - 2*!!signbit(x); + return -log(absx); + } + + /* use tgamma for smaller |x| */ + if (absx < 128) { + x = tgamma(x); + *sign = 1 - 2*!!signbit(x); + return log(fabs(x)); + } + + /* second term (log(S)-g) could be more precise here.. */ + /* or with stirling: (|x|-0.5)*(log(|x|)-1) + poly(1/|x|) */ + r = (absx-0.5)*(log(absx+gmhalf)-1) + (log(S(absx)) - (gmhalf+0.5)); + if (x < 0) { + /* reflection formula for negative x */ + x = sinpi(absx); + *sign = 2*!!signbit(x) - 1; + r = log(pi/(fabs(x)*absx)) - r; + } + return r; +} + +weak_alias(__lgamma_r, lgamma_r); +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/tgammaf.c b/vendor/modernc.org/libc/musl/src/math/tgammaf.c new file mode 100644 index 000000000..b4ca51c9f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tgammaf.c @@ -0,0 +1,6 @@ +#include + +float tgammaf(float x) +{ + return tgamma(x); +} diff --git a/vendor/modernc.org/libc/musl/src/math/tgammal.c b/vendor/modernc.org/libc/musl/src/math/tgammal.c new file mode 100644 index 000000000..5336c5b19 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/tgammal.c @@ -0,0 +1,281 @@ +/* origin: OpenBSD /usr/src/lib/libm/src/ld80/e_tgammal.c */ +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +/* + * Gamma function + * + * + * SYNOPSIS: + * + * long double x, y, tgammal(); + * + * y = tgammal( x ); + * + * + * DESCRIPTION: + * + * Returns gamma function of the argument. The result is + * correctly signed. + * + * Arguments |x| <= 13 are reduced by recurrence and the function + * approximated by a rational function of degree 7/8 in the + * interval (2,3). Large arguments are handled by Stirling's + * formula. Large negative arguments are made positive using + * a reflection formula. + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -40,+40 10000 3.6e-19 7.9e-20 + * IEEE -1755,+1755 10000 4.8e-18 6.5e-19 + * + * Accuracy for large arguments is dominated by error in powl(). + * + */ + +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double tgammal(long double x) +{ + return tgamma(x); +} +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +/* +tgamma(x+2) = tgamma(x+2) P(x)/Q(x) +0 <= x <= 1 +Relative error +n=7, d=8 +Peak error = 1.83e-20 +Relative error spread = 8.4e-23 +*/ +static const long double P[8] = { + 4.212760487471622013093E-5L, + 4.542931960608009155600E-4L, + 4.092666828394035500949E-3L, + 2.385363243461108252554E-2L, + 1.113062816019361559013E-1L, + 3.629515436640239168939E-1L, + 8.378004301573126728826E-1L, + 1.000000000000000000009E0L, +}; +static const long double Q[9] = { +-1.397148517476170440917E-5L, + 2.346584059160635244282E-4L, +-1.237799246653152231188E-3L, +-7.955933682494738320586E-4L, + 2.773706565840072979165E-2L, +-4.633887671244534213831E-2L, +-2.243510905670329164562E-1L, + 4.150160950588455434583E-1L, + 9.999999999999999999908E-1L, +}; + +/* +static const long double P[] = { +-3.01525602666895735709e0L, +-3.25157411956062339893e1L, +-2.92929976820724030353e2L, +-1.70730828800510297666e3L, +-7.96667499622741999770e3L, +-2.59780216007146401957e4L, +-5.99650230220855581642e4L, +-7.15743521530849602425e4L +}; +static const long double Q[] = { + 1.00000000000000000000e0L, +-1.67955233807178858919e1L, + 8.85946791747759881659e1L, + 5.69440799097468430177e1L, +-1.98526250512761318471e3L, + 3.31667508019495079814e3L, + 1.60577839621734713377e4L, +-2.97045081369399940529e4L, +-7.15743521530849602412e4L +}; +*/ +#define MAXGAML 1755.455L +/*static const long double LOGPI = 1.14472988584940017414L;*/ + +/* Stirling's formula for the gamma function +tgamma(x) = sqrt(2 pi) x^(x-.5) exp(-x) (1 + 1/x P(1/x)) +z(x) = x +13 <= x <= 1024 +Relative error +n=8, d=0 +Peak error = 9.44e-21 +Relative error spread = 8.8e-4 +*/ +static const long double STIR[9] = { + 7.147391378143610789273E-4L, +-2.363848809501759061727E-5L, +-5.950237554056330156018E-4L, + 6.989332260623193171870E-5L, + 7.840334842744753003862E-4L, +-2.294719747873185405699E-4L, +-2.681327161876304418288E-3L, + 3.472222222230075327854E-3L, + 8.333333333333331800504E-2L, +}; + +#define MAXSTIR 1024.0L +static const long double SQTPI = 2.50662827463100050242E0L; + +/* 1/tgamma(x) = z P(z) + * z(x) = 1/x + * 0 < x < 0.03125 + * Peak relative error 4.2e-23 + */ +static const long double S[9] = { +-1.193945051381510095614E-3L, + 7.220599478036909672331E-3L, +-9.622023360406271645744E-3L, +-4.219773360705915470089E-2L, + 1.665386113720805206758E-1L, +-4.200263503403344054473E-2L, +-6.558780715202540684668E-1L, + 5.772156649015328608253E-1L, + 1.000000000000000000000E0L, +}; + +/* 1/tgamma(-x) = z P(z) + * z(x) = 1/x + * 0 < x < 0.03125 + * Peak relative error 5.16e-23 + * Relative error spread = 2.5e-24 + */ +static const long double SN[9] = { + 1.133374167243894382010E-3L, + 7.220837261893170325704E-3L, + 9.621911155035976733706E-3L, +-4.219773343731191721664E-2L, +-1.665386113944413519335E-1L, +-4.200263503402112910504E-2L, + 6.558780715202536547116E-1L, + 5.772156649015328608727E-1L, +-1.000000000000000000000E0L, +}; + +static const long double PIL = 3.1415926535897932384626L; + +/* Gamma function computed by Stirling's formula. + */ +static long double stirf(long double x) +{ + long double y, w, v; + + w = 1.0/x; + /* For large x, use rational coefficients from the analytical expansion. */ + if (x > 1024.0) + w = (((((6.97281375836585777429E-5L * w + + 7.84039221720066627474E-4L) * w + - 2.29472093621399176955E-4L) * w + - 2.68132716049382716049E-3L) * w + + 3.47222222222222222222E-3L) * w + + 8.33333333333333333333E-2L) * w + + 1.0; + else + w = 1.0 + w * __polevll(w, STIR, 8); + y = expl(x); + if (x > MAXSTIR) { /* Avoid overflow in pow() */ + v = powl(x, 0.5L * x - 0.25L); + y = v * (v / y); + } else { + y = powl(x, x - 0.5L) / y; + } + y = SQTPI * y * w; + return y; +} + +long double tgammal(long double x) +{ + long double p, q, z; + + if (!isfinite(x)) + return x + INFINITY; + + q = fabsl(x); + if (q > 13.0) { + if (x < 0.0) { + p = floorl(q); + z = q - p; + if (z == 0) + return 0 / z; + if (q > MAXGAML) { + z = 0; + } else { + if (z > 0.5) { + p += 1.0; + z = q - p; + } + z = q * sinl(PIL * z); + z = fabsl(z) * stirf(q); + z = PIL/z; + } + if (0.5 * p == floorl(q * 0.5)) + z = -z; + } else if (x > MAXGAML) { + z = x * 0x1p16383L; + } else { + z = stirf(x); + } + return z; + } + + z = 1.0; + while (x >= 3.0) { + x -= 1.0; + z *= x; + } + while (x < -0.03125L) { + z /= x; + x += 1.0; + } + if (x <= 0.03125L) + goto small; + while (x < 2.0) { + z /= x; + x += 1.0; + } + if (x == 2.0) + return z; + + x -= 2.0; + p = __polevll(x, P, 7); + q = __polevll(x, Q, 8); + z = z * p / q; + return z; + +small: + /* z==1 if x was originally +-0 */ + if (x == 0 && z != 1) + return x / x; + if (x < 0.0) { + x = -x; + q = z / (x * __polevll(x, SN, 8)); + } else + q = z / (x * __polevll(x, S, 8)); + return q; +} +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +// TODO: broken implementation to make things compile +long double tgammal(long double x) +{ + return tgamma(x); +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/trunc.c b/vendor/modernc.org/libc/musl/src/math/trunc.c new file mode 100644 index 000000000..d13711b50 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/trunc.c @@ -0,0 +1,19 @@ +#include "libm.h" + +double trunc(double x) +{ + union {double f; uint64_t i;} u = {x}; + int e = (int)(u.i >> 52 & 0x7ff) - 0x3ff + 12; + uint64_t m; + + if (e >= 52 + 12) + return x; + if (e < 12) + e = 1; + m = -1ULL >> e; + if ((u.i & m) == 0) + return x; + FORCE_EVAL(x + 0x1p120f); + u.i &= ~m; + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/truncf.c b/vendor/modernc.org/libc/musl/src/math/truncf.c new file mode 100644 index 000000000..1a7d03c3b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/truncf.c @@ -0,0 +1,19 @@ +#include "libm.h" + +float truncf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = (int)(u.i >> 23 & 0xff) - 0x7f + 9; + uint32_t m; + + if (e >= 23 + 9) + return x; + if (e < 9) + e = 1; + m = -1U >> e; + if ((u.i & m) == 0) + return x; + FORCE_EVAL(x + 0x1p120f); + u.i &= ~m; + return u.f; +} diff --git a/vendor/modernc.org/libc/musl/src/math/truncl.c b/vendor/modernc.org/libc/musl/src/math/truncl.c new file mode 100644 index 000000000..f07b19340 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/truncl.c @@ -0,0 +1,34 @@ +#include "libm.h" + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +long double truncl(long double x) +{ + return trunc(x); +} +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 + +static const long double toint = 1/LDBL_EPSILON; + +long double truncl(long double x) +{ + union ldshape u = {x}; + int e = u.i.se & 0x7fff; + int s = u.i.se >> 15; + long double y; + + if (e >= 0x3fff+LDBL_MANT_DIG-1) + return x; + if (e <= 0x3fff-1) { + FORCE_EVAL(x + 0x1p120f); + return x*0; + } + /* y = int(|x|) - |x|, where int(|x|) is an integer neighbor of |x| */ + if (s) + x = -x; + y = x + toint - toint - x; + if (y > 0) + y -= 1; + x += y; + return s ? -x : x; +} +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/x32/fma.c b/vendor/modernc.org/libc/musl/src/math/x32/fma.c new file mode 100644 index 000000000..4dd53f2ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x32/fma.c @@ -0,0 +1,23 @@ +#include + +#if __FMA__ + +double fma(double x, double y, double z) +{ + __asm__ ("vfmadd132sd %1, %2, %0" : "+x" (x) : "x" (y), "x" (z)); + return x; +} + +#elif __FMA4__ + +double fma(double x, double y, double z) +{ + __asm__ ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z)); + return x; +} + +#else + +#include "../fma.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/x32/fmaf.c b/vendor/modernc.org/libc/musl/src/math/x32/fmaf.c new file mode 100644 index 000000000..30b971ff9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x32/fmaf.c @@ -0,0 +1,23 @@ +#include + +#if __FMA__ + +float fmaf(float x, float y, float z) +{ + __asm__ ("vfmadd132ss %1, %2, %0" : "+x" (x) : "x" (y), "x" (z)); + return x; +} + +#elif __FMA4__ + +float fmaf(float x, float y, float z) +{ + __asm__ ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z)); + return x; +} + +#else + +#include "../fmaf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fabs.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fabs.c new file mode 100644 index 000000000..165624777 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fabs.c @@ -0,0 +1,10 @@ +#include + +double fabs(double x) +{ + double t; + __asm__ ("pcmpeqd %0, %0" : "=x"(t)); // t = ~0 + __asm__ ("psrlq $1, %0" : "+x"(t)); // t >>= 1 + __asm__ ("andps %1, %0" : "+x"(x) : "x"(t)); // x &= t + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fabsf.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fabsf.c new file mode 100644 index 000000000..36ea7481f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fabsf.c @@ -0,0 +1,10 @@ +#include + +float fabsf(float x) +{ + float t; + __asm__ ("pcmpeqd %0, %0" : "=x"(t)); // t = ~0 + __asm__ ("psrld $1, %0" : "+x"(t)); // t >>= 1 + __asm__ ("andps %1, %0" : "+x"(x) : "x"(t)); // x &= t + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fabsl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fabsl.c new file mode 100644 index 000000000..cc1c9ed9c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fabsl.c @@ -0,0 +1,7 @@ +#include + +long double fabsl(long double x) +{ + __asm__ ("fabs" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fma.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fma.c new file mode 100644 index 000000000..4dd53f2ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fma.c @@ -0,0 +1,23 @@ +#include + +#if __FMA__ + +double fma(double x, double y, double z) +{ + __asm__ ("vfmadd132sd %1, %2, %0" : "+x" (x) : "x" (y), "x" (z)); + return x; +} + +#elif __FMA4__ + +double fma(double x, double y, double z) +{ + __asm__ ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z)); + return x; +} + +#else + +#include "../fma.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fmaf.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fmaf.c new file mode 100644 index 000000000..30b971ff9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fmaf.c @@ -0,0 +1,23 @@ +#include + +#if __FMA__ + +float fmaf(float x, float y, float z) +{ + __asm__ ("vfmadd132ss %1, %2, %0" : "+x" (x) : "x" (y), "x" (z)); + return x; +} + +#elif __FMA4__ + +float fmaf(float x, float y, float z) +{ + __asm__ ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z)); + return x; +} + +#else + +#include "../fmaf.c" + +#endif diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/fmodl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/fmodl.c new file mode 100644 index 000000000..3daeab060 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/fmodl.c @@ -0,0 +1,9 @@ +#include + +long double fmodl(long double x, long double y) +{ + unsigned short fpsr; + do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/llrint.c b/vendor/modernc.org/libc/musl/src/math/x86_64/llrint.c new file mode 100644 index 000000000..dd38a7223 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/llrint.c @@ -0,0 +1,8 @@ +#include + +long long llrint(double x) +{ + long long r; + __asm__ ("cvtsd2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/llrintf.c b/vendor/modernc.org/libc/musl/src/math/x86_64/llrintf.c new file mode 100644 index 000000000..fc8625e88 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/llrintf.c @@ -0,0 +1,8 @@ +#include + +long long llrintf(float x) +{ + long long r; + __asm__ ("cvtss2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/llrintl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/llrintl.c new file mode 100644 index 000000000..c439ef28d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/llrintl.c @@ -0,0 +1,8 @@ +#include + +long long llrintl(long double x) +{ + long long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/lrint.c b/vendor/modernc.org/libc/musl/src/math/x86_64/lrint.c new file mode 100644 index 000000000..a742fec64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/lrint.c @@ -0,0 +1,8 @@ +#include + +long lrint(double x) +{ + long r; + __asm__ ("cvtsd2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/lrintf.c b/vendor/modernc.org/libc/musl/src/math/x86_64/lrintf.c new file mode 100644 index 000000000..2ba5639dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/lrintf.c @@ -0,0 +1,8 @@ +#include + +long lrintf(float x) +{ + long r; + __asm__ ("cvtss2si %1, %0" : "=r"(r) : "x"(x)); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/lrintl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/lrintl.c new file mode 100644 index 000000000..068e2e4d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/lrintl.c @@ -0,0 +1,8 @@ +#include + +long lrintl(long double x) +{ + long r; + __asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st"); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/remainderl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/remainderl.c new file mode 100644 index 000000000..8cf75071e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/remainderl.c @@ -0,0 +1,9 @@ +#include + +long double remainderl(long double x, long double y) +{ + unsigned short fpsr; + do __asm__ ("fprem1; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/remquol.c b/vendor/modernc.org/libc/musl/src/math/x86_64/remquol.c new file mode 100644 index 000000000..60eef089f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/remquol.c @@ -0,0 +1,32 @@ +#include + +long double remquol(long double x, long double y, int *quo) +{ + signed char *cx = (void *)&x, *cy = (void *)&y; + /* By ensuring that addresses of x and y cannot be discarded, + * this empty asm guides GCC into representing extraction of + * their sign bits as memory loads rather than making x and y + * not-address-taken internally and using bitfield operations, + * which in the end wouldn't work out, as extraction from FPU + * registers needs to go through memory anyway. This way GCC + * should manage to use incoming stack slots without spills. */ + __asm__ ("" :: "X"(cx), "X"(cy)); + + long double t = x; + unsigned fpsr; + do __asm__ ("fprem1; fnstsw %%ax" : "+t"(t), "=a"(fpsr) : "u"(y)); + while (fpsr & 0x400); + /* C0, C1, C3 flags in x87 status word carry low bits of quotient: + * 15 14 13 12 11 10 9 8 + * . C3 . . . C2 C1 C0 + * . b1 . . . 0 b0 b2 */ + unsigned char i = fpsr >> 8; + i = i>>4 | i<<4; + /* i[5:2] is now {b0 b2 ? b1}. Retrieve {0 b2 b1 b0} via + * in-register table lookup. */ + unsigned qbits = 0x7575313164642020 >> (i & 60); + qbits &= 7; + + *quo = (cx[9]^cy[9]) < 0 ? -qbits : qbits; + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/rintl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/rintl.c new file mode 100644 index 000000000..e1a92077f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/rintl.c @@ -0,0 +1,7 @@ +#include + +long double rintl(long double x) +{ + __asm__ ("frndint" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/sqrt.c b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrt.c new file mode 100644 index 000000000..657e09e3b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrt.c @@ -0,0 +1,7 @@ +#include + +double sqrt(double x) +{ + __asm__ ("sqrtsd %1, %0" : "=x"(x) : "x"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtf.c b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtf.c new file mode 100644 index 000000000..720baec60 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtf.c @@ -0,0 +1,7 @@ +#include + +float sqrtf(float x) +{ + __asm__ ("sqrtss %1, %0" : "=x"(x) : "x"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtl.c b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtl.c new file mode 100644 index 000000000..864cfcc4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/math/x86_64/sqrtl.c @@ -0,0 +1,7 @@ +#include + +long double sqrtl(long double x) +{ + __asm__ ("fsqrt" : "+t"(x)); + return x; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/a64l.c b/vendor/modernc.org/libc/musl/src/misc/a64l.c new file mode 100644 index 000000000..605577104 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/a64l.c @@ -0,0 +1,29 @@ +#include +#include +#include + +static const char digits[] = + "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +long a64l(const char *s) +{ + int e; + uint32_t x = 0; + for (e=0; e<36 && *s; e+=6, s++) { + const char *d = strchr(digits, *s); + if (!d) break; + x |= (uint32_t)(d-digits)<>=6) + *p = digits[x&63]; + *p = 0; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/basename.c b/vendor/modernc.org/libc/musl/src/misc/basename.c new file mode 100644 index 000000000..438377b64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/basename.c @@ -0,0 +1,14 @@ +#include +#include + +char *basename(char *s) +{ + size_t i; + if (!s || !*s) return "."; + i = strlen(s)-1; + for (; i&&s[i]=='/'; i--) s[i] = 0; + for (; i&&s[i-1]!='/'; i--); + return s+i; +} + +weak_alias(basename, __xpg_basename); diff --git a/vendor/modernc.org/libc/musl/src/misc/dirname.c b/vendor/modernc.org/libc/musl/src/misc/dirname.c new file mode 100644 index 000000000..dd570883d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/dirname.c @@ -0,0 +1,14 @@ +#include +#include + +char *dirname(char *s) +{ + size_t i; + if (!s || !*s) return "."; + i = strlen(s)-1; + for (; s[i]=='/'; i--) if (!i) return "/"; + for (; s[i]!='/'; i--) if (!i) return "."; + for (; s[i]=='/'; i--) if (!i) return "/"; + s[i+1] = 0; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/ffs.c b/vendor/modernc.org/libc/musl/src/misc/ffs.c new file mode 100644 index 000000000..673ce5a97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/ffs.c @@ -0,0 +1,7 @@ +#include +#include "atomic.h" + +int ffs(int i) +{ + return i ? a_ctz_l(i)+1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/ffsl.c b/vendor/modernc.org/libc/musl/src/misc/ffsl.c new file mode 100644 index 000000000..0105c66af --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/ffsl.c @@ -0,0 +1,7 @@ +#include +#include "atomic.h" + +int ffsl(long i) +{ + return i ? a_ctz_l(i)+1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/ffsll.c b/vendor/modernc.org/libc/musl/src/misc/ffsll.c new file mode 100644 index 000000000..0c5ced826 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/ffsll.c @@ -0,0 +1,7 @@ +#include +#include "atomic.h" + +int ffsll(long long i) +{ + return i ? a_ctz_64(i)+1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/fmtmsg.c b/vendor/modernc.org/libc/musl/src/misc/fmtmsg.c new file mode 100644 index 000000000..69170b254 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/fmtmsg.c @@ -0,0 +1,90 @@ +/* Public domain fmtmsg() + * Written by Isaac Dunham, 2014 + */ +#include +#include +#include +#include +#include +#include +#include + +/* + * If lstr is the first part of bstr, check that the next char in bstr + * is either \0 or : + */ +static int _strcolcmp(const char *lstr, const char *bstr) +{ + size_t i = 0; + while (lstr[i] && bstr[i] && (bstr[i] == lstr[i])) i++; + if ( lstr[i] || (bstr[i] && bstr[i] != ':')) return 1; + return 0; +} + +int fmtmsg(long classification, const char *label, int severity, + const char *text, const char *action, const char *tag) +{ + int ret = 0, i, consolefd, verb = 0; + char *errstring = MM_NULLSEV, *cmsg = getenv("MSGVERB"); + char *const msgs[] = { + "label", "severity", "text", "action", "tag", NULL + }; + int cs; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + if (severity == MM_HALT) errstring = "HALT: "; + else if (severity == MM_ERROR) errstring = "ERROR: "; + else if (severity == MM_WARNING) errstring = "WARNING: "; + else if (severity == MM_INFO) errstring = "INFO: "; + + if (classification & MM_CONSOLE) { + consolefd = open("/dev/console", O_WRONLY); + if (consolefd < 0) { + ret = MM_NOCON; + } else { + if (dprintf(consolefd, "%s%s%s%s%s%s%s%s\n", + label?label:"", label?": ":"", + severity?errstring:"", text?text:"", + action?"\nTO FIX: ":"", + action?action:"", action?" ":"", + tag?tag:"" )<1) + ret = MM_NOCON; + close(consolefd); + } + } + + if (classification & MM_PRINT) { + while (cmsg && cmsg[0]) { + for(i=0; msgs[i]; i++) { + if (!_strcolcmp(msgs[i], cmsg)) break; + } + if (msgs[i] == NULL) { + //ignore MSGVERB-unrecognized component + verb = 0xFF; + break; + } else { + verb |= (1 << i); + cmsg = strchr(cmsg, ':'); + if (cmsg) cmsg++; + } + } + if (!verb) verb = 0xFF; + if (dprintf(2, "%s%s%s%s%s%s%s%s\n", + (verb&1 && label) ? label : "", + (verb&1 && label) ? ": " : "", + (verb&2 && severity) ? errstring : "", + (verb&4 && text) ? text : "", + (verb&8 && action) ? "\nTO FIX: " : "", + (verb&8 && action) ? action : "", + (verb&8 && action) ? " " : "", + (verb&16 && tag) ? tag : "" ) < 1) + ret |= MM_NOMSG; + } + if ((ret & (MM_NOCON|MM_NOMSG)) == (MM_NOCON|MM_NOMSG)) + ret = MM_NOTOK; + + pthread_setcancelstate(cs, 0); + + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/forkpty.c b/vendor/modernc.org/libc/musl/src/misc/forkpty.c new file mode 100644 index 000000000..caf13adbf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/forkpty.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include +#include +#include +#include + +int forkpty(int *pm, char *name, const struct termios *tio, const struct winsize *ws) +{ + int m, s, ec=0, p[2], cs; + pid_t pid=-1; + sigset_t set, oldset; + + if (openpty(&m, &s, name, tio, ws) < 0) return -1; + + sigfillset(&set); + pthread_sigmask(SIG_BLOCK, &set, &oldset); + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + if (pipe2(p, O_CLOEXEC)) { + close(s); + goto out; + } + + pid = fork(); + if (!pid) { + close(m); + close(p[0]); + if (login_tty(s)) { + write(p[1], &errno, sizeof errno); + _exit(127); + } + close(p[1]); + pthread_setcancelstate(cs, 0); + pthread_sigmask(SIG_SETMASK, &oldset, 0); + return 0; + } + close(s); + close(p[1]); + if (read(p[0], &ec, sizeof ec) > 0) { + int status; + waitpid(pid, &status, 0); + pid = -1; + errno = ec; + } + close(p[0]); + +out: + if (pid > 0) *pm = m; + else close(m); + + pthread_setcancelstate(cs, 0); + pthread_sigmask(SIG_SETMASK, &oldset, 0); + + return pid; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/get_current_dir_name.c b/vendor/modernc.org/libc/musl/src/misc/get_current_dir_name.c new file mode 100644 index 000000000..782cddcd8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/get_current_dir_name.c @@ -0,0 +1,15 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +char *get_current_dir_name(void) { + struct stat a, b; + char *res = getenv("PWD"); + if (res && *res && !stat(res, &a) && !stat(".", &b) + && (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino)) + return strdup(res); + return getcwd(0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getauxval.c b/vendor/modernc.org/libc/musl/src/misc/getauxval.c new file mode 100644 index 000000000..57f21eed9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getauxval.c @@ -0,0 +1,15 @@ +#include +#include +#include "libc.h" + +unsigned long __getauxval(unsigned long item) +{ + size_t *auxv = libc.auxv; + if (item == AT_SECURE) return libc.secure; + for (; *auxv; auxv+=2) + if (*auxv==item) return auxv[1]; + errno = ENOENT; + return 0; +} + +weak_alias(__getauxval, getauxval); diff --git a/vendor/modernc.org/libc/musl/src/misc/getdomainname.c b/vendor/modernc.org/libc/musl/src/misc/getdomainname.c new file mode 100644 index 000000000..59df566d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getdomainname.c @@ -0,0 +1,17 @@ +#define _GNU_SOURCE +#include +#include +#include +#include + +int getdomainname(char *name, size_t len) +{ + struct utsname temp; + uname(&temp); + if (!len || strlen(temp.domainname) >= len) { + errno = EINVAL; + return -1; + } + strcpy(name, temp.domainname); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getentropy.c b/vendor/modernc.org/libc/musl/src/misc/getentropy.c new file mode 100644 index 000000000..651ea95f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getentropy.c @@ -0,0 +1,33 @@ +#define _BSD_SOURCE +#include +#include +#include +#include + +int getentropy(void *buffer, size_t len) +{ + int cs, ret = 0; + char *pos = buffer; + + if (len > 256) { + errno = EIO; + return -1; + } + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + while (len) { + ret = getrandom(pos, len, 0); + if (ret < 0) { + if (errno == EINTR) continue; + else break; + } + pos += ret; + len -= ret; + ret = 0; + } + + pthread_setcancelstate(cs, 0); + + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/gethostid.c b/vendor/modernc.org/libc/musl/src/misc/gethostid.c new file mode 100644 index 000000000..25bb35db8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/gethostid.c @@ -0,0 +1,6 @@ +#include + +long gethostid() +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getopt.c b/vendor/modernc.org/libc/musl/src/misc/getopt.c new file mode 100644 index 000000000..c3f669955 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getopt.c @@ -0,0 +1,105 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include +#include "locale_impl.h" +#include "stdio_impl.h" + +char *optarg; +int optind=1, opterr=1, optopt, __optpos, __optreset=0; + +#define optpos __optpos +weak_alias(__optreset, optreset); + +void __getopt_msg(const char *a, const char *b, const char *c, size_t l) +{ + FILE *f = stderr; + b = __lctrans_cur(b); + FLOCK(f); + fputs(a, f)>=0 + && fwrite(b, strlen(b), 1, f) + && fwrite(c, 1, l, f)==l + && putc('\n', f); + FUNLOCK(f); +} + +int getopt(int argc, char * const argv[], const char *optstring) +{ + int i; + wchar_t c, d; + int k, l; + char *optchar; + + if (!optind || __optreset) { + __optreset = 0; + __optpos = 0; + optind = 1; + } + + if (optind >= argc || !argv[optind]) + return -1; + + if (argv[optind][0] != '-') { + if (optstring[0] == '-') { + optarg = argv[optind++]; + return 1; + } + return -1; + } + + if (!argv[optind][1]) + return -1; + + if (argv[optind][1] == '-' && !argv[optind][2]) + return optind++, -1; + + if (!optpos) optpos++; + if ((k = mbtowc(&c, argv[optind]+optpos, MB_LEN_MAX)) < 0) { + k = 1; + c = 0xfffd; /* replacement char */ + } + optchar = argv[optind]+optpos; + optpos += k; + + if (!argv[optind][optpos]) { + optind++; + optpos = 0; + } + + if (optstring[0] == '-' || optstring[0] == '+') + optstring++; + + i = 0; + d = 0; + do { + l = mbtowc(&d, optstring+i, MB_LEN_MAX); + if (l>0) i+=l; else i++; + } while (l && d != c); + + if (d != c || c == ':') { + optopt = c; + if (optstring[0] != ':' && opterr) + __getopt_msg(argv[0], ": unrecognized option: ", optchar, k); + return '?'; + } + if (optstring[i] == ':') { + optarg = 0; + if (optstring[i+1] != ':' || optpos) { + optarg = argv[optind++] + optpos; + optpos = 0; + } + if (optind > argc) { + optopt = c; + if (optstring[0] == ':') return ':'; + if (opterr) __getopt_msg(argv[0], + ": option requires an argument: ", + optchar, k); + return '?'; + } + } + return c; +} + +weak_alias(getopt, __posix_getopt); diff --git a/vendor/modernc.org/libc/musl/src/misc/getopt_long.c b/vendor/modernc.org/libc/musl/src/misc/getopt_long.c new file mode 100644 index 000000000..6949ab1c7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getopt_long.c @@ -0,0 +1,148 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "stdio_impl.h" + +extern int __optpos, __optreset; + +static void permute(char *const *argv, int dest, int src) +{ + char **av = (char **)argv; + char *tmp = av[src]; + int i; + for (i=src; i>dest; i--) + av[i] = av[i-1]; + av[dest] = tmp; +} + +static int __getopt_long_core(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx, int longonly); + +static int __getopt_long(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx, int longonly) +{ + int ret, skipped, resumed; + if (!optind || __optreset) { + __optreset = 0; + __optpos = 0; + optind = 1; + } + if (optind >= argc || !argv[optind]) return -1; + skipped = optind; + if (optstring[0] != '+' && optstring[0] != '-') { + int i; + for (i=optind; ; i++) { + if (i >= argc || !argv[i]) return -1; + if (argv[i][0] == '-' && argv[i][1]) break; + } + optind = i; + } + resumed = optind; + ret = __getopt_long_core(argc, argv, optstring, longopts, idx, longonly); + if (resumed > skipped) { + int i, cnt = optind-resumed; + for (i=0; i +#include "syscall.h" + +int getpriority(int which, id_t who) +{ + int ret = syscall(SYS_getpriority, which, who); + if (ret < 0) return ret; + return 20-ret; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getresgid.c b/vendor/modernc.org/libc/musl/src/misc/getresgid.c new file mode 100644 index 000000000..d00d9a99d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getresgid.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid) +{ + return syscall(SYS_getresgid, rgid, egid, sgid); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getresuid.c b/vendor/modernc.org/libc/musl/src/misc/getresuid.c new file mode 100644 index 000000000..d75d5d408 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getresuid.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid) +{ + return syscall(SYS_getresuid, ruid, euid, suid); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getrlimit.c b/vendor/modernc.org/libc/musl/src/misc/getrlimit.c new file mode 100644 index 000000000..2ab2f0f4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getrlimit.c @@ -0,0 +1,26 @@ +#include +#include +#include "syscall.h" + +#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0) + +int getrlimit(int resource, struct rlimit *rlim) +{ + unsigned long k_rlim[2]; + int ret = syscall(SYS_prlimit64, 0, resource, 0, rlim); + if (!ret) { + FIX(rlim->rlim_cur); + FIX(rlim->rlim_max); + } + if (!ret || errno != ENOSYS) + return ret; + if (syscall(SYS_getrlimit, resource, k_rlim) < 0) + return -1; + rlim->rlim_cur = k_rlim[0] == -1UL ? RLIM_INFINITY : k_rlim[0]; + rlim->rlim_max = k_rlim[1] == -1UL ? RLIM_INFINITY : k_rlim[1]; + FIX(rlim->rlim_cur); + FIX(rlim->rlim_max); + return 0; +} + +weak_alias(getrlimit, getrlimit64); diff --git a/vendor/modernc.org/libc/musl/src/misc/getrusage.c b/vendor/modernc.org/libc/musl/src/misc/getrusage.c new file mode 100644 index 000000000..8e03e2e3d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getrusage.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include "syscall.h" + +int getrusage(int who, struct rusage *ru) +{ + int r; +#ifdef SYS_getrusage_time64 + long long kru64[18]; + r = __syscall(SYS_getrusage_time64, who, kru64); + if (!r) { + ru->ru_utime = (struct timeval) + { .tv_sec = kru64[0], .tv_usec = kru64[1] }; + ru->ru_stime = (struct timeval) + { .tv_sec = kru64[2], .tv_usec = kru64[3] }; + char *slots = (char *)&ru->ru_maxrss; + for (int i=0; i<14; i++) + *(long *)(slots + i*sizeof(long)) = kru64[4+i]; + } + if (SYS_getrusage_time64 == SYS_getrusage || r != -ENOSYS) + return __syscall_ret(r); +#endif + char *dest = (char *)&ru->ru_maxrss - 4*sizeof(long); + r = __syscall(SYS_getrusage, who, dest); + if (!r && sizeof(time_t) > sizeof(long)) { + long kru[4]; + memcpy(kru, dest, 4*sizeof(long)); + ru->ru_utime = (struct timeval) + { .tv_sec = kru[0], .tv_usec = kru[1] }; + ru->ru_stime = (struct timeval) + { .tv_sec = kru[2], .tv_usec = kru[3] }; + } + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/getsubopt.c b/vendor/modernc.org/libc/musl/src/misc/getsubopt.c new file mode 100644 index 000000000..53ee9573f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/getsubopt.c @@ -0,0 +1,23 @@ +#include +#include + +int getsubopt(char **opt, char *const *keys, char **val) +{ + char *s = *opt; + int i; + + *val = NULL; + *opt = strchr(s, ','); + if (*opt) *(*opt)++ = 0; + else *opt = s + strlen(s); + + for (i=0; keys[i]; i++) { + size_t l = strlen(keys[i]); + if (strncmp(keys[i], s, l)) continue; + if (s[l] == '=') + *val = s + l + 1; + else if (s[l]) continue; + return i; + } + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/initgroups.c b/vendor/modernc.org/libc/musl/src/misc/initgroups.c new file mode 100644 index 000000000..922a95814 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/initgroups.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include +#include + +int initgroups(const char *user, gid_t gid) +{ + gid_t groups[NGROUPS_MAX]; + int count = NGROUPS_MAX; + if (getgrouplist(user, gid, groups, &count) < 0) return -1; + return setgroups(count, groups); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/ioctl.c b/vendor/modernc.org/libc/musl/src/misc/ioctl.c new file mode 100644 index 000000000..894775114 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/ioctl.c @@ -0,0 +1,138 @@ +#include +#include +#include +#include +#include +#include +#include +#include "syscall.h" + +#define alignof(t) offsetof(struct { char c; t x; }, x) + +#define W 1 +#define R 2 +#define WR 3 + +struct ioctl_compat_map { + int new_req, old_req; + unsigned char old_size, dir, force_align, noffs; + unsigned char offsets[8]; +}; + +#define NINTH(a,b,c,d,e,f,g,h,i,...) i +#define COUNT(...) NINTH(__VA_ARGS__,8,7,6,5,4,3,2,1,0) +#define OFFS(...) COUNT(__VA_ARGS__), { __VA_ARGS__ } + +/* yields a type for a struct with original size n, with a misaligned + * timeval/timespec expanded from 32- to 64-bit. for use with ioctl + * number producing macros; only size of result is meaningful. */ +#define new_misaligned(n) struct { int i; time_t t; char c[(n)-4]; } + +static const struct ioctl_compat_map compat_map[] = { + { SIOCGSTAMP, SIOCGSTAMP_OLD, 8, R, 0, OFFS(0, 4) }, + { SIOCGSTAMPNS, SIOCGSTAMPNS_OLD, 8, R, 0, OFFS(0, 4) }, + + /* SNDRV_TIMER_IOCTL_STATUS */ + { _IOR('T', 0x14, char[96]), _IOR('T', 0x14, 88), 88, R, 0, OFFS(0,4) }, + + /* SNDRV_PCM_IOCTL_STATUS[_EXT] */ + { _IOR('A', 0x20, char[128]), _IOR('A', 0x20, char[108]), 108, R, 1, OFFS(4,8,12,16,52,56,60,64) }, + { _IOWR('A', 0x24, char[128]), _IOWR('A', 0x24, char[108]), 108, WR, 1, OFFS(4,8,12,16,52,56,60,64) }, + + /* SNDRV_RAWMIDI_IOCTL_STATUS */ + { _IOWR('W', 0x20, char[48]), _IOWR('W', 0x20, char[36]), 36, WR, 1, OFFS(4,8) }, + + /* SNDRV_PCM_IOCTL_SYNC_PTR - with 3 subtables */ + { _IOWR('A', 0x23, char[136]), _IOWR('A', 0x23, char[132]), 0, WR, 1, 0 }, + { 0, 0, 4, WR, 1, 0 }, /* snd_pcm_sync_ptr (flags only) */ + { 0, 0, 32, WR, 1, OFFS(8,12,16,24,28) }, /* snd_pcm_mmap_status */ + { 0, 0, 8, WR, 1, OFFS(0,4) }, /* snd_pcm_mmap_control */ + + /* VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF, VIDIOC_PREPARE_BUF */ + { _IOWR('V', 9, new_misaligned(72)), _IOWR('V', 9, char[72]), 72, WR, 0, OFFS(20) }, + { _IOWR('V', 15, new_misaligned(72)), _IOWR('V', 15, char[72]), 72, WR, 0, OFFS(20) }, + { _IOWR('V', 17, new_misaligned(72)), _IOWR('V', 17, char[72]), 72, WR, 0, OFFS(20) }, + { _IOWR('V', 93, new_misaligned(72)), _IOWR('V', 93, char[72]), 72, WR, 0, OFFS(20) }, + + /* VIDIOC_DQEVENT */ + { _IOR('V', 89, new_misaligned(96)), _IOR('V', 89, char[96]), 96, R, 0, OFFS(76,80) }, + + /* VIDIOC_OMAP3ISP_STAT_REQ */ + { _IOWR('V', 192+6, char[32]), _IOWR('V', 192+6, char[24]), 22, WR, 0, OFFS(0,4) }, + + /* PPPIOCGIDLE */ + { _IOR('t', 63, char[16]), _IOR('t', 63, char[8]), 8, R, 0, OFFS(0,4) }, + + /* PPGETTIME, PPSETTIME */ + { _IOR('p', 0x95, char[16]), _IOR('p', 0x95, char[8]), 8, R, 0, OFFS(0,4) }, + { _IOW('p', 0x96, char[16]), _IOW('p', 0x96, char[8]), 8, W, 0, OFFS(0,4) }, + + /* LPSETTIMEOUT */ + { _IOW(0x6, 0xf, char[16]), 0x060f, 8, W, 0, OFFS(0,4) }, +}; + +static void convert_ioctl_struct(const struct ioctl_compat_map *map, char *old, char *new, int dir) +{ + int new_offset = 0; + int old_offset = 0; + int old_size = map->old_size; + if (!(dir & map->dir)) return; + if (!map->old_size) { + /* offsets hard-coded for SNDRV_PCM_IOCTL_SYNC_PTR; + * if another exception appears this needs changing. */ + convert_ioctl_struct(map+1, old, new, dir); + convert_ioctl_struct(map+2, old+4, new+8, dir); + convert_ioctl_struct(map+3, old+68, new+72, dir); + return; + } + for (int i=0; i < map->noffs; i++) { + int ts_offset = map->offsets[i]; + int len = ts_offset-old_offset; + if (dir==W) memcpy(old+old_offset, new+new_offset, len); + else memcpy(new+new_offset, old+old_offset, len); + new_offset += len; + old_offset += len; + long long new_ts; + long old_ts; + int align = map->force_align ? sizeof(time_t) : alignof(time_t); + new_offset += (align-1) & -new_offset; + if (dir==W) { + memcpy(&new_ts, new+new_offset, sizeof new_ts); + old_ts = new_ts; + memcpy(old+old_offset, &old_ts, sizeof old_ts); + } else { + memcpy(&old_ts, old+old_offset, sizeof old_ts); + new_ts = old_ts; + memcpy(new+new_offset, &new_ts, sizeof new_ts); + } + new_offset += sizeof new_ts; + old_offset += sizeof old_ts; + } + if (dir==W) memcpy(old+old_offset, new+new_offset, old_size-old_offset); + else memcpy(new+new_offset, old+old_offset, old_size-old_offset); +} + +int ioctl(int fd, int req, ...) +{ + void *arg; + va_list ap; + va_start(ap, req); + arg = va_arg(ap, void *); + va_end(ap); + int r = __syscall(SYS_ioctl, fd, req, arg); + if (SIOCGSTAMP != SIOCGSTAMP_OLD && req && r==-ENOTTY) { + for (int i=0; i +#include "libc.h" + +int issetugid(void) +{ + return libc.secure; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/lockf.c b/vendor/modernc.org/libc/musl/src/misc/lockf.c new file mode 100644 index 000000000..16a80bec1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/lockf.c @@ -0,0 +1,32 @@ +#include +#include +#include + +int lockf(int fd, int op, off_t size) +{ + struct flock l = { + .l_type = F_WRLCK, + .l_whence = SEEK_CUR, + .l_len = size, + }; + switch (op) { + case F_TEST: + l.l_type = F_RDLCK; + if (fcntl(fd, F_GETLK, &l) < 0) + return -1; + if (l.l_type == F_UNLCK || l.l_pid == getpid()) + return 0; + errno = EACCES; + return -1; + case F_ULOCK: + l.l_type = F_UNLCK; + case F_TLOCK: + return fcntl(fd, F_SETLK, &l); + case F_LOCK: + return fcntl(fd, F_SETLKW, &l); + } + errno = EINVAL; + return -1; +} + +weak_alias(lockf, lockf64); diff --git a/vendor/modernc.org/libc/musl/src/misc/login_tty.c b/vendor/modernc.org/libc/musl/src/misc/login_tty.c new file mode 100644 index 000000000..f0be0a09a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/login_tty.c @@ -0,0 +1,14 @@ +#include +#include +#include + +int login_tty(int fd) +{ + setsid(); + if (ioctl(fd, TIOCSCTTY, (char *)0)) return -1; + dup2(fd, 0); + dup2(fd, 1); + dup2(fd, 2); + if (fd>2) close(fd); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/mntent.c b/vendor/modernc.org/libc/musl/src/misc/mntent.c new file mode 100644 index 000000000..eabb8200b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/mntent.c @@ -0,0 +1,77 @@ +#include +#include +#include +#include + +static char *internal_buf; +static size_t internal_bufsize; + +#define SENTINEL (char *)&internal_buf + +FILE *setmntent(const char *name, const char *mode) +{ + return fopen(name, mode); +} + +int endmntent(FILE *f) +{ + if (f) fclose(f); + return 1; +} + +struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int buflen) +{ + int cnt, n[8], use_internal = (linebuf == SENTINEL); + + mnt->mnt_freq = 0; + mnt->mnt_passno = 0; + + do { + if (use_internal) { + getline(&internal_buf, &internal_bufsize, f); + linebuf = internal_buf; + } else { + fgets(linebuf, buflen, f); + } + if (feof(f) || ferror(f)) return 0; + if (!strchr(linebuf, '\n')) { + fscanf(f, "%*[^\n]%*[\n]"); + errno = ERANGE; + return 0; + } + cnt = sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d", + n, n+1, n+2, n+3, n+4, n+5, n+6, n+7, + &mnt->mnt_freq, &mnt->mnt_passno); + } while (cnt < 2 || linebuf[n[0]] == '#'); + + linebuf[n[1]] = 0; + linebuf[n[3]] = 0; + linebuf[n[5]] = 0; + linebuf[n[7]] = 0; + + mnt->mnt_fsname = linebuf+n[0]; + mnt->mnt_dir = linebuf+n[2]; + mnt->mnt_type = linebuf+n[4]; + mnt->mnt_opts = linebuf+n[6]; + + return mnt; +} + +struct mntent *getmntent(FILE *f) +{ + static struct mntent mnt; + return getmntent_r(f, &mnt, SENTINEL, 0); +} + +int addmntent(FILE *f, const struct mntent *mnt) +{ + if (fseek(f, 0, SEEK_END)) return 1; + return fprintf(f, "%s\t%s\t%s\t%s\t%d\t%d\n", + mnt->mnt_fsname, mnt->mnt_dir, mnt->mnt_type, mnt->mnt_opts, + mnt->mnt_freq, mnt->mnt_passno) < 0; +} + +char *hasmntopt(const struct mntent *mnt, const char *opt) +{ + return strstr(mnt->mnt_opts, opt); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/nftw.c b/vendor/modernc.org/libc/musl/src/misc/nftw.c new file mode 100644 index 000000000..8dcff7fef --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/nftw.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct history +{ + struct history *chain; + dev_t dev; + ino_t ino; + int level; + int base; +}; + +#undef dirfd +#define dirfd(d) (*(int *)d) + +static int do_nftw(char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags, struct history *h) +{ + size_t l = strlen(path), j = l && path[l-1]=='/' ? l-1 : l; + struct stat st; + struct history new; + int type; + int r; + int dfd; + int err; + struct FTW lev; + + if ((flags & FTW_PHYS) ? lstat(path, &st) : stat(path, &st) < 0) { + if (!(flags & FTW_PHYS) && errno==ENOENT && !lstat(path, &st)) + type = FTW_SLN; + else if (errno != EACCES) return -1; + else type = FTW_NS; + } else if (S_ISDIR(st.st_mode)) { + if (flags & FTW_DEPTH) type = FTW_DP; + else type = FTW_D; + } else if (S_ISLNK(st.st_mode)) { + if (flags & FTW_PHYS) type = FTW_SL; + else type = FTW_SLN; + } else { + type = FTW_F; + } + + if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev) + return 0; + + new.chain = h; + new.dev = st.st_dev; + new.ino = st.st_ino; + new.level = h ? h->level+1 : 0; + new.base = j+1; + + lev.level = new.level; + if (h) { + lev.base = h->base; + } else { + size_t k; + for (k=j; k && path[k]=='/'; k--); + for (; k && path[k-1]!='/'; k--); + lev.base = k; + } + + if (type == FTW_D || type == FTW_DP) { + dfd = open(path, O_RDONLY); + err = errno; + if (dfd < 0 && err == EACCES) type = FTW_DNR; + if (!fd_limit) close(dfd); + } + + if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) + return r; + + for (; h; h = h->chain) + if (h->dev == st.st_dev && h->ino == st.st_ino) + return 0; + + if ((type == FTW_D || type == FTW_DP) && fd_limit) { + if (dfd < 0) { + errno = err; + return -1; + } + DIR *d = fdopendir(dfd); + if (d) { + struct dirent *de; + while ((de = readdir(d))) { + if (de->d_name[0] == '.' + && (!de->d_name[1] + || (de->d_name[1]=='.' + && !de->d_name[2]))) continue; + if (strlen(de->d_name) >= PATH_MAX-l) { + errno = ENAMETOOLONG; + closedir(d); + return -1; + } + path[j]='/'; + strcpy(path+j+1, de->d_name); + if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) { + closedir(d); + return r; + } + } + closedir(d); + } else { + close(dfd); + return -1; + } + } + + path[l] = 0; + if ((flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev))) + return r; + + return 0; +} + +int nftw(const char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags) +{ + int r, cs; + size_t l; + char pathbuf[PATH_MAX+1]; + + if (fd_limit <= 0) return 0; + + l = strlen(path); + if (l > PATH_MAX) { + errno = ENAMETOOLONG; + return -1; + } + memcpy(pathbuf, path, l+1); + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + r = do_nftw(pathbuf, fn, fd_limit, flags, NULL); + pthread_setcancelstate(cs, 0); + return r; +} + +weak_alias(nftw, nftw64); diff --git a/vendor/modernc.org/libc/musl/src/misc/openpty.c b/vendor/modernc.org/libc/musl/src/misc/openpty.c new file mode 100644 index 000000000..c10740606 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/openpty.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include + +/* Nonstandard, but vastly superior to the standard functions */ + +int openpty(int *pm, int *ps, char *name, const struct termios *tio, const struct winsize *ws) +{ + int m, s, n=0, cs; + char buf[20]; + + m = open("/dev/ptmx", O_RDWR|O_NOCTTY); + if (m < 0) return -1; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + if (ioctl(m, TIOCSPTLCK, &n) || ioctl (m, TIOCGPTN, &n)) + goto fail; + + if (!name) name = buf; + snprintf(name, sizeof buf, "/dev/pts/%d", n); + if ((s = open(name, O_RDWR|O_NOCTTY)) < 0) + goto fail; + + if (tio) tcsetattr(s, TCSANOW, tio); + if (ws) ioctl(s, TIOCSWINSZ, ws); + + *pm = m; + *ps = s; + + pthread_setcancelstate(cs, 0); + return 0; +fail: + close(m); + pthread_setcancelstate(cs, 0); + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/ptsname.c b/vendor/modernc.org/libc/musl/src/misc/ptsname.c new file mode 100644 index 000000000..58c151c97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/ptsname.c @@ -0,0 +1,13 @@ +#include +#include + +char *ptsname(int fd) +{ + static char buf[9 + sizeof(int)*3 + 1]; + int err = __ptsname_r(fd, buf, sizeof buf); + if (err) { + errno = err; + return 0; + } + return buf; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/pty.c b/vendor/modernc.org/libc/musl/src/misc/pty.c new file mode 100644 index 000000000..a0577147a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/pty.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include +#include +#include "syscall.h" + +int posix_openpt(int flags) +{ + int r = open("/dev/ptmx", flags); + if (r < 0 && errno == ENOSPC) errno = EAGAIN; + return r; +} + +int grantpt(int fd) +{ + return 0; +} + +int unlockpt(int fd) +{ + int unlock = 0; + return ioctl(fd, TIOCSPTLCK, &unlock); +} + +int __ptsname_r(int fd, char *buf, size_t len) +{ + int pty, err; + if (!buf) len = 0; + if ((err = __syscall(SYS_ioctl, fd, TIOCGPTN, &pty))) return -err; + if (snprintf(buf, len, "/dev/pts/%d", pty) >= len) return ERANGE; + return 0; +} + +weak_alias(__ptsname_r, ptsname_r); diff --git a/vendor/modernc.org/libc/musl/src/misc/realpath.c b/vendor/modernc.org/libc/musl/src/misc/realpath.c new file mode 100644 index 000000000..d2708e59d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/realpath.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include +#include +#include +#include "syscall.h" + +char *realpath(const char *restrict filename, char *restrict resolved) +{ + int fd; + ssize_t r; + struct stat st1, st2; + char buf[15+3*sizeof(int)]; + char tmp[PATH_MAX]; + + if (!filename) { + errno = EINVAL; + return 0; + } + + fd = sys_open(filename, O_PATH|O_NONBLOCK|O_CLOEXEC); + if (fd < 0) return 0; + __procfdname(buf, fd); + + r = readlink(buf, tmp, sizeof tmp - 1); + if (r < 0) goto err; + tmp[r] = 0; + + fstat(fd, &st1); + r = stat(tmp, &st2); + if (r<0 || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) { + if (!r) errno = ELOOP; + goto err; + } + + __syscall(SYS_close, fd); + return resolved ? strcpy(resolved, tmp) : strdup(tmp); +err: + __syscall(SYS_close, fd); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/misc/setdomainname.c b/vendor/modernc.org/libc/musl/src/misc/setdomainname.c new file mode 100644 index 000000000..22d3f7463 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/setdomainname.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int setdomainname(const char *name, size_t len) +{ + return syscall(SYS_setdomainname, name, len); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/setpriority.c b/vendor/modernc.org/libc/musl/src/misc/setpriority.c new file mode 100644 index 000000000..3098cdf4d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/setpriority.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int setpriority(int which, id_t who, int prio) +{ + return syscall(SYS_setpriority, which, who, prio); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/setrlimit.c b/vendor/modernc.org/libc/musl/src/misc/setrlimit.c new file mode 100644 index 000000000..7a66ab297 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/setrlimit.c @@ -0,0 +1,50 @@ +#include +#include +#include "syscall.h" +#include "libc.h" + +#define MIN(a, b) ((a)<(b) ? (a) : (b)) +#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0) + +static int __setrlimit(int resource, const struct rlimit *rlim) +{ + unsigned long k_rlim[2]; + struct rlimit tmp; + if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { + tmp = *rlim; + FIX(tmp.rlim_cur); + FIX(tmp.rlim_max); + rlim = &tmp; + } + int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0); + if (ret != -ENOSYS) return ret; + k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY)); + k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY)); + return __syscall(SYS_setrlimit, resource, k_rlim); +} + +struct ctx { + const struct rlimit *rlim; + int res; + int err; +}; + +static void do_setrlimit(void *p) +{ + struct ctx *c = p; + if (c->err>0) return; + c->err = -__setrlimit(c->res, c->rlim); +} + +int setrlimit(int resource, const struct rlimit *rlim) +{ + struct ctx c = { .res = resource, .rlim = rlim, .err = -1 }; + __synccall(do_setrlimit, &c); + if (c.err) { + if (c.err>0) errno = c.err; + return -1; + } + return 0; +} + +weak_alias(setrlimit, setrlimit64); diff --git a/vendor/modernc.org/libc/musl/src/misc/syscall.c b/vendor/modernc.org/libc/musl/src/misc/syscall.c new file mode 100644 index 000000000..6f3ef6563 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/syscall.c @@ -0,0 +1,21 @@ +#define _BSD_SOURCE +#include +#include "syscall.h" +#include + +#undef syscall + +long syscall(long n, ...) +{ + va_list ap; + syscall_arg_t a,b,c,d,e,f; + va_start(ap, n); + a=va_arg(ap, syscall_arg_t); + b=va_arg(ap, syscall_arg_t); + c=va_arg(ap, syscall_arg_t); + d=va_arg(ap, syscall_arg_t); + e=va_arg(ap, syscall_arg_t); + f=va_arg(ap, syscall_arg_t); + va_end(ap); + return __syscall_ret(__syscall(n,a,b,c,d,e,f)); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/syslog.c b/vendor/modernc.org/libc/musl/src/misc/syslog.c new file mode 100644 index 000000000..13d4b0a6d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/syslog.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lock.h" + +static volatile int lock[1]; +static char log_ident[32]; +static int log_opt; +static int log_facility = LOG_USER; +static int log_mask = 0xff; +static int log_fd = -1; + +int setlogmask(int maskpri) +{ + LOCK(lock); + int ret = log_mask; + if (maskpri) log_mask = maskpri; + UNLOCK(lock); + return ret; +} + +static const struct { + short sun_family; + char sun_path[9]; +} log_addr = { + AF_UNIX, + "/dev/log" +}; + +void closelog(void) +{ + int cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + LOCK(lock); + close(log_fd); + log_fd = -1; + UNLOCK(lock); + pthread_setcancelstate(cs, 0); +} + +static void __openlog() +{ + log_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); + if (log_fd >= 0) connect(log_fd, (void *)&log_addr, sizeof log_addr); +} + +void openlog(const char *ident, int opt, int facility) +{ + int cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + LOCK(lock); + + if (ident) { + size_t n = strnlen(ident, sizeof log_ident - 1); + memcpy(log_ident, ident, n); + log_ident[n] = 0; + } else { + log_ident[0] = 0; + } + log_opt = opt; + log_facility = facility; + + if ((opt & LOG_NDELAY) && log_fd<0) __openlog(); + + UNLOCK(lock); + pthread_setcancelstate(cs, 0); +} + +static int is_lost_conn(int e) +{ + return e==ECONNREFUSED || e==ECONNRESET || e==ENOTCONN || e==EPIPE; +} + +static void _vsyslog(int priority, const char *message, va_list ap) +{ + char timebuf[16]; + time_t now; + struct tm tm; + char buf[1024]; + int errno_save = errno; + int pid; + int l, l2; + int hlen; + int fd; + + if (log_fd < 0) __openlog(); + + if (!(priority & LOG_FACMASK)) priority |= log_facility; + + now = time(NULL); + gmtime_r(&now, &tm); + strftime(timebuf, sizeof timebuf, "%b %e %T", &tm); + + pid = (log_opt & LOG_PID) ? getpid() : 0; + l = snprintf(buf, sizeof buf, "<%d>%s %n%s%s%.0d%s: ", + priority, timebuf, &hlen, log_ident, "["+!pid, pid, "]"+!pid); + errno = errno_save; + l2 = vsnprintf(buf+l, sizeof buf - l, message, ap); + if (l2 >= 0) { + if (l2 >= sizeof buf - l) l = sizeof buf - 1; + else l += l2; + if (buf[l-1] != '\n') buf[l++] = '\n'; + if (send(log_fd, buf, l, 0) < 0 && (!is_lost_conn(errno) + || connect(log_fd, (void *)&log_addr, sizeof log_addr) < 0 + || send(log_fd, buf, l, 0) < 0) + && (log_opt & LOG_CONS)) { + fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC); + if (fd >= 0) { + dprintf(fd, "%.*s", l-hlen, buf+hlen); + close(fd); + } + } + if (log_opt & LOG_PERROR) dprintf(2, "%.*s", l-hlen, buf+hlen); + } +} + +static void __vsyslog(int priority, const char *message, va_list ap) +{ + int cs; + if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0x3ff)) return; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + LOCK(lock); + _vsyslog(priority, message, ap); + UNLOCK(lock); + pthread_setcancelstate(cs, 0); +} + +void syslog(int priority, const char *message, ...) +{ + va_list ap; + va_start(ap, message); + __vsyslog(priority, message, ap); + va_end(ap); +} + +weak_alias(__vsyslog, vsyslog); diff --git a/vendor/modernc.org/libc/musl/src/misc/uname.c b/vendor/modernc.org/libc/musl/src/misc/uname.c new file mode 100644 index 000000000..55ea34202 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/uname.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int uname(struct utsname *uts) +{ + return syscall(SYS_uname, uts); +} diff --git a/vendor/modernc.org/libc/musl/src/misc/wordexp.c b/vendor/modernc.org/libc/musl/src/misc/wordexp.c new file mode 100644 index 000000000..db83a69f3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/misc/wordexp.c @@ -0,0 +1,187 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "pthread_impl.h" + +static void reap(pid_t pid) +{ + int status; + while (waitpid(pid, &status, 0) < 0 && errno == EINTR); +} + +static char *getword(FILE *f) +{ + char *s = 0; + return getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s; +} + +static int do_wordexp(const char *s, wordexp_t *we, int flags) +{ + size_t i, l; + int sq=0, dq=0; + size_t np=0; + char *w, **tmp; + char *redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null"; + int err = 0; + FILE *f; + size_t wc = 0; + char **wv = 0; + int p[2]; + pid_t pid; + sigset_t set; + + if (flags & WRDE_REUSE) wordfree(we); + + if (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) { + case '\\': + if (!sq && !s[++i]) return WRDE_SYNTAX; + break; + case '\'': + if (!dq) sq^=1; + break; + case '"': + if (!sq) dq^=1; + break; + case '(': + if (np) { + np++; + break; + } + case ')': + if (np) { + np--; + break; + } + case '\n': + case '|': + case '&': + case ';': + case '<': + case '>': + case '{': + case '}': + if (!(sq|dq|np)) return WRDE_BADCHAR; + break; + case '$': + if (sq) break; + if (s[i+1]=='(' && s[i+2]=='(') { + i += 2; + np += 2; + break; + } else if (s[i+1] != '(') break; + case '`': + if (sq) break; + return WRDE_CMDSUB; + } + + if (flags & WRDE_APPEND) { + wc = we->we_wordc; + wv = we->we_wordv; + } + + i = wc; + if (flags & WRDE_DOOFFS) { + if (we->we_offs > SIZE_MAX/sizeof(void *)/4) + goto nospace; + i += we->we_offs; + } else { + we->we_offs = 0; + } + + if (pipe2(p, O_CLOEXEC) < 0) goto nospace; + __block_all_sigs(&set); + pid = fork(); + __restore_sigs(&set); + if (pid < 0) { + close(p[0]); + close(p[1]); + goto nospace; + } + if (!pid) { + if (p[1] == 1) fcntl(1, F_SETFD, 0); + else dup2(p[1], 1); + execl("/bin/sh", "sh", "-c", + "eval \"printf %s\\\\\\\\0 x $1 $2\"", + "sh", s, redir, (char *)0); + _exit(1); + } + close(p[1]); + + f = fdopen(p[0], "r"); + if (!f) { + close(p[0]); + kill(pid, SIGKILL); + reap(pid); + goto nospace; + } + + l = wv ? i+1 : 0; + + free(getword(f)); + if (feof(f)) { + fclose(f); + reap(pid); + return WRDE_SYNTAX; + } + + while ((w = getword(f))) { + if (i+1 >= l) { + l += l/2+10; + tmp = realloc(wv, l*sizeof(char *)); + if (!tmp) break; + wv = tmp; + } + wv[i++] = w; + wv[i] = 0; + } + if (!feof(f)) err = WRDE_NOSPACE; + + fclose(f); + reap(pid); + + if (!wv) wv = calloc(i+1, sizeof *wv); + + we->we_wordv = wv; + we->we_wordc = i; + + if (flags & WRDE_DOOFFS) { + if (wv) for (i=we->we_offs; i; i--) + we->we_wordv[i-1] = 0; + we->we_wordc -= we->we_offs; + } + return err; + +nospace: + if (!(flags & WRDE_APPEND)) { + we->we_wordc = 0; + we->we_wordv = 0; + } + return WRDE_NOSPACE; +} + +int wordexp(const char *restrict s, wordexp_t *restrict we, int flags) +{ + int r, cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + r = do_wordexp(s, we, flags); + pthread_setcancelstate(cs, 0); + return r; +} + +void wordfree(wordexp_t *we) +{ + size_t i; + if (!we->we_wordv) return; + for (i=0; iwe_wordc; i++) free(we->we_wordv[we->we_offs+i]); + free(we->we_wordv); + we->we_wordv = 0; + we->we_wordc = 0; +} diff --git a/vendor/modernc.org/libc/musl/src/mman/madvise.c b/vendor/modernc.org/libc/musl/src/mman/madvise.c new file mode 100644 index 000000000..e0c7c0ec9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/madvise.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +int __madvise(void *addr, size_t len, int advice) +{ + return syscall(SYS_madvise, addr, len, advice); +} + +weak_alias(__madvise, madvise); diff --git a/vendor/modernc.org/libc/musl/src/mman/mincore.c b/vendor/modernc.org/libc/musl/src/mman/mincore.c new file mode 100644 index 000000000..4bb19f857 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mincore.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int mincore (void *addr, size_t len, unsigned char *vec) +{ + return syscall(SYS_mincore, addr, len, vec); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/mlock.c b/vendor/modernc.org/libc/musl/src/mman/mlock.c new file mode 100644 index 000000000..71af582fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mlock.c @@ -0,0 +1,11 @@ +#include +#include "syscall.h" + +int mlock(const void *addr, size_t len) +{ +#ifdef SYS_mlock + return syscall(SYS_mlock, addr, len); +#else + return syscall(SYS_mlock2, addr, len, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/mman/mlockall.c b/vendor/modernc.org/libc/musl/src/mman/mlockall.c new file mode 100644 index 000000000..0ba4e662c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mlockall.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mlockall(int flags) +{ + return syscall(SYS_mlockall, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/mmap.c b/vendor/modernc.org/libc/musl/src/mman/mmap.c new file mode 100644 index 000000000..eff88d82a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mmap.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include +#include "syscall.h" + +static void dummy(void) { } +weak_alias(dummy, __vm_wait); + +#define UNIT SYSCALL_MMAP2_UNIT +#define OFF_MASK ((-0x2000ULL << (8*sizeof(syscall_arg_t)-1)) | (UNIT-1)) + +void *__mmap(void *start, size_t len, int prot, int flags, int fd, off_t off) +{ + long ret; + if (off & OFF_MASK) { + errno = EINVAL; + return MAP_FAILED; + } + if (len >= PTRDIFF_MAX) { + errno = ENOMEM; + return MAP_FAILED; + } + if (flags & MAP_FIXED) { + __vm_wait(); + } +#ifdef SYS_mmap2 + ret = __syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT); +#else + ret = __syscall(SYS_mmap, start, len, prot, flags, fd, off); +#endif + /* Fixup incorrect EPERM from kernel. */ + if (ret == -EPERM && !start && (flags&MAP_ANON) && !(flags&MAP_FIXED)) + ret = -ENOMEM; + return (void *)__syscall_ret(ret); +} + +weak_alias(__mmap, mmap); + +weak_alias(mmap, mmap64); diff --git a/vendor/modernc.org/libc/musl/src/mman/mprotect.c b/vendor/modernc.org/libc/musl/src/mman/mprotect.c new file mode 100644 index 000000000..535787b9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mprotect.c @@ -0,0 +1,13 @@ +#include +#include "libc.h" +#include "syscall.h" + +int __mprotect(void *addr, size_t len, int prot) +{ + size_t start, end; + start = (size_t)addr & -PAGE_SIZE; + end = (size_t)((char *)addr + len + PAGE_SIZE-1) & -PAGE_SIZE; + return syscall(SYS_mprotect, start, end-start, prot); +} + +weak_alias(__mprotect, mprotect); diff --git a/vendor/modernc.org/libc/musl/src/mman/mremap.c b/vendor/modernc.org/libc/musl/src/mman/mremap.c new file mode 100644 index 000000000..cc6991a63 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/mremap.c @@ -0,0 +1,32 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include "syscall.h" + +static void dummy(void) { } +weak_alias(dummy, __vm_wait); + +void *__mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...) +{ + va_list ap; + void *new_addr = 0; + + if (new_len >= PTRDIFF_MAX) { + errno = ENOMEM; + return MAP_FAILED; + } + + if (flags & MREMAP_FIXED) { + __vm_wait(); + va_start(ap, flags); + new_addr = va_arg(ap, void *); + va_end(ap); + } + + return (void *)syscall(SYS_mremap, old_addr, old_len, new_len, flags, new_addr); +} + +weak_alias(__mremap, mremap); diff --git a/vendor/modernc.org/libc/musl/src/mman/msync.c b/vendor/modernc.org/libc/musl/src/mman/msync.c new file mode 100644 index 000000000..fcd8cdf9f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/msync.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int msync(void *start, size_t len, int flags) +{ + return syscall_cp(SYS_msync, start, len, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/munlock.c b/vendor/modernc.org/libc/musl/src/mman/munlock.c new file mode 100644 index 000000000..2cccef0c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/munlock.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int munlock(const void *addr, size_t len) +{ + return syscall(SYS_munlock, addr, len); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/munlockall.c b/vendor/modernc.org/libc/musl/src/mman/munlockall.c new file mode 100644 index 000000000..6e9d39d68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/munlockall.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int munlockall(void) +{ + return syscall(SYS_munlockall); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/munmap.c b/vendor/modernc.org/libc/musl/src/mman/munmap.c new file mode 100644 index 000000000..2bf83bbe9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/munmap.c @@ -0,0 +1,13 @@ +#include +#include "syscall.h" + +static void dummy(void) { } +weak_alias(dummy, __vm_wait); + +int __munmap(void *start, size_t len) +{ + __vm_wait(); + return syscall(SYS_munmap, start, len); +} + +weak_alias(__munmap, munmap); diff --git a/vendor/modernc.org/libc/musl/src/mman/posix_madvise.c b/vendor/modernc.org/libc/musl/src/mman/posix_madvise.c new file mode 100644 index 000000000..e5e5acb84 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/posix_madvise.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int posix_madvise(void *addr, size_t len, int advice) +{ + if (advice == MADV_DONTNEED) return 0; + return -__syscall(SYS_madvise, addr, len, advice); +} diff --git a/vendor/modernc.org/libc/musl/src/mman/shm_open.c b/vendor/modernc.org/libc/musl/src/mman/shm_open.c new file mode 100644 index 000000000..79784bd30 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mman/shm_open.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include +#include +#include + +char *__shm_mapname(const char *name, char *buf) +{ + char *p; + while (*name == '/') name++; + if (*(p = __strchrnul(name, '/')) || p==name || + (p-name <= 2 && name[0]=='.' && p[-1]=='.')) { + errno = EINVAL; + return 0; + } + if (p-name > NAME_MAX) { + errno = ENAMETOOLONG; + return 0; + } + memcpy(buf, "/dev/shm/", 9); + memcpy(buf+9, name, p-name+1); + return buf; +} + +int shm_open(const char *name, int flag, mode_t mode) +{ + int cs; + char buf[NAME_MAX+10]; + if (!(name = __shm_mapname(name, buf))) return -1; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + int fd = open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode); + pthread_setcancelstate(cs, 0); + return fd; +} + +int shm_unlink(const char *name) +{ + char buf[NAME_MAX+10]; + if (!(name = __shm_mapname(name, buf))) return -1; + return unlink(name); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_close.c b/vendor/modernc.org/libc/musl/src/mq/mq_close.c new file mode 100644 index 000000000..a61f094d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_close.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mq_close(mqd_t mqd) +{ + return syscall(SYS_close, mqd); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_getattr.c b/vendor/modernc.org/libc/musl/src/mq/mq_getattr.c new file mode 100644 index 000000000..dce180691 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_getattr.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mq_getattr(mqd_t mqd, struct mq_attr *attr) +{ + return mq_setattr(mqd, 0, attr); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_notify.c b/vendor/modernc.org/libc/musl/src/mq/mq_notify.c new file mode 100644 index 000000000..221591c73 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_notify.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include +#include +#include "syscall.h" + +struct args { + pthread_barrier_t barrier; + int sock; + const struct sigevent *sev; +}; + +static void *start(void *p) +{ + struct args *args = p; + char buf[32]; + ssize_t n; + int s = args->sock; + void (*func)(union sigval) = args->sev->sigev_notify_function; + union sigval val = args->sev->sigev_value; + + pthread_barrier_wait(&args->barrier); + n = recv(s, buf, sizeof(buf), MSG_NOSIGNAL|MSG_WAITALL); + close(s); + if (n==sizeof buf && buf[sizeof buf - 1] == 1) + func(val); + return 0; +} + +int mq_notify(mqd_t mqd, const struct sigevent *sev) +{ + struct args args = { .sev = sev }; + pthread_attr_t attr; + pthread_t td; + int s; + struct sigevent sev2; + static const char zeros[32]; + + if (!sev || sev->sigev_notify != SIGEV_THREAD) + return syscall(SYS_mq_notify, mqd, sev); + + s = socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, 0); + if (s < 0) return -1; + args.sock = s; + + if (sev->sigev_notify_attributes) attr = *sev->sigev_notify_attributes; + else pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + pthread_barrier_init(&args.barrier, 0, 2); + + if (pthread_create(&td, &attr, start, &args)) { + __syscall(SYS_close, s); + errno = EAGAIN; + return -1; + } + + pthread_barrier_wait(&args.barrier); + pthread_barrier_destroy(&args.barrier); + + sev2.sigev_notify = SIGEV_THREAD; + sev2.sigev_signo = s; + sev2.sigev_value.sival_ptr = (void *)&zeros; + + if (syscall(SYS_mq_notify, mqd, &sev2) < 0) { + pthread_cancel(td); + __syscall(SYS_close, s); + return -1; + } + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_open.c b/vendor/modernc.org/libc/musl/src/mq/mq_open.c new file mode 100644 index 000000000..aa91d5891 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_open.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include "syscall.h" + +mqd_t mq_open(const char *name, int flags, ...) +{ + mode_t mode = 0; + struct mq_attr *attr = 0; + if (*name == '/') name++; + if (flags & O_CREAT) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + attr = va_arg(ap, struct mq_attr *); + va_end(ap); + } + return syscall(SYS_mq_open, name, flags, mode, attr); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_receive.c b/vendor/modernc.org/libc/musl/src/mq/mq_receive.c new file mode 100644 index 000000000..0b1bb4e4f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_receive.c @@ -0,0 +1,6 @@ +#include + +ssize_t mq_receive(mqd_t mqd, char *msg, size_t len, unsigned *prio) +{ + return mq_timedreceive(mqd, msg, len, prio, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_send.c b/vendor/modernc.org/libc/musl/src/mq/mq_send.c new file mode 100644 index 000000000..1acb1b78d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_send.c @@ -0,0 +1,6 @@ +#include + +int mq_send(mqd_t mqd, const char *msg, size_t len, unsigned prio) +{ + return mq_timedsend(mqd, msg, len, prio, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_setattr.c b/vendor/modernc.org/libc/musl/src/mq/mq_setattr.c new file mode 100644 index 000000000..eae022e94 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_setattr.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mq_setattr(mqd_t mqd, const struct mq_attr *restrict new, struct mq_attr *restrict old) +{ + return syscall(SYS_mq_getsetattr, mqd, new, old); +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_timedreceive.c b/vendor/modernc.org/libc/musl/src/mq/mq_timedreceive.c new file mode 100644 index 000000000..f41b6642f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_timedreceive.c @@ -0,0 +1,24 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +ssize_t mq_timedreceive(mqd_t mqd, char *restrict msg, size_t len, unsigned *restrict prio, const struct timespec *restrict at) +{ +#ifdef SYS_mq_timedreceive_time64 + time_t s = at ? at->tv_sec : 0; + long ns = at ? at->tv_nsec : 0; + long r = -ENOSYS; + if (SYS_mq_timedreceive == SYS_mq_timedreceive_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_mq_timedreceive_time64, mqd, msg, len, prio, + at ? ((long long []){at->tv_sec, at->tv_nsec}) : 0); + if (SYS_mq_timedreceive == SYS_mq_timedreceive_time64 || r != -ENOSYS) + return __syscall_ret(r); + return syscall_cp(SYS_mq_timedreceive, mqd, msg, len, prio, + at ? ((long[]){CLAMP(s), ns}) : 0); +#else + return syscall_cp(SYS_mq_timedreceive, mqd, msg, len, prio, at); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_timedsend.c b/vendor/modernc.org/libc/musl/src/mq/mq_timedsend.c new file mode 100644 index 000000000..56cfcbb83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_timedsend.c @@ -0,0 +1,24 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int mq_timedsend(mqd_t mqd, const char *msg, size_t len, unsigned prio, const struct timespec *at) +{ +#ifdef SYS_mq_timedsend_time64 + time_t s = at ? at->tv_sec : 0; + long ns = at ? at->tv_nsec : 0; + long r = -ENOSYS; + if (SYS_mq_timedsend == SYS_mq_timedsend_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_mq_timedsend_time64, mqd, msg, len, prio, + at ? ((long long []){at->tv_sec, at->tv_nsec}) : 0); + if (SYS_mq_timedsend == SYS_mq_timedsend_time64 || r != -ENOSYS) + return __syscall_ret(r); + return syscall_cp(SYS_mq_timedsend, mqd, msg, len, prio, + at ? ((long[]){CLAMP(s), ns}) : 0); +#else + return syscall_cp(SYS_mq_timedsend, mqd, msg, len, prio, at); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/mq/mq_unlink.c b/vendor/modernc.org/libc/musl/src/mq/mq_unlink.c new file mode 100644 index 000000000..6a08a4c57 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/mq/mq_unlink.c @@ -0,0 +1,16 @@ +#include +#include +#include "syscall.h" + +int mq_unlink(const char *name) +{ + int ret; + if (*name == '/') name++; + ret = __syscall(SYS_mq_unlink, name); + if (ret < 0) { + if (ret == -EPERM) ret = -EACCES; + errno = -ret; + return -1; + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/btowc.c b/vendor/modernc.org/libc/musl/src/multibyte/btowc.c new file mode 100644 index 000000000..8acd0a2cf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/btowc.c @@ -0,0 +1,10 @@ +#include +#include +#include +#include "internal.h" + +wint_t btowc(int c) +{ + int b = (unsigned char)c; + return b<128U ? b : (MB_CUR_MAX==1 && c!=EOF) ? CODEUNIT(c) : WEOF; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/c16rtomb.c b/vendor/modernc.org/libc/musl/src/multibyte/c16rtomb.c new file mode 100644 index 000000000..39ca3758f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/c16rtomb.c @@ -0,0 +1,35 @@ +#include +#include +#include + +size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps) +{ + static unsigned internal_state; + if (!ps) ps = (void *)&internal_state; + unsigned *x = (unsigned *)ps; + wchar_t wc; + + if (!s) { + if (*x) goto ilseq; + return 1; + } + + if (!*x && c16 - 0xd800u < 0x400) { + *x = c16 - 0xd7c0 << 10; + return 0; + } + + if (*x) { + if (c16 - 0xdc00u >= 0x400) goto ilseq; + else wc = *x + c16 - 0xdc00; + *x = 0; + } else { + wc = c16; + } + return wcrtomb(s, wc, 0); + +ilseq: + *x = 0; + errno = EILSEQ; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/c32rtomb.c b/vendor/modernc.org/libc/musl/src/multibyte/c32rtomb.c new file mode 100644 index 000000000..67851328e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/c32rtomb.c @@ -0,0 +1,7 @@ +#include +#include + +size_t c32rtomb(char *restrict s, char32_t c32, mbstate_t *restrict ps) +{ + return wcrtomb(s, c32, ps); +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/internal.c b/vendor/modernc.org/libc/musl/src/multibyte/internal.c new file mode 100644 index 000000000..2f5aaa914 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/internal.c @@ -0,0 +1,26 @@ +#include "internal.h" + +#define C(x) ( x<2 ? -1 : ( R(0x80,0xc0) | x ) ) +#define D(x) C((x+16)) +#define E(x) ( ( x==0 ? R(0xa0,0xc0) : \ + x==0xd ? R(0x80,0xa0) : \ + R(0x80,0xc0) ) \ + | ( R(0x80,0xc0) >> 6 ) \ + | x ) +#define F(x) ( ( x>=5 ? 0 : \ + x==0 ? R(0x90,0xc0) : \ + x==4 ? R(0x80,0x90) : \ + R(0x80,0xc0) ) \ + | ( R(0x80,0xc0) >> 6 ) \ + | ( R(0x80,0xc0) >> 12 ) \ + | x ) + +const uint32_t bittab[] = { + C(0x2),C(0x3),C(0x4),C(0x5),C(0x6),C(0x7), + C(0x8),C(0x9),C(0xa),C(0xb),C(0xc),C(0xd),C(0xe),C(0xf), + D(0x0),D(0x1),D(0x2),D(0x3),D(0x4),D(0x5),D(0x6),D(0x7), + D(0x8),D(0x9),D(0xa),D(0xb),D(0xc),D(0xd),D(0xe),D(0xf), + E(0x0),E(0x1),E(0x2),E(0x3),E(0x4),E(0x5),E(0x6),E(0x7), + E(0x8),E(0x9),E(0xa),E(0xb),E(0xc),E(0xd),E(0xe),E(0xf), + F(0x0),F(0x1),F(0x2),F(0x3),F(0x4) +}; diff --git a/vendor/modernc.org/libc/musl/src/multibyte/internal.h b/vendor/modernc.org/libc/musl/src/multibyte/internal.h new file mode 100644 index 000000000..45bbc6d06 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/internal.h @@ -0,0 +1,24 @@ +#define bittab __fsmu8 + +#include +#include + +extern hidden const uint32_t bittab[]; + +/* Upper 6 state bits are a negative integer offset to bound-check next byte */ +/* equivalent to: ( (b-0x80) | (b+offset) ) & ~0x3f */ +#define OOB(c,b) (((((b)>>3)-0x10)|(((b)>>3)+((int32_t)(c)>>26))) & ~7) + +/* Interval [a,b). Either a must be 80 or b must be c0, lower 3 bits clear. */ +#define R(a,b) ((uint32_t)((a==0x80 ? 0x40u-b : 0u-a) << 23)) +#define FAILSTATE R(0x80,0x80) + +#define SA 0xc2u +#define SB 0xf4u + +/* Arbitrary encoding for representing code units instead of characters. */ +#define CODEUNIT(c) (0xdfff & (signed char)(c)) +#define IS_CODEUNIT(c) ((unsigned)(c)-0xdf80 < 0x80) + +/* Get inline definition of MB_CUR_MAX. */ +#include "locale_impl.h" diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mblen.c b/vendor/modernc.org/libc/musl/src/multibyte/mblen.c new file mode 100644 index 000000000..a4304bf5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mblen.c @@ -0,0 +1,6 @@ +#include + +int mblen(const char *s, size_t n) +{ + return mbtowc(0, s, n); +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbrlen.c b/vendor/modernc.org/libc/musl/src/multibyte/mbrlen.c new file mode 100644 index 000000000..accf4b331 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbrlen.c @@ -0,0 +1,7 @@ +#include + +size_t mbrlen(const char *restrict s, size_t n, mbstate_t *restrict st) +{ + static unsigned internal; + return mbrtowc(0, s, n, st ? st : (mbstate_t *)&internal); +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc16.c b/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc16.c new file mode 100644 index 000000000..765ff9037 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc16.c @@ -0,0 +1,30 @@ +#include +#include + +size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbstate_t *restrict ps) +{ + static unsigned internal_state; + if (!ps) ps = (void *)&internal_state; + unsigned *pending = (unsigned *)ps; + + if (!s) return mbrtoc16(0, "", 1, ps); + + /* mbrtowc states for partial UTF-8 characters have the high bit set; + * we use nonzero states without high bit for pending surrogates. */ + if ((int)*pending > 0) { + if (pc16) *pc16 = *pending; + *pending = 0; + return -3; + } + + wchar_t wc; + size_t ret = mbrtowc(&wc, s, n, ps); + if (ret <= 4) { + if (wc >= 0x10000) { + *pending = (wc & 0x3ff) + 0xdc00; + wc = 0xd7c0 + (wc >> 10); + } + if (pc16) *pc16 = wc; + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc32.c b/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc32.c new file mode 100644 index 000000000..9b6b23673 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbrtoc32.c @@ -0,0 +1,13 @@ +#include +#include + +size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps) +{ + static unsigned internal_state; + if (!ps) ps = (void *)&internal_state; + if (!s) return mbrtoc32(0, "", 1, ps); + wchar_t wc; + size_t ret = mbrtowc(&wc, s, n, ps); + if (ret <= 4 && pc32) *pc32 = wc; + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbrtowc.c b/vendor/modernc.org/libc/musl/src/multibyte/mbrtowc.c new file mode 100644 index 000000000..c94819e72 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbrtowc.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include "internal.h" + +size_t mbrtowc(wchar_t *restrict wc, const char *restrict src, size_t n, mbstate_t *restrict st) +{ + static unsigned internal_state; + unsigned c; + const unsigned char *s = (const void *)src; + const unsigned N = n; + wchar_t dummy; + + if (!st) st = (void *)&internal_state; + c = *(unsigned *)st; + + if (!s) { + if (c) goto ilseq; + return 0; + } else if (!wc) wc = &dummy; + + if (!n) return -2; + if (!c) { + if (*s < 0x80) return !!(*wc = *s); + if (MB_CUR_MAX==1) return (*wc = CODEUNIT(*s)), 1; + if (*s-SA > SB-SA) goto ilseq; + c = bittab[*s++-SA]; n--; + } + + if (n) { + if (OOB(c,*s)) goto ilseq; +loop: + c = c<<6 | *s++-0x80; n--; + if (!(c&(1U<<31))) { + *(unsigned *)st = 0; + *wc = c; + return N-n; + } + if (n) { + if (*s-0x80u >= 0x40) goto ilseq; + goto loop; + } + } + + *(unsigned *)st = c; + return -2; +ilseq: + *(unsigned *)st = 0; + errno = EILSEQ; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbsinit.c b/vendor/modernc.org/libc/musl/src/multibyte/mbsinit.c new file mode 100644 index 000000000..c608194a0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbsinit.c @@ -0,0 +1,6 @@ +#include + +int mbsinit(const mbstate_t *st) +{ + return !st || !*(unsigned *)st; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbsnrtowcs.c b/vendor/modernc.org/libc/musl/src/multibyte/mbsnrtowcs.c new file mode 100644 index 000000000..931192e2d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbsnrtowcs.c @@ -0,0 +1,55 @@ +#include + +size_t mbsnrtowcs(wchar_t *restrict wcs, const char **restrict src, size_t n, size_t wn, mbstate_t *restrict st) +{ + size_t l, cnt=0, n2; + wchar_t *ws, wbuf[256]; + const char *s = *src; + const char *tmp_s; + + if (!wcs) ws = wbuf, wn = sizeof wbuf / sizeof *wbuf; + else ws = wcs; + + /* making sure output buffer size is at most n/4 will ensure + * that mbsrtowcs never reads more than n input bytes. thus + * we can use mbsrtowcs as long as it's practical.. */ + + while ( s && wn && ( (n2=n/4)>=wn || n2>32 ) ) { + if (n2>=wn) n2=wn; + tmp_s = s; + l = mbsrtowcs(ws, &s, n2, st); + if (!(l+1)) { + cnt = l; + wn = 0; + break; + } + if (ws != wbuf) { + ws += l; + wn -= l; + } + n = s ? n - (s - tmp_s) : 0; + cnt += l; + } + if (s) while (wn && n) { + l = mbrtowc(ws, s, n, st); + if (l+2<=2) { + if (!(l+1)) { + cnt = l; + break; + } + if (!l) { + s = 0; + break; + } + /* have to roll back partial character */ + *(unsigned *)st = 0; + break; + } + s += l; n -= l; + /* safe - this loop runs fewer than sizeof(wbuf)/8 times */ + ws++; wn--; + cnt++; + } + if (wcs) *src = s; + return cnt; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbsrtowcs.c b/vendor/modernc.org/libc/musl/src/multibyte/mbsrtowcs.c new file mode 100644 index 000000000..9b2f2dfbb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbsrtowcs.c @@ -0,0 +1,120 @@ +#include +#include +#include +#include +#include +#include "internal.h" + +size_t mbsrtowcs(wchar_t *restrict ws, const char **restrict src, size_t wn, mbstate_t *restrict st) +{ + const unsigned char *s = (const void *)*src; + size_t wn0 = wn; + unsigned c = 0; + + if (st && (c = *(unsigned *)st)) { + if (ws) { + *(unsigned *)st = 0; + goto resume; + } else { + goto resume0; + } + } + + if (MB_CUR_MAX==1) { + if (!ws) return strlen((const char *)s); + for (;;) { + if (!wn) { + *src = (const void *)s; + return wn0; + } + if (!*s) break; + c = *s++; + *ws++ = CODEUNIT(c); + wn--; + } + *ws = 0; + *src = 0; + return wn0-wn; + } + + if (!ws) for (;;) { +#ifdef __GNUC__ + typedef uint32_t __attribute__((__may_alias__)) w32; + if (*s-1u < 0x7f && (uintptr_t)s%4 == 0) { + while (!(( *(w32*)s | *(w32*)s-0x01010101) & 0x80808080)) { + s += 4; + wn -= 4; + } + } +#endif + if (*s-1u < 0x7f) { + s++; + wn--; + continue; + } + if (*s-SA > SB-SA) break; + c = bittab[*s++-SA]; +resume0: + if (OOB(c,*s)) { s--; break; } + s++; + if (c&(1U<<25)) { + if (*s-0x80u >= 0x40) { s-=2; break; } + s++; + if (c&(1U<<19)) { + if (*s-0x80u >= 0x40) { s-=3; break; } + s++; + } + } + wn--; + c = 0; + } else for (;;) { + if (!wn) { + *src = (const void *)s; + return wn0; + } +#ifdef __GNUC__ + typedef uint32_t __attribute__((__may_alias__)) w32; + if (*s-1u < 0x7f && (uintptr_t)s%4 == 0) { + while (wn>=5 && !(( *(w32*)s | *(w32*)s-0x01010101) & 0x80808080)) { + *ws++ = *s++; + *ws++ = *s++; + *ws++ = *s++; + *ws++ = *s++; + wn -= 4; + } + } +#endif + if (*s-1u < 0x7f) { + *ws++ = *s++; + wn--; + continue; + } + if (*s-SA > SB-SA) break; + c = bittab[*s++-SA]; +resume: + if (OOB(c,*s)) { s--; break; } + c = (c<<6) | *s++-0x80; + if (c&(1U<<31)) { + if (*s-0x80u >= 0x40) { s-=2; break; } + c = (c<<6) | *s++-0x80; + if (c&(1U<<31)) { + if (*s-0x80u >= 0x40) { s-=3; break; } + c = (c<<6) | *s++-0x80; + } + } + *ws++ = c; + wn--; + c = 0; + } + + if (!c && !*s) { + if (ws) { + *ws = 0; + *src = 0; + } + return wn0-wn; + } + errno = EILSEQ; + if (ws) *src = (const void *)s; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbstowcs.c b/vendor/modernc.org/libc/musl/src/multibyte/mbstowcs.c new file mode 100644 index 000000000..dc0d45948 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbstowcs.c @@ -0,0 +1,7 @@ +#include +#include + +size_t mbstowcs(wchar_t *restrict ws, const char *restrict s, size_t wn) +{ + return mbsrtowcs(ws, (void*)&s, wn, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/mbtowc.c b/vendor/modernc.org/libc/musl/src/multibyte/mbtowc.c new file mode 100644 index 000000000..c191bb038 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/mbtowc.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include "internal.h" + +int mbtowc(wchar_t *restrict wc, const char *restrict src, size_t n) +{ + unsigned c; + const unsigned char *s = (const void *)src; + wchar_t dummy; + + if (!s) return 0; + if (!n) goto ilseq; + if (!wc) wc = &dummy; + + if (*s < 0x80) return !!(*wc = *s); + if (MB_CUR_MAX==1) return (*wc = CODEUNIT(*s)), 1; + if (*s-SA > SB-SA) goto ilseq; + c = bittab[*s++-SA]; + + /* Avoid excessive checks against n: If shifting the state n-1 + * times does not clear the high bit, then the value of n is + * insufficient to read a character */ + if (n<4 && ((c<<(6*n-6)) & (1U<<31))) goto ilseq; + + if (OOB(c,*s)) goto ilseq; + c = c<<6 | *s++-0x80; + if (!(c&(1U<<31))) { + *wc = c; + return 2; + } + + if (*s-0x80u >= 0x40) goto ilseq; + c = c<<6 | *s++-0x80; + if (!(c&(1U<<31))) { + *wc = c; + return 3; + } + + if (*s-0x80u >= 0x40) goto ilseq; + *wc = c<<6 | *s++-0x80; + return 4; + +ilseq: + errno = EILSEQ; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wcrtomb.c b/vendor/modernc.org/libc/musl/src/multibyte/wcrtomb.c new file mode 100644 index 000000000..8e34926ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wcrtomb.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include "internal.h" + +size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st) +{ + if (!s) return 1; + if ((unsigned)wc < 0x80) { + *s = wc; + return 1; + } else if (MB_CUR_MAX == 1) { + if (!IS_CODEUNIT(wc)) { + errno = EILSEQ; + return -1; + } + *s = wc; + return 1; + } else if ((unsigned)wc < 0x800) { + *s++ = 0xc0 | (wc>>6); + *s = 0x80 | (wc&0x3f); + return 2; + } else if ((unsigned)wc < 0xd800 || (unsigned)wc-0xe000 < 0x2000) { + *s++ = 0xe0 | (wc>>12); + *s++ = 0x80 | ((wc>>6)&0x3f); + *s = 0x80 | (wc&0x3f); + return 3; + } else if ((unsigned)wc-0x10000 < 0x100000) { + *s++ = 0xf0 | (wc>>18); + *s++ = 0x80 | ((wc>>12)&0x3f); + *s++ = 0x80 | ((wc>>6)&0x3f); + *s = 0x80 | (wc&0x3f); + return 4; + } + errno = EILSEQ; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wcsnrtombs.c b/vendor/modernc.org/libc/musl/src/multibyte/wcsnrtombs.c new file mode 100644 index 000000000..676932b5d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wcsnrtombs.c @@ -0,0 +1,43 @@ +#include + +size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st) +{ + size_t l, cnt=0, n2; + char *s, buf[256]; + const wchar_t *ws = *wcs; + const wchar_t *tmp_ws; + + if (!dst) s = buf, n = sizeof buf; + else s = dst; + + while ( ws && n && ( (n2=wn)>=n || n2>32 ) ) { + if (n2>=n) n2=n; + tmp_ws = ws; + l = wcsrtombs(s, &ws, n2, 0); + if (!(l+1)) { + cnt = l; + n = 0; + break; + } + if (s != buf) { + s += l; + n -= l; + } + wn = ws ? wn - (ws - tmp_ws) : 0; + cnt += l; + } + if (ws) while (n && wn) { + l = wcrtomb(s, *ws, 0); + if ((l+1)<=1) { + if (!l) ws = 0; + else cnt = l; + break; + } + ws++; wn--; + /* safe - this loop runs fewer than sizeof(buf) times */ + s+=l; n-=l; + cnt += l; + } + if (dst) *wcs = ws; + return cnt; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wcsrtombs.c b/vendor/modernc.org/libc/musl/src/multibyte/wcsrtombs.c new file mode 100644 index 000000000..b5713aeac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wcsrtombs.c @@ -0,0 +1,55 @@ +#include + +size_t wcsrtombs(char *restrict s, const wchar_t **restrict ws, size_t n, mbstate_t *restrict st) +{ + const wchar_t *ws2; + char buf[4]; + size_t N = n, l; + if (!s) { + for (n=0, ws2=*ws; *ws2; ws2++) { + if (*ws2 >= 0x80u) { + l = wcrtomb(buf, *ws2, 0); + if (!(l+1)) return -1; + n += l; + } else n++; + } + return n; + } + while (n>=4) { + if (**ws-1u >= 0x7fu) { + if (!**ws) { + *s = 0; + *ws = 0; + return N-n; + } + l = wcrtomb(s, **ws, 0); + if (!(l+1)) return -1; + s += l; + n -= l; + } else { + *s++ = **ws; + n--; + } + (*ws)++; + } + while (n) { + if (**ws-1u >= 0x7fu) { + if (!**ws) { + *s = 0; + *ws = 0; + return N-n; + } + l = wcrtomb(buf, **ws, 0); + if (!(l+1)) return -1; + if (l>n) return N-n; + wcrtomb(s, **ws, 0); + s += l; + n -= l; + } else { + *s++ = **ws; + n--; + } + (*ws)++; + } + return N; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wcstombs.c b/vendor/modernc.org/libc/musl/src/multibyte/wcstombs.c new file mode 100644 index 000000000..6b3b3c780 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wcstombs.c @@ -0,0 +1,8 @@ +#include +#include + +size_t wcstombs(char *restrict s, const wchar_t *restrict ws, size_t n) +{ + //TODO return wcsrtombs(s, &(const wchar_t *){ws}, n, 0); + return wcsrtombs(s, &ws, n, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wctob.c b/vendor/modernc.org/libc/musl/src/multibyte/wctob.c new file mode 100644 index 000000000..b484a3fd0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wctob.c @@ -0,0 +1,11 @@ +#include +#include +#include +#include "internal.h" + +int wctob(wint_t c) +{ + if (c < 128U) return c; + if (MB_CUR_MAX==1 && IS_CODEUNIT(c)) return (unsigned char)c; + return EOF; +} diff --git a/vendor/modernc.org/libc/musl/src/multibyte/wctomb.c b/vendor/modernc.org/libc/musl/src/multibyte/wctomb.c new file mode 100644 index 000000000..bad41c5ed --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/multibyte/wctomb.c @@ -0,0 +1,8 @@ +#include +#include + +int wctomb(char *s, wchar_t wc) +{ + if (!s) return 0; + return wcrtomb(s, wc, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/accept.c b/vendor/modernc.org/libc/musl/src/network/accept.c new file mode 100644 index 000000000..a92406fa7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/accept.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int accept(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) +{ + return socketcall_cp(accept, fd, addr, len, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/accept4.c b/vendor/modernc.org/libc/musl/src/network/accept4.c new file mode 100644 index 000000000..59ab1726b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/accept4.c @@ -0,0 +1,19 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int flg) +{ + if (!flg) return accept(fd, addr, len); + int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0); + if (ret>=0 || (errno != ENOSYS && errno != EINVAL)) return ret; + ret = accept(fd, addr, len); + if (ret<0) return ret; + if (flg & SOCK_CLOEXEC) + __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + if (flg & SOCK_NONBLOCK) + __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/network/bind.c b/vendor/modernc.org/libc/musl/src/network/bind.c new file mode 100644 index 000000000..07bb669aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/bind.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int bind(int fd, const struct sockaddr *addr, socklen_t len) +{ + return socketcall(bind, fd, addr, len, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/connect.c b/vendor/modernc.org/libc/musl/src/network/connect.c new file mode 100644 index 000000000..289127be4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/connect.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int connect(int fd, const struct sockaddr *addr, socklen_t len) +{ + return socketcall_cp(connect, fd, addr, len, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/dn_comp.c b/vendor/modernc.org/libc/musl/src/network/dn_comp.c new file mode 100644 index 000000000..f0ccd160f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/dn_comp.c @@ -0,0 +1,107 @@ +#include +#include + +/* RFC 1035 message compression */ + +/* label start offsets of a compressed domain name s */ +static int getoffs(short *offs, const unsigned char *base, const unsigned char *s) +{ + int i=0; + for (;;) { + while (*s & 0xc0) { + if ((*s & 0xc0) != 0xc0) return 0; + s = base + ((s[0]&0x3f)<<8 | s[1]); + } + if (!*s) return i; + if (s-base >= 0x4000) return 0; + offs[i++] = s-base; + s += *s + 1; + } +} + +/* label lengths of an ascii domain name s */ +static int getlens(unsigned char *lens, const char *s, int l) +{ + int i=0,j=0,k=0; + for (;;) { + for (; j 62) return 0; + lens[i++] = j-k; + if (j==l) return i; + k = ++j; + } +} + +/* longest suffix match of an ascii domain with a compressed domain name dn */ +static int match(int *offset, const unsigned char *base, const unsigned char *dn, + const char *end, const unsigned char *lens, int nlen) +{ + int l, o, m=0; + short offs[128]; + int noff = getoffs(offs, base, dn); + if (!noff) return 0; + for (;;) { + l = lens[--nlen]; + o = offs[--noff]; + end -= l; + if (l != base[o] || memcmp(base+o+1, end, l)) + return m; + *offset = o; + m += l; + if (nlen) m++; + if (!nlen || !noff) return m; + end--; + } +} + +int dn_comp(const char *src, unsigned char *dst, int space, unsigned char **dnptrs, unsigned char **lastdnptr) +{ + int i, j, n, m=0, offset, bestlen=0, bestoff; + unsigned char lens[127]; + unsigned char **p; + const char *end; + size_t l = strnlen(src, 255); + if (l && src[l-1] == '.') l--; + if (l>253 || space<=0) return -1; + if (!l) { + *dst = 0; + return 1; + } + end = src+l; + n = getlens(lens, src, l); + if (!n) return -1; + + p = dnptrs; + if (p && *p) for (p++; *p; p++) { + m = match(&offset, *dnptrs, *p, end, lens, n); + if (m > bestlen) { + bestlen = m; + bestoff = offset; + if (m == l) + break; + } + } + + /* encode unmatched part */ + if (space < l-bestlen+2+(bestlen-1 < l-1)) return -1; + memcpy(dst+1, src, l-bestlen); + for (i=j=0; i>8; + dst[i++] = bestoff; + } else + dst[i++] = 0; + + /* save dst pointer */ + if (i>2 && lastdnptr && dnptrs && *dnptrs) { + while (*p) p++; + if (p+1 < lastdnptr) { + *p++ = dst; + *p=0; + } + } + return i; +} diff --git a/vendor/modernc.org/libc/musl/src/network/dn_expand.c b/vendor/modernc.org/libc/musl/src/network/dn_expand.c new file mode 100644 index 000000000..eac343af5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/dn_expand.c @@ -0,0 +1,33 @@ +#include + +int __dn_expand(const unsigned char *base, const unsigned char *end, const unsigned char *src, char *dest, int space) +{ + const unsigned char *p = src; + char *dend, *dbegin = dest; + int len = -1, i, j; + if (p==end || space <= 0) return -1; + dend = dest + (space > 254 ? 254 : space); + /* detect reference loop using an iteration counter */ + for (i=0; i < end-base; i+=2) { + /* loop invariants: p= end-base) return -1; + p = base+j; + } else if (*p) { + if (dest != dbegin) *dest++ = '.'; + j = *p++; + if (j >= end-p || j >= dend-dest) return -1; + while (j--) *dest++ = *p++; + } else { + *dest = 0; + if (len < 0) len = p+1-src; + return len; + } + } + return -1; +} + +weak_alias(__dn_expand, dn_expand); diff --git a/vendor/modernc.org/libc/musl/src/network/dn_skipname.c b/vendor/modernc.org/libc/musl/src/network/dn_skipname.c new file mode 100644 index 000000000..eba65bb82 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/dn_skipname.c @@ -0,0 +1,15 @@ +#include + +int dn_skipname(const unsigned char *s, const unsigned char *end) +{ + const unsigned char *p = s; + while (p < end) + if (!*p) return p-s+1; + else if (*p>=192) + if (p+1 +#include "lookup.h" + +int __dns_parse(const unsigned char *r, int rlen, int (*callback)(void *, int, const void *, int, const void *), void *ctx) +{ + int qdcount, ancount; + const unsigned char *p; + int len; + + if (rlen<12) return -1; + if ((r[3]&15)) return 0; + p = r+12; + qdcount = r[4]*256 + r[5]; + ancount = r[6]*256 + r[7]; + if (qdcount+ancount > 64) return -1; + while (qdcount--) { + while (p-r < rlen && *p-1U < 127) p++; + if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6) + return -1; + p += 5 + !!*p; + } + while (ancount--) { + while (p-r < rlen && *p-1U < 127) p++; + if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6) + return -1; + p += 1 + !!*p; + len = p[8]*256 + p[9]; + if (p+len > r+rlen) return -1; + if (callback(ctx, p[1], p+10, len, r) < 0) return -1; + p += 10 + len; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/ent.c b/vendor/modernc.org/libc/musl/src/network/ent.c new file mode 100644 index 000000000..c6e012306 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/ent.c @@ -0,0 +1,22 @@ +#include + +void sethostent(int x) +{ +} + +struct hostent *gethostent() +{ + return 0; +} + +struct netent *getnetent() +{ + return 0; +} + +void endhostent(void) +{ +} + +weak_alias(sethostent, setnetent); +weak_alias(endhostent, endnetent); diff --git a/vendor/modernc.org/libc/musl/src/network/ether.c b/vendor/modernc.org/libc/musl/src/network/ether.c new file mode 100644 index 000000000..4304a972f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/ether.c @@ -0,0 +1,58 @@ +#include +#include +#include + +struct ether_addr *ether_aton_r (const char *x, struct ether_addr *p_a) +{ + struct ether_addr a; + char *y; + for (int ii = 0; ii < 6; ii++) { + unsigned long int n; + if (ii != 0) { + if (x[0] != ':') return 0; /* bad format */ + else x++; + } + n = strtoul (x, &y, 16); + x = y; + if (n > 0xFF) return 0; /* bad byte */ + a.ether_addr_octet[ii] = n; + } + if (x[0] != 0) return 0; /* bad format */ + *p_a = a; + return p_a; +} + +struct ether_addr *ether_aton (const char *x) +{ + static struct ether_addr a; + return ether_aton_r (x, &a); +} + +char *ether_ntoa_r (const struct ether_addr *p_a, char *x) { + char *y; + y = x; + for (int ii = 0; ii < 6; ii++) { + x += sprintf (x, ii == 0 ? "%.2X" : ":%.2X", p_a->ether_addr_octet[ii]); + } + return y; +} + +char *ether_ntoa (const struct ether_addr *p_a) { + static char x[18]; + return ether_ntoa_r (p_a, x); +} + +int ether_line(const char *l, struct ether_addr *e, char *hostname) +{ + return -1; +} + +int ether_ntohost(char *hostname, const struct ether_addr *e) +{ + return -1; +} + +int ether_hostton(const char *hostname, struct ether_addr *e) +{ + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/network/freeaddrinfo.c b/vendor/modernc.org/libc/musl/src/network/freeaddrinfo.c new file mode 100644 index 000000000..8dd6ac34e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/freeaddrinfo.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include "lookup.h" +#include "lock.h" + +void freeaddrinfo(struct addrinfo *p) +{ + size_t cnt; + for (cnt=1; p->ai_next; cnt++, p=p->ai_next); + struct aibuf *b = (void *)((char *)p - offsetof(struct aibuf, ai)); + b -= b->slot; + //TODO LOCK(b->lock); + if (!(b->ref -= cnt)) free(b); + //TODO else UNLOCK(b->lock); +} diff --git a/vendor/modernc.org/libc/musl/src/network/gai_strerror.c b/vendor/modernc.org/libc/musl/src/network/gai_strerror.c new file mode 100644 index 000000000..9596580e9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gai_strerror.c @@ -0,0 +1,25 @@ +#include +#include "locale_impl.h" + +static const char msgs[] = + "Invalid flags\0" + "Name does not resolve\0" + "Try again\0" + "Non-recoverable error\0" + "Unknown error\0" + "Unrecognized address family or invalid length\0" + "Unrecognized socket type\0" + "Unrecognized service\0" + "Unknown error\0" + "Out of memory\0" + "System error\0" + "Overflow\0" + "\0Unknown error"; + +const char *gai_strerror(int ecode) +{ + const char *s; + for (s=msgs, ecode++; ecode && *s; ecode++, s++) for (; *s; s++); + if (!*s) s++; + return LCTRANS_CUR(s); +} diff --git a/vendor/modernc.org/libc/musl/src/network/getaddrinfo.c b/vendor/modernc.org/libc/musl/src/network/getaddrinfo.c new file mode 100644 index 000000000..5d7efe6b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getaddrinfo.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" + +int getaddrinfo(const char *restrict host, const char *restrict serv, const struct addrinfo *restrict hint, struct addrinfo **restrict res) +{ + struct service ports[MAXSERVS]; + struct address addrs[MAXADDRS]; + char canon[256], *outcanon; + int nservs, naddrs, nais, canon_len, i, j, k; + int family = AF_UNSPEC, flags = 0, proto = 0, socktype = 0; + struct aibuf *out; + + if (!host && !serv) return EAI_NONAME; + + if (hint) { + family = hint->ai_family; + flags = hint->ai_flags; + proto = hint->ai_protocol; + socktype = hint->ai_socktype; + + const int mask = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | + AI_V4MAPPED | AI_ALL | AI_ADDRCONFIG | AI_NUMERICSERV; + if ((flags & mask) != flags) + return EAI_BADFLAGS; + + switch (family) { + case AF_INET: + case AF_INET6: + case AF_UNSPEC: + break; + default: + return EAI_FAMILY; + } + } + + if (flags & AI_ADDRCONFIG) { + abort(); //TODO- + // /* Define the "an address is configured" condition for address + // * families via ability to create a socket for the family plus + // * routability of the loopback address for the family. */ + // static const struct sockaddr_in lo4 = { + // .sin_family = AF_INET, .sin_port = 65535, + // .sin_addr.s_addr = __BYTE_ORDER == __BIG_ENDIAN + // ? 0x7f000001 : 0x0100007f + // }; + // static const struct sockaddr_in6 lo6 = { + // .sin6_family = AF_INET6, .sin6_port = 65535, + // .sin6_addr = IN6ADDR_LOOPBACK_INIT + // }; + // int tf[2] = { AF_INET, AF_INET6 }; + // const void *ta[2] = { &lo4, &lo6 }; + // socklen_t tl[2] = { sizeof lo4, sizeof lo6 }; + // for (i=0; i<2; i++) { + // if (family==tf[1-i]) continue; + // int s = socket(tf[i], SOCK_CLOEXEC|SOCK_DGRAM, + // IPPROTO_UDP); + // if (s>=0) { + // int cs; + // pthread_setcancelstate( + // PTHREAD_CANCEL_DISABLE, &cs); + // int r = connect(s, ta[i], tl[i]); + // pthread_setcancelstate(cs, 0); + // close(s); + // if (!r) continue; + // } + // switch (errno) { + // case EADDRNOTAVAIL: + // case EAFNOSUPPORT: + // case EHOSTUNREACH: + // case ENETDOWN: + // case ENETUNREACH: + // break; + // default: + // return EAI_SYSTEM; + // } + // if (family == tf[i]) return EAI_NONAME; + // family = tf[1-i]; + // } + } + + nservs = __lookup_serv(ports, serv, proto, socktype, flags); + if (nservs < 0) return nservs; + + naddrs = __lookup_name(addrs, canon, host, family, flags); + if (naddrs < 0) return naddrs; + + nais = nservs * naddrs; + canon_len = strlen(canon); + out = calloc(1, nais * sizeof(*out) + canon_len + 1); + if (!out) return EAI_MEMORY; + + if (canon_len) { + outcanon = (void *)&out[nais]; + memcpy(outcanon, canon, canon_len+1); + } else { + outcanon = 0; + } + + for (k=i=0; iai; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyaddr.c b/vendor/modernc.org/libc/musl/src/network/gethostbyaddr.c new file mode 100644 index 000000000..598e2241a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyaddr.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE + +#include +#include +#include + +struct hostent *gethostbyaddr(const void *a, socklen_t l, int af) +{ + static struct hostent *h; + size_t size = 63; + struct hostent *res; + int err; + do { + free(h); + h = malloc(size+=size+1); + if (!h) { + h_errno = NO_RECOVERY; + return 0; + } + err = gethostbyaddr_r(a, l, af, h, + (void *)(h+1), size-sizeof *h, &res, &h_errno); + } while (err == ERANGE); + return err ? 0 : h; +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyaddr_r.c b/vendor/modernc.org/libc/musl/src/network/gethostbyaddr_r.c new file mode 100644 index 000000000..bc8aea167 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyaddr_r.c @@ -0,0 +1,76 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include + +int gethostbyaddr_r(const void *a, socklen_t l, int af, + struct hostent *h, char *buf, size_t buflen, + struct hostent **res, int *err) +{ + //TODO union { + //TODO struct sockaddr_in sin; + //TODO struct sockaddr_in6 sin6; + //TODO } sa = { .sin.sin_family = af }; + union { //TODO- + struct sockaddr_in sin; //TODO- + struct sockaddr_in6 sin6; //TODO- + } sa = {}; //TODO- + sa.sin.sin_family = af; //TODO- + socklen_t sl = af==AF_INET6 ? sizeof sa.sin6 : sizeof sa.sin; + int i; + + *res = 0; + + /* Load address argument into sockaddr structure */ + if (af==AF_INET6 && l==16) memcpy(&sa.sin6.sin6_addr, a, 16); + else if (af==AF_INET && l==4) memcpy(&sa.sin.sin_addr, a, 4); + else { + *err = NO_RECOVERY; + return EINVAL; + } + + /* Align buffer and check for space for pointers and ip address */ + i = (uintptr_t)buf & sizeof(char *)-1; + if (!i) i = sizeof(char *); + if (buflen <= 5*sizeof(char *)-i + l) return ERANGE; + buf += sizeof(char *)-i; + buflen -= 5*sizeof(char *)-i + l; + + h->h_addr_list = (void *)buf; + buf += 2*sizeof(char *); + h->h_aliases = (void *)buf; + buf += 2*sizeof(char *); + + h->h_addr_list[0] = buf; + memcpy(h->h_addr_list[0], a, l); + buf += l; + h->h_addr_list[1] = 0; + h->h_aliases[0] = buf; + h->h_aliases[1] = 0; + + switch (getnameinfo((void *)&sa, sl, buf, buflen, 0, 0, 0)) { + case EAI_AGAIN: + *err = TRY_AGAIN; + return EAGAIN; + case EAI_OVERFLOW: + return ERANGE; + default: + case EAI_MEMORY: + case EAI_SYSTEM: + case EAI_FAIL: + *err = NO_RECOVERY; + return errno; + case 0: + break; + } + + h->h_addrtype = af; + h->h_length = l; + h->h_name = h->h_aliases[0]; + *res = h; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyname.c b/vendor/modernc.org/libc/musl/src/network/gethostbyname.c new file mode 100644 index 000000000..bfedf52ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyname.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include + +struct hostent *gethostbyname(const char *name) +{ + return gethostbyname2(name, AF_INET); +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyname2.c b/vendor/modernc.org/libc/musl/src/network/gethostbyname2.c new file mode 100644 index 000000000..dc9d6621b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyname2.c @@ -0,0 +1,25 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include + +struct hostent *gethostbyname2(const char *name, int af) +{ + static struct hostent *h; + size_t size = 63; + struct hostent *res; + int err; + do { + free(h); + h = malloc(size+=size+1); + if (!h) { + h_errno = NO_RECOVERY; + return 0; + } + err = gethostbyname2_r(name, af, h, + (void *)(h+1), size-sizeof *h, &res, &h_errno); + } while (err == ERANGE); + return err ? 0 : h; +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyname2_r.c b/vendor/modernc.org/libc/musl/src/network/gethostbyname2_r.c new file mode 100644 index 000000000..fc8948776 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyname2_r.c @@ -0,0 +1,80 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include "lookup.h" + +int gethostbyname2_r(const char *name, int af, + struct hostent *h, char *buf, size_t buflen, + struct hostent **res, int *err) +{ + struct address addrs[MAXADDRS]; + char canon[256]; + int i, cnt; + size_t align, need; + + *res = 0; + cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME); + if (cnt<0) switch (cnt) { + case EAI_NONAME: + *err = HOST_NOT_FOUND; + return ENOENT; + case EAI_AGAIN: + *err = TRY_AGAIN; + return EAGAIN; + default: + case EAI_FAIL: + *err = NO_RECOVERY; + return EBADMSG; + case EAI_MEMORY: + case EAI_SYSTEM: + *err = NO_RECOVERY; + return errno; + } + + h->h_addrtype = af; + h->h_length = af==AF_INET6 ? 16 : 4; + + /* Align buffer */ + align = -(uintptr_t)buf & sizeof(char *)-1; + + need = 4*sizeof(char *); + need += (cnt + 1) * (sizeof(char *) + h->h_length); + need += strlen(name)+1; + need += strlen(canon)+1; + need += align; + + if (need > buflen) return ERANGE; + + buf += align; + h->h_aliases = (void *)buf; + buf += 3*sizeof(char *); + h->h_addr_list = (void *)buf; + buf += (cnt+1)*sizeof(char *); + + for (i=0; ih_addr_list[i] = (void *)buf; + buf += h->h_length; + memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length); + } + h->h_addr_list[i] = 0; + + h->h_name = h->h_aliases[0] = buf; + strcpy(h->h_name, canon); + buf += strlen(h->h_name)+1; + + if (strcmp(h->h_name, name)) { + h->h_aliases[1] = buf; + strcpy(h->h_aliases[1], name); + buf += strlen(h->h_aliases[1])+1; + } else h->h_aliases[1] = 0; + + h->h_aliases[2] = 0; + + *res = h; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/gethostbyname_r.c b/vendor/modernc.org/libc/musl/src/network/gethostbyname_r.c new file mode 100644 index 000000000..cd8725417 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/gethostbyname_r.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE + +#include +#include + +int gethostbyname_r(const char *name, + struct hostent *h, char *buf, size_t buflen, + struct hostent **res, int *err) +{ + return gethostbyname2_r(name, AF_INET, h, buf, buflen, res, err); +} diff --git a/vendor/modernc.org/libc/musl/src/network/getifaddrs.c b/vendor/modernc.org/libc/musl/src/network/getifaddrs.c new file mode 100644 index 000000000..fed75bd8d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getifaddrs.c @@ -0,0 +1,216 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include "netlink.h" + +#define IFADDRS_HASH_SIZE 64 + +/* getifaddrs() reports hardware addresses with PF_PACKET that implies + * struct sockaddr_ll. But e.g. Infiniband socket address length is + * longer than sockaddr_ll.ssl_addr[8] can hold. Use this hack struct + * to extend ssl_addr - callers should be able to still use it. */ +struct sockaddr_ll_hack { + unsigned short sll_family, sll_protocol; + int sll_ifindex; + unsigned short sll_hatype; + unsigned char sll_pkttype, sll_halen; + unsigned char sll_addr[24]; +}; + +union sockany { + struct sockaddr sa; + struct sockaddr_ll_hack ll; + struct sockaddr_in v4; + struct sockaddr_in6 v6; +}; + +struct ifaddrs_storage { + struct ifaddrs ifa; + struct ifaddrs_storage *hash_next; + union sockany addr, netmask, ifu; + unsigned int index; + char name[IFNAMSIZ+1]; +}; + +struct ifaddrs_ctx { + struct ifaddrs_storage *first; + struct ifaddrs_storage *last; + struct ifaddrs_storage *hash[IFADDRS_HASH_SIZE]; +}; + +void freeifaddrs(struct ifaddrs *ifp) +{ + struct ifaddrs *n; + while (ifp) { + n = ifp->ifa_next; + free(ifp); + ifp = n; + } +} + +static void copy_addr(struct sockaddr **r, int af, union sockany *sa, void *addr, size_t addrlen, int ifindex) +{ + uint8_t *dst; + int len; + + switch (af) { + case AF_INET: + dst = (uint8_t*) &sa->v4.sin_addr; + len = 4; + break; + case AF_INET6: + dst = (uint8_t*) &sa->v6.sin6_addr; + len = 16; + if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MC_LINKLOCAL(addr)) + sa->v6.sin6_scope_id = ifindex; + break; + default: + return; + } + if (addrlen < len) return; + sa->sa.sa_family = af; + memcpy(dst, addr, len); + *r = &sa->sa; +} + +static void gen_netmask(struct sockaddr **r, int af, union sockany *sa, int prefixlen) +{ + uint8_t addr[16] = {0}; + int i; + + if (prefixlen > 8*sizeof(addr)) prefixlen = 8*sizeof(addr); + i = prefixlen / 8; + memset(addr, 0xff, i); + if (i < sizeof(addr)) addr[i++] = 0xff << (8 - (prefixlen % 8)); + copy_addr(r, af, sa, addr, sizeof(addr), 0); +} + +static void copy_lladdr(struct sockaddr **r, union sockany *sa, void *addr, size_t addrlen, int ifindex, unsigned short hatype) +{ + if (addrlen > sizeof(sa->ll.sll_addr)) return; + sa->ll.sll_family = AF_PACKET; + sa->ll.sll_ifindex = ifindex; + sa->ll.sll_hatype = hatype; + sa->ll.sll_halen = addrlen; + memcpy(sa->ll.sll_addr, addr, addrlen); + *r = &sa->sa; +} + +static int netlink_msg_to_ifaddr(void *pctx, struct nlmsghdr *h) +{ + struct ifaddrs_ctx *ctx = pctx; + struct ifaddrs_storage *ifs, *ifs0; + struct ifinfomsg *ifi = NLMSG_DATA(h); + struct ifaddrmsg *ifa = NLMSG_DATA(h); + struct rtattr *rta; + int stats_len = 0; + + if (h->nlmsg_type == RTM_NEWLINK) { + for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) { + if (rta->rta_type != IFLA_STATS) continue; + stats_len = RTA_DATALEN(rta); + break; + } + } else { + for (ifs0 = ctx->hash[ifa->ifa_index % IFADDRS_HASH_SIZE]; ifs0; ifs0 = ifs0->hash_next) + if (ifs0->index == ifa->ifa_index) + break; + if (!ifs0) return 0; + } + + ifs = calloc(1, sizeof(struct ifaddrs_storage) + stats_len); + if (ifs == 0) return -1; + + if (h->nlmsg_type == RTM_NEWLINK) { + ifs->index = ifi->ifi_index; + ifs->ifa.ifa_flags = ifi->ifi_flags; + + for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) { + switch (rta->rta_type) { + case IFLA_IFNAME: + if (RTA_DATALEN(rta) < sizeof(ifs->name)) { + memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta)); + ifs->ifa.ifa_name = ifs->name; + } + break; + case IFLA_ADDRESS: + copy_lladdr(&ifs->ifa.ifa_addr, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type); + break; + case IFLA_BROADCAST: + copy_lladdr(&ifs->ifa.ifa_broadaddr, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type); + break; + case IFLA_STATS: + ifs->ifa.ifa_data = (void*)(ifs+1); + memcpy(ifs->ifa.ifa_data, RTA_DATA(rta), RTA_DATALEN(rta)); + break; + } + } + if (ifs->ifa.ifa_name) { + unsigned int bucket = ifs->index % IFADDRS_HASH_SIZE; + ifs->hash_next = ctx->hash[bucket]; + ctx->hash[bucket] = ifs; + } + } else { + ifs->ifa.ifa_name = ifs0->ifa.ifa_name; + ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags; + for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) { + switch (rta->rta_type) { + case IFA_ADDRESS: + /* If ifa_addr is already set we, received an IFA_LOCAL before + * so treat this as destination address */ + if (ifs->ifa.ifa_addr) + copy_addr(&ifs->ifa.ifa_dstaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index); + else + copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index); + break; + case IFA_BROADCAST: + copy_addr(&ifs->ifa.ifa_broadaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index); + break; + case IFA_LOCAL: + /* If ifa_addr is set and we get IFA_LOCAL, assume we have + * a point-to-point network. Move address to correct field. */ + if (ifs->ifa.ifa_addr) { + ifs->ifu = ifs->addr; + ifs->ifa.ifa_dstaddr = &ifs->ifu.sa; + memset(&ifs->addr, 0, sizeof(ifs->addr)); + } + copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index); + break; + case IFA_LABEL: + if (RTA_DATALEN(rta) < sizeof(ifs->name)) { + memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta)); + ifs->ifa.ifa_name = ifs->name; + } + break; + } + } + if (ifs->ifa.ifa_addr) + gen_netmask(&ifs->ifa.ifa_netmask, ifa->ifa_family, &ifs->netmask, ifa->ifa_prefixlen); + } + + if (ifs->ifa.ifa_name) { + if (!ctx->first) ctx->first = ifs; + if (ctx->last) ctx->last->ifa.ifa_next = &ifs->ifa; + ctx->last = ifs; + } else { + free(ifs); + } + return 0; +} + +int getifaddrs(struct ifaddrs **ifap) +{ + struct ifaddrs_ctx _ctx, *ctx = &_ctx; + int r; + memset(ctx, 0, sizeof *ctx); + r = __rtnetlink_enumerate(AF_UNSPEC, AF_UNSPEC, netlink_msg_to_ifaddr, ctx); + if (r == 0) *ifap = &ctx->first->ifa; + else freeifaddrs(&ctx->first->ifa); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getnameinfo.c b/vendor/modernc.org/libc/musl/src/network/getnameinfo.c new file mode 100644 index 000000000..4241e28f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getnameinfo.c @@ -0,0 +1,206 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" +#include "stdio_impl.h" + +#define PTR_MAX (64 + sizeof ".in-addr.arpa") +#define RR_PTR 12 + +static char *itoa(char *p, unsigned x) { + p += 3*sizeof(int); + *--p = 0; + do { + *--p = '0' + x % 10; + x /= 10; + } while (x); + return p; +} + +static void mkptr4(char *s, const unsigned char *ip) +{ + sprintf(s, "%d.%d.%d.%d.in-addr.arpa", + ip[3], ip[2], ip[1], ip[0]); +} + +static void mkptr6(char *s, const unsigned char *ip) +{ + static const char xdigits[] = "0123456789abcdef"; + int i; + for (i=15; i>=0; i--) { + *s++ = xdigits[ip[i]&15]; *s++ = '.'; + *s++ = xdigits[ip[i]>>4]; *s++ = '.'; + } + strcpy(s, "ip6.arpa"); +} + +static void reverse_hosts(char *buf, const unsigned char *a, unsigned scopeid, int family) +{ + char line[512], *p, *z; + unsigned char _buf[1032], atmp[16]; + struct address iplit; + //TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf); + FILE *f = fopen("/etc/hosts", "rb"); + if (!f) return; + if (family == AF_INET) { + memcpy(atmp+12, a, 4); + memcpy(atmp, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); + a = atmp; + } + while (fgets(line, sizeof line, f)) { + if ((p=strchr(line, '#'))) *p++='\n', *p=0; + + for (p=line; *p && !isspace(*p); p++); + *p++ = 0; + if (__lookup_ipliteral(&iplit, line, AF_UNSPEC)<=0) + continue; + + if (iplit.family == AF_INET) { + memcpy(iplit.addr+12, iplit.addr, 4); + memcpy(iplit.addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); + iplit.scopeid = 0; + } + + if (memcmp(a, iplit.addr, 16) || iplit.scopeid != scopeid) + continue; + + for (; *p && isspace(*p); p++); + for (z=p; *z && !isspace(*z); z++); + *z = 0; + if (z-p < 256) { + memcpy(buf, p, z-p+1); + break; + } + } + //TODO __fclose_ca(f); + fclose(f); +} + +static void reverse_services(char *buf, int port, int dgram) +{ + abort(); //TODO- + // unsigned long svport; + // char line[128], *p, *z; + // unsigned char _buf[1032]; + // FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf); + // if (!f) return; + // while (fgets(line, sizeof line, f)) { + // if ((p=strchr(line, '#'))) *p++='\n', *p=0; + + // for (p=line; *p && !isspace(*p); p++); + // if (!*p) continue; + // *p++ = 0; + // svport = strtoul(p, &z, 10); + + // if (svport != port || z==p) continue; + // if (dgram && strncmp(z, "/udp", 4)) continue; + // if (!dgram && strncmp(z, "/tcp", 4)) continue; + // if (p-line > 32) continue; + + // memcpy(buf, line, p-line); + // break; + // } + // __fclose_ca(f); +} + +static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet) +{ + abort(); //TODO- + // if (rr != RR_PTR) return 0; + // if (__dn_expand(packet, (const unsigned char *)packet + 512, + // data, c, 256) <= 0) + // *(char *)c = 0; + // return 0; + +} + +int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + char *restrict node, socklen_t nodelen, + char *restrict serv, socklen_t servlen, + int flags) +{ + char ptr[PTR_MAX]; + char buf[256], num[3*sizeof(int)+1]; + int af = sa->sa_family; + unsigned char *a; + unsigned scopeid; + + switch (af) { + case AF_INET: + a = (void *)&((struct sockaddr_in *)sa)->sin_addr; + if (sl < sizeof(struct sockaddr_in)) return EAI_FAMILY; + mkptr4(ptr, a); + scopeid = 0; + break; + case AF_INET6: + a = (void *)&((struct sockaddr_in6 *)sa)->sin6_addr; + if (sl < sizeof(struct sockaddr_in6)) return EAI_FAMILY; + if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12)) + mkptr6(ptr, a); + else + mkptr4(ptr, a+12); + scopeid = ((struct sockaddr_in6 *)sa)->sin6_scope_id; + break; + default: + return EAI_FAMILY; + } + + if (node && nodelen) { + buf[0] = 0; + if (!(flags & NI_NUMERICHOST)) { + reverse_hosts(buf, a, scopeid, af); + } + if (!*buf && !(flags & NI_NUMERICHOST)) { + abort(); //TODO- + // unsigned char query[18+PTR_MAX], reply[512]; + // int qlen = __res_mkquery(0, ptr, 1, RR_PTR, + // 0, 0, 0, query, sizeof query); + // query[3] = 0; /* don't need AD flag */ + // int rlen = __res_send(query, qlen, reply, sizeof reply); + // buf[0] = 0; + // if (rlen > 0) + // __dns_parse(reply, rlen, dns_parse_callback, buf); + } + if (!*buf) { + if (flags & NI_NAMEREQD) return EAI_NONAME; + inet_ntop(af, a, buf, sizeof buf); + if (scopeid) { + abort(); //TODO- + // char *p = 0, tmp[IF_NAMESIZE+1]; + // if (!(flags & NI_NUMERICSCOPE) && + // (IN6_IS_ADDR_LINKLOCAL(a) || + // IN6_IS_ADDR_MC_LINKLOCAL(a))) + // p = if_indextoname(scopeid, tmp+1); + // if (!p) + // p = itoa(num, scopeid); + // *--p = '%'; + // strcat(buf, p); + } + } + if (strlen(buf) >= nodelen) return EAI_OVERFLOW; + strcpy(node, buf); + } + + if (serv && servlen) { + char *p = buf; + int port = ntohs(((struct sockaddr_in *)sa)->sin_port); + buf[0] = 0; + if (!(flags & NI_NUMERICSERV)) + reverse_services(buf, port, flags & NI_DGRAM); + if (!*p) + p = itoa(num, port); + if (strlen(p) >= servlen) + return EAI_OVERFLOW; + strcpy(serv, p); + } + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getpeername.c b/vendor/modernc.org/libc/musl/src/network/getpeername.c new file mode 100644 index 000000000..6567b4519 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getpeername.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int getpeername(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) +{ + return socketcall(getpeername, fd, addr, len, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/getservbyname.c b/vendor/modernc.org/libc/musl/src/network/getservbyname.c new file mode 100644 index 000000000..dd3037678 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getservbyname.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include + +struct servent *getservbyname(const char *name, const char *prots) +{ + static struct servent se; + static char *buf[2]; + struct servent *res; + if (getservbyname_r(name, prots, &se, (void *)buf, sizeof buf, &res)) + return 0; + return &se; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getservbyname_r.c b/vendor/modernc.org/libc/musl/src/network/getservbyname_r.c new file mode 100644 index 000000000..cad6317ab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getservbyname_r.c @@ -0,0 +1,55 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" + +#define ALIGN (sizeof(struct { char a; char *b; }) - sizeof(char *)) + +int getservbyname_r(const char *name, const char *prots, + struct servent *se, char *buf, size_t buflen, struct servent **res) +{ + struct service servs[MAXSERVS]; + int cnt, proto, align; + + *res = 0; + + /* Don't treat numeric port number strings as service records. */ + char *end = ""; + strtoul(name, &end, 10); + if (!*end) return ENOENT; + + /* Align buffer */ + align = -(uintptr_t)buf & ALIGN-1; + if (buflen < 2*sizeof(char *)+align) + return ERANGE; + buf += align; + + if (!prots) proto = 0; + else if (!strcmp(prots, "tcp")) proto = IPPROTO_TCP; + else if (!strcmp(prots, "udp")) proto = IPPROTO_UDP; + else return EINVAL; + + cnt = __lookup_serv(servs, name, proto, 0, 0); + if (cnt<0) switch (cnt) { + case EAI_MEMORY: + case EAI_SYSTEM: + return ENOMEM; + default: + return ENOENT; + } + + se->s_name = (char *)name; + se->s_aliases = (void *)buf; + se->s_aliases[0] = se->s_name; + se->s_aliases[1] = 0; + se->s_port = htons(servs[0].port); + se->s_proto = servs[0].proto == IPPROTO_TCP ? "tcp" : "udp"; + + *res = se; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getservbyport.c b/vendor/modernc.org/libc/musl/src/network/getservbyport.c new file mode 100644 index 000000000..c9ecbb11c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getservbyport.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include + +struct servent *getservbyport(int port, const char *prots) +{ + static struct servent se; + static long buf[32/sizeof(long)]; + struct servent *res; + if (getservbyport_r(port, prots, &se, (void *)buf, sizeof buf, &res)) + return 0; + return &se; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getservbyport_r.c b/vendor/modernc.org/libc/musl/src/network/getservbyport_r.c new file mode 100644 index 000000000..b7f21c6b3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getservbyport_r.c @@ -0,0 +1,60 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +int getservbyport_r(int port, const char *prots, + struct servent *se, char *buf, size_t buflen, struct servent **res) +{ + int i; + struct sockaddr_in sin = { + .sin_family = AF_INET, + .sin_port = port, + }; + + if (!prots) { + int r = getservbyport_r(port, "tcp", se, buf, buflen, res); + if (r) r = getservbyport_r(port, "udp", se, buf, buflen, res); + return r; + } + *res = 0; + + /* Align buffer */ + i = (uintptr_t)buf & sizeof(char *)-1; + if (!i) i = sizeof(char *); + if (buflen < 3*sizeof(char *)-i) + return ERANGE; + buf += sizeof(char *)-i; + buflen -= sizeof(char *)-i; + + if (strcmp(prots, "tcp") && strcmp(prots, "udp")) return EINVAL; + + se->s_port = port; + se->s_proto = (char *)prots; + se->s_aliases = (void *)buf; + buf += 2*sizeof(char *); + buflen -= 2*sizeof(char *); + se->s_aliases[1] = 0; + se->s_aliases[0] = se->s_name = buf; + + switch (getnameinfo((void *)&sin, sizeof sin, 0, 0, buf, buflen, + strcmp(prots, "udp") ? 0 : NI_DGRAM)) { + case EAI_MEMORY: + case EAI_SYSTEM: + return ENOMEM; + default: + return ENOENT; + case 0: + break; + } + + /* A numeric port string is not a service record. */ + if (strtol(buf, 0, 10)==ntohs(port)) return ENOENT; + + *res = se; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/getsockname.c b/vendor/modernc.org/libc/musl/src/network/getsockname.c new file mode 100644 index 000000000..7885fc13b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getsockname.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int getsockname(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) +{ + return socketcall(getsockname, fd, addr, len, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/getsockopt.c b/vendor/modernc.org/libc/musl/src/network/getsockopt.c new file mode 100644 index 000000000..d3640d9c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/getsockopt.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include "syscall.h" + +int getsockopt(int fd, int level, int optname, void *restrict optval, socklen_t *restrict optlen) +{ + long tv32[2]; + struct timeval *tv; + + int r = __socketcall(getsockopt, fd, level, optname, optval, optlen, 0); + + if (r==-ENOPROTOOPT) switch (level) { + case SOL_SOCKET: + switch (optname) { + case SO_RCVTIMEO: + case SO_SNDTIMEO: + if (SO_RCVTIMEO == SO_RCVTIMEO_OLD) break; + if (*optlen < sizeof *tv) return __syscall_ret(-EINVAL); + if (optname==SO_RCVTIMEO) optname=SO_RCVTIMEO_OLD; + if (optname==SO_SNDTIMEO) optname=SO_SNDTIMEO_OLD; + r = __socketcall(getsockopt, fd, level, optname, + tv32, (socklen_t[]){sizeof tv32}, 0); + if (r<0) break; + tv = optval; + tv->tv_sec = tv32[0]; + tv->tv_usec = tv32[1]; + *optlen = sizeof *tv; + break; + case SO_TIMESTAMP: + case SO_TIMESTAMPNS: + if (SO_TIMESTAMP == SO_TIMESTAMP_OLD) break; + if (optname==SO_TIMESTAMP) optname=SO_TIMESTAMP_OLD; + if (optname==SO_TIMESTAMPNS) optname=SO_TIMESTAMPNS_OLD; + r = __socketcall(getsockopt, fd, level, + optname, optval, optlen, 0); + break; + } + } + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/network/h_errno.c b/vendor/modernc.org/libc/musl/src/network/h_errno.c new file mode 100644 index 000000000..4f700ceaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/h_errno.c @@ -0,0 +1,9 @@ +#include + +#undef h_errno +int h_errno; + +int *__h_errno_location(void) +{ + return &h_errno; +} diff --git a/vendor/modernc.org/libc/musl/src/network/herror.c b/vendor/modernc.org/libc/musl/src/network/herror.c new file mode 100644 index 000000000..65f25ff3f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/herror.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include + +void herror(const char *msg) +{ + fprintf(stderr, "%s%s%s", msg?msg:"", msg?": ":"", hstrerror(h_errno)); +} diff --git a/vendor/modernc.org/libc/musl/src/network/hstrerror.c b/vendor/modernc.org/libc/musl/src/network/hstrerror.c new file mode 100644 index 000000000..a4d001c53 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/hstrerror.c @@ -0,0 +1,18 @@ +#define _GNU_SOURCE +#include +#include "locale_impl.h" + +static const char msgs[] = + "Host not found\0" + "Try again\0" + "Non-recoverable error\0" + "Address not available\0" + "\0Unknown error"; + +const char *hstrerror(int ecode) +{ + const char *s; + for (s=msgs, ecode--; ecode && *s; ecode--, s++) for (; *s; s++); + if (!*s) s++; + return LCTRANS_CUR(s); +} diff --git a/vendor/modernc.org/libc/musl/src/network/htonl.c b/vendor/modernc.org/libc/musl/src/network/htonl.c new file mode 100644 index 000000000..6622d16cc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/htonl.c @@ -0,0 +1,8 @@ +#include +#include + +uint32_t htonl(uint32_t n) +{ + union { int i; char c; } u = { 1 }; + return u.c ? bswap_32(n) : n; +} diff --git a/vendor/modernc.org/libc/musl/src/network/htons.c b/vendor/modernc.org/libc/musl/src/network/htons.c new file mode 100644 index 000000000..03a3a1d59 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/htons.c @@ -0,0 +1,8 @@ +#include +#include + +uint16_t htons(uint16_t n) +{ + union { int i; char c; } u = { 1 }; + return u.c ? bswap_16(n) : n; +} diff --git a/vendor/modernc.org/libc/musl/src/network/if_freenameindex.c b/vendor/modernc.org/libc/musl/src/network/if_freenameindex.c new file mode 100644 index 000000000..89bafcc0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/if_freenameindex.c @@ -0,0 +1,7 @@ +#include +#include + +void if_freenameindex(struct if_nameindex *idx) +{ + free(idx); +} diff --git a/vendor/modernc.org/libc/musl/src/network/if_indextoname.c b/vendor/modernc.org/libc/musl/src/network/if_indextoname.c new file mode 100644 index 000000000..3b368bf0d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/if_indextoname.c @@ -0,0 +1,23 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include "syscall.h" + +char *if_indextoname(unsigned index, char *name) +{ + struct ifreq ifr; + int fd, r; + + if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0; + ifr.ifr_ifindex = index; + r = ioctl(fd, SIOCGIFNAME, &ifr); + __syscall(SYS_close, fd); + if (r < 0) { + if (errno == ENODEV) errno = ENXIO; + return 0; + } + return strncpy(name, ifr.ifr_name, IF_NAMESIZE); +} diff --git a/vendor/modernc.org/libc/musl/src/network/if_nameindex.c b/vendor/modernc.org/libc/musl/src/network/if_nameindex.c new file mode 100644 index 000000000..2deaef769 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/if_nameindex.c @@ -0,0 +1,114 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "netlink.h" + +#define IFADDRS_HASH_SIZE 64 + +struct ifnamemap { + unsigned int hash_next; + unsigned int index; + unsigned char namelen; + char name[IFNAMSIZ]; +}; + +struct ifnameindexctx { + unsigned int num, allocated, str_bytes; + struct ifnamemap *list; + unsigned int hash[IFADDRS_HASH_SIZE]; +}; + +static int netlink_msg_to_nameindex(void *pctx, struct nlmsghdr *h) +{ + struct ifnameindexctx *ctx = pctx; + struct ifnamemap *map; + struct rtattr *rta; + unsigned int i; + int index, type, namelen, bucket; + + if (h->nlmsg_type == RTM_NEWLINK) { + struct ifinfomsg *ifi = NLMSG_DATA(h); + index = ifi->ifi_index; + type = IFLA_IFNAME; + rta = NLMSG_RTA(h, sizeof(*ifi)); + } else { + struct ifaddrmsg *ifa = NLMSG_DATA(h); + index = ifa->ifa_index; + type = IFA_LABEL; + rta = NLMSG_RTA(h, sizeof(*ifa)); + } + for (; NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) { + if (rta->rta_type != type) continue; + + namelen = RTA_DATALEN(rta) - 1; + if (namelen > IFNAMSIZ) return 0; + + /* suppress duplicates */ + bucket = index % IFADDRS_HASH_SIZE; + i = ctx->hash[bucket]; + while (i) { + map = &ctx->list[i-1]; + if (map->index == index && + map->namelen == namelen && + memcmp(map->name, RTA_DATA(rta), namelen) == 0) + return 0; + i = map->hash_next; + } + + if (ctx->num >= ctx->allocated) { + size_t a = ctx->allocated ? ctx->allocated * 2 + 1 : 8; + if (a > SIZE_MAX/sizeof *map) return -1; + map = realloc(ctx->list, a * sizeof *map); + if (!map) return -1; + ctx->list = map; + ctx->allocated = a; + } + map = &ctx->list[ctx->num]; + map->index = index; + map->namelen = namelen; + memcpy(map->name, RTA_DATA(rta), namelen); + ctx->str_bytes += namelen + 1; + ctx->num++; + map->hash_next = ctx->hash[bucket]; + ctx->hash[bucket] = ctx->num; + return 0; + } + return 0; +} + +struct if_nameindex *if_nameindex() +{ + struct ifnameindexctx _ctx, *ctx = &_ctx; + struct if_nameindex *ifs = 0, *d; + struct ifnamemap *s; + char *p; + int i; + int cs; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + memset(ctx, 0, sizeof(*ctx)); + if (__rtnetlink_enumerate(AF_UNSPEC, AF_INET, netlink_msg_to_nameindex, ctx) < 0) goto err; + + ifs = malloc(sizeof(struct if_nameindex[ctx->num+1]) + ctx->str_bytes); + if (!ifs) goto err; + + p = (char*)(ifs + ctx->num + 1); + for (i = ctx->num, d = ifs, s = ctx->list; i; i--, s++, d++) { + d->if_index = s->index; + d->if_name = p; + memcpy(p, s->name, s->namelen); + p += s->namelen; + *p++ = 0; + } + d->if_index = 0; + d->if_name = 0; +err: + pthread_setcancelstate(cs, 0); + free(ctx->list); + errno = ENOBUFS; + return ifs; +} diff --git a/vendor/modernc.org/libc/musl/src/network/if_nametoindex.c b/vendor/modernc.org/libc/musl/src/network/if_nametoindex.c new file mode 100644 index 000000000..331413c68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/if_nametoindex.c @@ -0,0 +1,18 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include "syscall.h" + +unsigned if_nametoindex(const char *name) +{ + struct ifreq ifr; + int fd, r; + + if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0; + strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); + r = ioctl(fd, SIOCGIFINDEX, &ifr); + __syscall(SYS_close, fd); + return r < 0 ? 0 : ifr.ifr_ifindex; +} diff --git a/vendor/modernc.org/libc/musl/src/network/in6addr_any.c b/vendor/modernc.org/libc/musl/src/network/in6addr_any.c new file mode 100644 index 000000000..995387fae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/in6addr_any.c @@ -0,0 +1,3 @@ +#include + +const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT; diff --git a/vendor/modernc.org/libc/musl/src/network/in6addr_loopback.c b/vendor/modernc.org/libc/musl/src/network/in6addr_loopback.c new file mode 100644 index 000000000..b96005b81 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/in6addr_loopback.c @@ -0,0 +1,3 @@ +#include + +const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT; diff --git a/vendor/modernc.org/libc/musl/src/network/inet_addr.c b/vendor/modernc.org/libc/musl/src/network/inet_addr.c new file mode 100644 index 000000000..11ece3d6f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_addr.c @@ -0,0 +1,10 @@ +#include +#include +#include + +in_addr_t inet_addr(const char *p) +{ + struct in_addr a; + if (!__inet_aton(p, &a)) return -1; + return a.s_addr; +} diff --git a/vendor/modernc.org/libc/musl/src/network/inet_aton.c b/vendor/modernc.org/libc/musl/src/network/inet_aton.c new file mode 100644 index 000000000..c65f7c2c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_aton.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include + +int __inet_aton(const char *s0, struct in_addr *dest) +{ + const char *s = s0; + unsigned char *d = (void *)dest; + unsigned long a[4] = { 0 }; + char *z; + int i; + + for (i=0; i<4; i++) { + a[i] = strtoul(s, &z, 0); + if (z==s || (*z && *z != '.') || !isdigit(*s)) + return 0; + if (!*z) break; + s=z+1; + } + if (i==4) return 0; + switch (i) { + case 0: + a[1] = a[0] & 0xffffff; + a[0] >>= 24; + case 1: + a[2] = a[1] & 0xffff; + a[1] >>= 16; + case 2: + a[3] = a[2] & 0xff; + a[2] >>= 8; + } + for (i=0; i<4; i++) { + if (a[i] > 255) return 0; + d[i] = a[i]; + } + return 1; +} + +weak_alias(__inet_aton, inet_aton); diff --git a/vendor/modernc.org/libc/musl/src/network/inet_legacy.c b/vendor/modernc.org/libc/musl/src/network/inet_legacy.c new file mode 100644 index 000000000..621b47b05 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_legacy.c @@ -0,0 +1,32 @@ +#include +#include +#include + +in_addr_t inet_network(const char *p) +{ + return ntohl(inet_addr(p)); +} + +struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) +{ + if (n < 256) h |= n<<24; + else if (n < 65536) h |= n<<16; + else h |= n<<8; + return (struct in_addr){ h }; +} + +in_addr_t inet_lnaof(struct in_addr in) +{ + uint32_t h = in.s_addr; + if (h>>24 < 128) return h & 0xffffff; + if (h>>24 < 192) return h & 0xffff; + return h & 0xff; +} + +in_addr_t inet_netof(struct in_addr in) +{ + uint32_t h = in.s_addr; + if (h>>24 < 128) return h >> 24; + if (h>>24 < 192) return h >> 16; + return h >> 8; +} diff --git a/vendor/modernc.org/libc/musl/src/network/inet_ntoa.c b/vendor/modernc.org/libc/musl/src/network/inet_ntoa.c new file mode 100644 index 000000000..71411e0b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_ntoa.c @@ -0,0 +1,10 @@ +#include +#include + +char *inet_ntoa(struct in_addr in) +{ + static char buf[16]; + unsigned char *a = (void *)∈ + snprintf(buf, sizeof buf, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]); + return buf; +} diff --git a/vendor/modernc.org/libc/musl/src/network/inet_ntop.c b/vendor/modernc.org/libc/musl/src/network/inet_ntop.c new file mode 100644 index 000000000..4bfef2c55 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_ntop.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include + +const char *inet_ntop(int af, const void *restrict a0, char *restrict s, socklen_t l) +{ + const unsigned char *a = a0; + int i, j, max, best; + char buf[100]; + + switch (af) { + case AF_INET: + if (snprintf(s, l, "%d.%d.%d.%d", a[0],a[1],a[2],a[3]) < l) + return s; + break; + case AF_INET6: + if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\377\377", 12)) + snprintf(buf, sizeof buf, + "%x:%x:%x:%x:%x:%x:%x:%x", + 256*a[0]+a[1],256*a[2]+a[3], + 256*a[4]+a[5],256*a[6]+a[7], + 256*a[8]+a[9],256*a[10]+a[11], + 256*a[12]+a[13],256*a[14]+a[15]); + else + snprintf(buf, sizeof buf, + "%x:%x:%x:%x:%x:%x:%d.%d.%d.%d", + 256*a[0]+a[1],256*a[2]+a[3], + 256*a[4]+a[5],256*a[6]+a[7], + 256*a[8]+a[9],256*a[10]+a[11], + a[12],a[13],a[14],a[15]); + /* Replace longest /(^0|:)[:0]{2,}/ with "::" */ + for (i=best=0, max=2; buf[i]; i++) { + if (i && buf[i] != ':') continue; + j = strspn(buf+i, ":0"); + if (j>max) best=i, max=j; + } + if (max>3) { + buf[best] = buf[best+1] = ':'; + memmove(buf+best+2, buf+best+max, i-best-max+1); + } + if (strlen(buf) < l) { + strcpy(s, buf); + return s; + } + break; + default: + errno = EAFNOSUPPORT; + return 0; + } + errno = ENOSPC; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/inet_pton.c b/vendor/modernc.org/libc/musl/src/network/inet_pton.c new file mode 100644 index 000000000..d36c36891 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/inet_pton.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include +#include + +static int hexval(unsigned c) +{ + if (c-'0'<10) return c-'0'; + c |= 32; + if (c-'a'<6) return c-'a'+10; + return -1; +} + +int inet_pton(int af, const char *restrict s, void *restrict a0) +{ + uint16_t ip[8]; + unsigned char *a = a0; + int i, j, v, d, brk=-1, need_v4=0; + + if (af==AF_INET) { + for (i=0; i<4; i++) { + for (v=j=0; j<3 && isdigit(s[j]); j++) + v = 10*v + s[j]-'0'; + if (j==0 || (j>1 && s[0]=='0') || v>255) return 0; + a[i] = v; + if (s[j]==0 && i==3) return 1; + if (s[j]!='.') return 0; + s += j+1; + } + return 0; + } else if (af!=AF_INET6) { + errno = EAFNOSUPPORT; + return -1; + } + + if (*s==':' && *++s!=':') return 0; + + for (i=0; ; i++) { + if (s[0]==':' && brk<0) { + brk=i; + ip[i&7]=0; + if (!*++s) break; + if (i==7) return 0; + continue; + } + for (v=j=0; j<4 && (d=hexval(s[j]))>=0; j++) + v=16*v+d; + if (j==0) return 0; + ip[i&7] = v; + if (!s[j] && (brk>=0 || i==7)) break; + if (i==7) return 0; + if (s[j]!=':') { + if (s[j]!='.' || (i<6 && brk<0)) return 0; + need_v4=1; + i++; + break; + } + s += j+1; + } + if (brk>=0) { + memmove(ip+brk+7-i, ip+brk, 2*(i+1-brk)); + for (j=0; j<7-i; j++) ip[brk+j] = 0; + } + for (j=0; j<8; j++) { + *a++ = ip[j]>>8; + *a++ = ip[j]; + } + if (need_v4 && inet_pton(AF_INET, (void *)s, a-4) <= 0) return 0; + return 1; +} diff --git a/vendor/modernc.org/libc/musl/src/network/listen.c b/vendor/modernc.org/libc/musl/src/network/listen.c new file mode 100644 index 000000000..f84ad03b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/listen.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int listen(int fd, int backlog) +{ + return socketcall(listen, fd, backlog, 0, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/lookup.h b/vendor/modernc.org/libc/musl/src/network/lookup.h new file mode 100644 index 000000000..ef6627256 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/lookup.h @@ -0,0 +1,55 @@ +#ifndef LOOKUP_H +#define LOOKUP_H + +#include +#include +#include +#include +#include + +struct aibuf { + struct addrinfo ai; + union sa { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + } sa; + volatile int lock[1]; + short slot, ref; +}; + +struct address { + int family; + unsigned scopeid; + uint8_t addr[16]; + int sortkey; +}; + +struct service { + uint16_t port; + unsigned char proto, socktype; +}; + +#define MAXNS 3 + +struct resolvconf { + struct address ns[MAXNS]; + unsigned nns, attempts, ndots; + unsigned timeout; +}; + +/* The limit of 48 results is a non-sharp bound on the number of addresses + * that can fit in one 512-byte DNS packet full of v4 results and a second + * packet full of v6 results. Due to headers, the actual limit is lower. */ +#define MAXADDRS 48 +#define MAXSERVS 2 + +hidden int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int socktype, int flags); +hidden int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags); +hidden int __lookup_ipliteral(struct address buf[static 1], const char *name, int family); + +hidden int __get_resolv_conf(struct resolvconf *, char *, size_t); +hidden int __res_msend_rc(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int, const struct resolvconf *); + +hidden int __dns_parse(const unsigned char *, int, int (*)(void *, int, const void *, int, const void *), void *); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/network/lookup_ipliteral.c b/vendor/modernc.org/libc/musl/src/network/lookup_ipliteral.c new file mode 100644 index 000000000..adc2481eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/lookup_ipliteral.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" + +int __lookup_ipliteral(struct address buf[static 1], const char *name, int family) +{ + struct in_addr a4; + struct in6_addr a6; + if (__inet_aton(name, &a4) > 0) { + if (family == AF_INET6) /* wrong family */ + return EAI_NONAME; + memcpy(&buf[0].addr, &a4, sizeof a4); + buf[0].family = AF_INET; + buf[0].scopeid = 0; + return 1; + } + + char tmp[64]; + char *p = strchr(name, '%'), *z; + unsigned long long scopeid = 0; + if (p && p-name < 64) { + memcpy(tmp, name, p-name); + tmp[p-name] = 0; + name = tmp; + } + + if (inet_pton(AF_INET6, name, &a6) <= 0) + return 0; + if (family == AF_INET) /* wrong family */ + return EAI_NONAME; + + memcpy(&buf[0].addr, &a6, sizeof a6); + buf[0].family = AF_INET6; + if (p) { + if (isdigit(*++p)) scopeid = strtoull(p, &z, 10); + else z = p-1; + if (*z) { + abort(); //TODO- + // if (!IN6_IS_ADDR_LINKLOCAL(&a6) && + // !IN6_IS_ADDR_MC_LINKLOCAL(&a6)) + // return EAI_NONAME; + // scopeid = if_nametoindex(p); + // if (!scopeid) return EAI_NONAME; + } + if (scopeid > UINT_MAX) return EAI_NONAME; + } + buf[0].scopeid = scopeid; + return 1; +} diff --git a/vendor/modernc.org/libc/musl/src/network/lookup_name.c b/vendor/modernc.org/libc/musl/src/network/lookup_name.c new file mode 100644 index 000000000..9822caae5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/lookup_name.c @@ -0,0 +1,441 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" +#include "stdio_impl.h" +#include "syscall.h" + +static int is_valid_hostname(const char *host) +{ + const unsigned char *s; + //TODO if (strnlen(host, 255)-1 >= 254 || mbstowcs(0, host, 0) == -1) return 0; + if (strnlen(host, 255)-1 >= 254) return 0; + for (s=(void *)host; *s>=0x80 || *s=='.' || *s=='-' || isalnum(*s); s++); + return !*s; +} + +struct address zero_struct_address; + +static int name_from_null(struct address buf[static 2], const char *name, int family, int flags) +{ + int cnt = 0; + if (name) return 0; + if (flags & AI_PASSIVE) { + //TODO if (family != AF_INET6) + //TODO buf[cnt++] = (struct address){ .family = AF_INET }; + if (family != AF_INET6) { + struct address x = zero_struct_address; + x.family = AF_INET; + buf[cnt++] = x; + } + //TODO if (family != AF_INET) + //TODO buf[cnt++] = (struct address){ .family = AF_INET6 }; + if (family != AF_INET) { + struct address x = zero_struct_address; + x.family = AF_INET6; + buf[cnt++] = x; + } + } else { + abort(); //TODO- + // if (family != AF_INET6) + // buf[cnt++] = (struct address){ .family = AF_INET, .addr = { 127,0,0,1 } }; + // if (family != AF_INET) + // buf[cnt++] = (struct address){ .family = AF_INET6, .addr = { [15] = 1 } }; + } + return cnt; +} + +static int name_from_numeric(struct address buf[static 1], const char *name, int family) +{ + return __lookup_ipliteral(buf, name, family); +} + +static int name_from_hosts(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family) +{ + char line[512]; + size_t l = strlen(name); + int cnt = 0, badfam = 0; + unsigned char _buf[1032]; + //TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf); + FILE _f, *f = fopen("/etc/hosts", "rb"); + if (!f) switch (errno) { + case ENOENT: + case ENOTDIR: + case EACCES: + return 0; + default: + return EAI_SYSTEM; + } + while (fgets(line, sizeof line, f) && cnt < MAXADDRS) { + char *p, *z; + + if ((p=strchr(line, '#'))) *p++='\n', *p=0; + for(p=line+1; (p=strstr(p, name)) && + (!isspace(p[-1]) || !isspace(p[l])); p++); + if (!p) continue; + + /* Isolate IP address to parse */ + for (p=line; *p && !isspace(*p); p++); + *p++ = 0; + switch (name_from_numeric(buf+cnt, line, family)) { + case 1: + cnt++; + break; + case 0: + continue; + default: + badfam = EAI_NONAME; + continue; + } + + /* Extract first name as canonical name */ + for (; *p && isspace(*p); p++); + for (z=p; *z && !isspace(*z); z++); + *z = 0; + if (is_valid_hostname(p)) memcpy(canon, p, z-p+1); + } + //TODO __fclose_ca(f); + fclose(f); + return cnt ? cnt : badfam; +} + +struct dpc_ctx { + struct address *addrs; + char *canon; + int cnt; +}; + +#define RR_A 1 +#define RR_CNAME 5 +#define RR_AAAA 28 + +static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet) +{ + abort(); //TODO- + // char tmp[256]; + // struct dpc_ctx *ctx = c; + // if (ctx->cnt >= MAXADDRS) return -1; + // switch (rr) { + // case RR_A: + // if (len != 4) return -1; + // ctx->addrs[ctx->cnt].family = AF_INET; + // ctx->addrs[ctx->cnt].scopeid = 0; + // memcpy(ctx->addrs[ctx->cnt++].addr, data, 4); + // break; + // case RR_AAAA: + // if (len != 16) return -1; + // ctx->addrs[ctx->cnt].family = AF_INET6; + // ctx->addrs[ctx->cnt].scopeid = 0; + // memcpy(ctx->addrs[ctx->cnt++].addr, data, 16); + // break; + // case RR_CNAME: + // if (__dn_expand(packet, (const unsigned char *)packet + 512, + // data, tmp, sizeof tmp) > 0 && is_valid_hostname(tmp)) + // strcpy(ctx->canon, tmp); + // break; + // } + // return 0; +} + +static int name_from_dns(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, const struct resolvconf *conf) +{ + abort(); //TODO- + // unsigned char qbuf[2][280], abuf[2][512]; + // const unsigned char *qp[2] = { qbuf[0], qbuf[1] }; + // unsigned char *ap[2] = { abuf[0], abuf[1] }; + // int qlens[2], alens[2]; + // int i, nq = 0; + // struct dpc_ctx ctx = { .addrs = buf, .canon = canon }; + // static const struct { int af; int rr; } afrr[2] = { + // { .af = AF_INET6, .rr = RR_A }, + // { .af = AF_INET, .rr = RR_AAAA }, + // }; + + // for (i=0; i<2; i++) { + // if (family != afrr[i].af) { + // qlens[nq] = __res_mkquery(0, name, 1, afrr[i].rr, + // 0, 0, 0, qbuf[nq], sizeof *qbuf); + // if (qlens[nq] == -1) + // return EAI_NONAME; + // qbuf[nq][3] = 0; /* don't need AD flag */ + // nq++; + // } + // } + + // if (__res_msend_rc(nq, qp, qlens, ap, alens, sizeof *abuf, conf) < 0) + // return EAI_SYSTEM; + + // for (i=0; i=ndots or name ends in + // * a dot, which is an explicit request for global scope. */ + // for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++; + // if (dots >= conf.ndots || name[l-1]=='.') *search = 0; + + // /* Strip final dot for canon, fail if multiple trailing dots. */ + // if (name[l-1]=='.') l--; + // if (!l || name[l-1]=='.') return EAI_NONAME; + + // /* This can never happen; the caller already checked length. */ + // if (l >= 256) return EAI_NONAME; + + // /* Name with search domain appended is setup in canon[]. This both + // * provides the desired default canonical name (if the requested + // * name is not a CNAME record) and serves as a buffer for passing + // * the full requested name to name_from_dns. */ + // memcpy(canon, name, l); + // canon[l] = '.'; + + // for (p=search; *p; p=z) { + // for (; isspace(*p); p++); + // for (z=p; *z && !isspace(*z); z++); + // if (z==p) break; + // if (z-p < 256 - l - 1) { + // memcpy(canon+l+1, p, z-p); + // canon[z-p+1+l] = 0; + // int cnt = name_from_dns(buf, canon, canon, family, &conf); + // if (cnt) return cnt; + // } + // } + + // canon[l] = 0; + // return name_from_dns(buf, canon, name, family, &conf); +} + +static const struct policy { + unsigned char addr[16]; + unsigned char len, mask; + unsigned char prec, label; +} defpolicy[] = { + { "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1", 15, 0xff, 50, 0 }, + { "\0\0\0\0\0\0\0\0\0\0\xff\xff", 11, 0xff, 35, 4 }, + { "\x20\2", 1, 0xff, 30, 2 }, + { "\x20\1", 3, 0xff, 5, 5 }, + { "\xfc", 0, 0xfe, 3, 13 }, +#if 0 + /* These are deprecated and/or returned to the address + * pool, so despite the RFC, treating them as special + * is probably wrong. */ + { "", 11, 0xff, 1, 3 }, + { "\xfe\xc0", 1, 0xc0, 1, 11 }, + { "\x3f\xfe", 1, 0xff, 1, 12 }, +#endif + /* Last rule must match all addresses to stop loop. */ + { "", 0, 0, 40, 1 }, +}; + +static const struct policy *policyof(const struct in6_addr *a) +{ + int i; + for (i=0; ; i++) { + if (memcmp(a->s6_addr, defpolicy[i].addr, defpolicy[i].len)) + continue; + if ((a->s6_addr[defpolicy[i].len] & defpolicy[i].mask) + != defpolicy[i].addr[defpolicy[i].len]) + continue; + return defpolicy+i; + } +} + +static int labelof(const struct in6_addr *a) +{ + return policyof(a)->label; +} + +static int scopeof(const struct in6_addr *a) +{ + if (IN6_IS_ADDR_MULTICAST(a)) return a->s6_addr[1] & 15; + if (IN6_IS_ADDR_LINKLOCAL(a)) return 2; + if (IN6_IS_ADDR_LOOPBACK(a)) return 2; + if (IN6_IS_ADDR_SITELOCAL(a)) return 5; + return 14; +} + +static int prefixmatch(const struct in6_addr *s, const struct in6_addr *d) +{ + /* FIXME: The common prefix length should be limited to no greater + * than the nominal length of the prefix portion of the source + * address. However the definition of the source prefix length is + * not clear and thus this limiting is not yet implemented. */ + unsigned i; + for (i=0; i<128 && !((s->s6_addr[i/8]^d->s6_addr[i/8])&(128>>(i%8))); i++); + return i; +} + +#define DAS_USABLE 0x40000000 +#define DAS_MATCHINGSCOPE 0x20000000 +#define DAS_MATCHINGLABEL 0x10000000 +#define DAS_PREC_SHIFT 20 +#define DAS_SCOPE_SHIFT 16 +#define DAS_PREFIX_SHIFT 8 +#define DAS_ORDER_SHIFT 0 + +static int addrcmp(const void *_a, const void *_b) +{ + const struct address *a = _a, *b = _b; + return b->sortkey - a->sortkey; +} + +int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags) +{ + int cnt = 0, i, j; + + *canon = 0; + if (name) { + /* reject empty name and check len so it fits into temp bufs */ + size_t l = strnlen(name, 255); + if (l-1 >= 254) + return EAI_NONAME; + memcpy(canon, name, l+1); + } + + /* Procedurally, a request for v6 addresses with the v4-mapped + * flag set is like a request for unspecified family, followed + * by filtering of the results. */ + if (flags & AI_V4MAPPED) { + if (family == AF_INET6) family = AF_UNSPEC; + else flags -= AI_V4MAPPED; + } + + /* Try each backend until there's at least one result. */ + cnt = name_from_null(buf, name, family, flags); + if (!cnt) cnt = name_from_numeric(buf, name, family); + if (!cnt && !(flags & AI_NUMERICHOST)) { + cnt = name_from_hosts(buf, canon, name, family); + if (!cnt) cnt = name_from_dns_search(buf, canon, name, family); + } + if (cnt<=0) return cnt ? cnt : EAI_NONAME; + + /* Filter/transform results for v4-mapped lookup, if requested. */ + if (flags & AI_V4MAPPED) { + abort(); //TODO- + // if (!(flags & AI_ALL)) { + // /* If any v6 results exist, remove v4 results. */ + // for (i=0; ilabel; + int dprec = dpolicy->prec; + int prefixlen = 0; + int fd = socket(family, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_UDP); + if (fd >= 0) { + if (!connect(fd, da, dalen)) { + key |= DAS_USABLE; + if (!getsockname(fd, sa, &salen)) { + if (family == AF_INET) memcpy( + sa6.sin6_addr.s6_addr+12, + &sa4.sin_addr, 4); + if (dscope == scopeof(&sa6.sin6_addr)) + key |= DAS_MATCHINGSCOPE; + if (dlabel == labelof(&sa6.sin6_addr)) + key |= DAS_MATCHINGLABEL; + prefixlen = prefixmatch(&sa6.sin6_addr, + &da6.sin6_addr); + } + } + close(fd); + } + key |= dprec << DAS_PREC_SHIFT; + key |= (15-dscope) << DAS_SCOPE_SHIFT; + key |= prefixlen << DAS_PREFIX_SHIFT; + key |= (MAXADDRS-i) << DAS_ORDER_SHIFT; + buf[i].sortkey = key; + } + qsort(buf, cnt, sizeof *buf, addrcmp); + + //TODO pthread_setcancelstate(cs, 0); + + return cnt; +} diff --git a/vendor/modernc.org/libc/musl/src/network/lookup_serv.c b/vendor/modernc.org/libc/musl/src/network/lookup_serv.c new file mode 100644 index 000000000..18891715f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/lookup_serv.c @@ -0,0 +1,117 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "lookup.h" +#include "stdio_impl.h" + +int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int socktype, int flags) +{ + char line[128]; + int cnt = 0; + char *p, *z = ""; + unsigned long port = 0; + + switch (socktype) { + case SOCK_STREAM: + switch (proto) { + case 0: + proto = IPPROTO_TCP; + case IPPROTO_TCP: + break; + default: + return EAI_SERVICE; + } + break; + case SOCK_DGRAM: + switch (proto) { + case 0: + proto = IPPROTO_UDP; + case IPPROTO_UDP: + break; + default: + return EAI_SERVICE; + } + case 0: + break; + default: + if (name) return EAI_SERVICE; + buf[0].port = 0; + buf[0].proto = proto; + buf[0].socktype = socktype; + return 1; + } + + if (name) { + if (!*name) return EAI_SERVICE; + port = strtoul(name, &z, 10); + } + if (!*z) { + if (port > 65535) return EAI_SERVICE; + if (proto != IPPROTO_UDP) { + buf[cnt].port = port; + buf[cnt].socktype = SOCK_STREAM; + buf[cnt++].proto = IPPROTO_TCP; + } + if (proto != IPPROTO_TCP) { + buf[cnt].port = port; + buf[cnt].socktype = SOCK_DGRAM; + buf[cnt++].proto = IPPROTO_UDP; + } + return cnt; + } + + if (flags & AI_NUMERICSERV) return EAI_NONAME; + + size_t l = strlen(name); + + abort(); //TODO- + // unsigned char _buf[1032]; + // FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf); + // if (!f) switch (errno) { + // case ENOENT: + // case ENOTDIR: + // case EACCES: + // return EAI_SERVICE; + // default: + // return EAI_SYSTEM; + // } + + abort(); //TODO- + // while (fgets(line, sizeof line, f) && cnt < MAXSERVS) { + // if ((p=strchr(line, '#'))) *p++='\n', *p=0; + + // /* Find service name */ + // for(p=line; (p=strstr(p, name)); p++) { + // if (p>line && !isspace(p[-1])) continue; + // if (p[l] && !isspace(p[l])) continue; + // break; + // } + // if (!p) continue; + + // /* Skip past canonical name at beginning of line */ + // for (p=line; *p && !isspace(*p); p++); + + // port = strtoul(p, &z, 10); + // if (port > 65535 || z==p) continue; + // if (!strncmp(z, "/udp", 4)) { + // if (proto == IPPROTO_TCP) continue; + // buf[cnt].port = port; + // buf[cnt].socktype = SOCK_DGRAM; + // buf[cnt++].proto = IPPROTO_UDP; + // } + // if (!strncmp(z, "/tcp", 4)) { + // if (proto == IPPROTO_UDP) continue; + // buf[cnt].port = port; + // buf[cnt].socktype = SOCK_STREAM; + // buf[cnt++].proto = IPPROTO_TCP; + // } + // } + // __fclose_ca(f); + // return cnt > 0 ? cnt : EAI_SERVICE; + abort(); //TODO- +} diff --git a/vendor/modernc.org/libc/musl/src/network/netlink.c b/vendor/modernc.org/libc/musl/src/network/netlink.c new file mode 100644 index 000000000..94dba7f5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/netlink.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include "netlink.h" + +static int __netlink_enumerate(int fd, unsigned int seq, int type, int af, + int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx) +{ + struct nlmsghdr *h; + union { + uint8_t buf[8192]; + struct { + struct nlmsghdr nlh; + struct rtgenmsg g; + } req; + struct nlmsghdr reply; + } u; + int r, ret; + + memset(&u.req, 0, sizeof(u.req)); + u.req.nlh.nlmsg_len = sizeof(u.req); + u.req.nlh.nlmsg_type = type; + u.req.nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST; + u.req.nlh.nlmsg_seq = seq; + u.req.g.rtgen_family = af; + r = send(fd, &u.req, sizeof(u.req), 0); + if (r < 0) return r; + + while (1) { + r = recv(fd, u.buf, sizeof(u.buf), MSG_DONTWAIT); + if (r <= 0) return -1; + for (h = &u.reply; NLMSG_OK(h, (void*)&u.buf[r]); h = NLMSG_NEXT(h)) { + if (h->nlmsg_type == NLMSG_DONE) return 0; + if (h->nlmsg_type == NLMSG_ERROR) return -1; + ret = cb(ctx, h); + if (ret) return ret; + } + } +} + +int __rtnetlink_enumerate(int link_af, int addr_af, int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx) +{ + int fd, r; + + fd = socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE); + if (fd < 0) return -1; + r = __netlink_enumerate(fd, 1, RTM_GETLINK, link_af, cb, ctx); + if (!r) r = __netlink_enumerate(fd, 2, RTM_GETADDR, addr_af, cb, ctx); + __syscall(SYS_close,fd); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/network/netlink.h b/vendor/modernc.org/libc/musl/src/network/netlink.h new file mode 100644 index 000000000..38acb1789 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/netlink.h @@ -0,0 +1,94 @@ +#include + +/* linux/netlink.h */ + +#define NETLINK_ROUTE 0 + +struct nlmsghdr { + uint32_t nlmsg_len; + uint16_t nlmsg_type; + uint16_t nlmsg_flags; + uint32_t nlmsg_seq; + uint32_t nlmsg_pid; +}; + +#define NLM_F_REQUEST 1 +#define NLM_F_MULTI 2 +#define NLM_F_ACK 4 + +#define NLM_F_ROOT 0x100 +#define NLM_F_MATCH 0x200 +#define NLM_F_ATOMIC 0x400 +#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH) + +#define NLMSG_NOOP 0x1 +#define NLMSG_ERROR 0x2 +#define NLMSG_DONE 0x3 +#define NLMSG_OVERRUN 0x4 + +/* linux/rtnetlink.h */ + +#define RTM_NEWLINK 16 +#define RTM_GETLINK 18 +#define RTM_NEWADDR 20 +#define RTM_GETADDR 22 + +struct rtattr { + unsigned short rta_len; + unsigned short rta_type; +}; + +struct rtgenmsg { + unsigned char rtgen_family; +}; + +struct ifinfomsg { + unsigned char ifi_family; + unsigned char __ifi_pad; + unsigned short ifi_type; + int ifi_index; + unsigned ifi_flags; + unsigned ifi_change; +}; + +/* linux/if_link.h */ + +#define IFLA_ADDRESS 1 +#define IFLA_BROADCAST 2 +#define IFLA_IFNAME 3 +#define IFLA_STATS 7 + +/* linux/if_addr.h */ + +struct ifaddrmsg { + uint8_t ifa_family; + uint8_t ifa_prefixlen; + uint8_t ifa_flags; + uint8_t ifa_scope; + uint32_t ifa_index; +}; + +#define IFA_ADDRESS 1 +#define IFA_LOCAL 2 +#define IFA_LABEL 3 +#define IFA_BROADCAST 4 + +/* musl */ + +#define NETLINK_ALIGN(len) (((len)+3) & ~3) +#define NLMSG_DATA(nlh) ((void*)((char*)(nlh)+sizeof(struct nlmsghdr))) +#define NLMSG_DATALEN(nlh) ((nlh)->nlmsg_len-sizeof(struct nlmsghdr)) +#define NLMSG_DATAEND(nlh) ((char*)(nlh)+(nlh)->nlmsg_len) +#define NLMSG_NEXT(nlh) (struct nlmsghdr*)((char*)(nlh)+NETLINK_ALIGN((nlh)->nlmsg_len)) +#define NLMSG_OK(nlh,end) ((char*)(end)-(char*)(nlh) >= sizeof(struct nlmsghdr)) + +#define RTA_DATA(rta) ((void*)((char*)(rta)+sizeof(struct rtattr))) +#define RTA_DATALEN(rta) ((rta)->rta_len-sizeof(struct rtattr)) +#define RTA_DATAEND(rta) ((char*)(rta)+(rta)->rta_len) +#define RTA_NEXT(rta) (struct rtattr*)((char*)(rta)+NETLINK_ALIGN((rta)->rta_len)) +#define RTA_OK(nlh,end) ((char*)(end)-(char*)(rta) >= sizeof(struct rtattr)) + +#define NLMSG_RTA(nlh,len) ((void*)((char*)(nlh)+sizeof(struct nlmsghdr)+NETLINK_ALIGN(len))) +#define NLMSG_RTAOK(rta,nlh) RTA_OK(rta,NLMSG_DATAEND(nlh)) + +hidden int __rtnetlink_enumerate(int link_af, int addr_af, int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx); diff --git a/vendor/modernc.org/libc/musl/src/network/netname.c b/vendor/modernc.org/libc/musl/src/network/netname.c new file mode 100644 index 000000000..ba6e66568 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/netname.c @@ -0,0 +1,12 @@ +#include + +struct netent *getnetbyaddr(uint32_t net, int type) +{ + return 0; +} + +struct netent *getnetbyname(const char *name) +{ + return 0; +} + diff --git a/vendor/modernc.org/libc/musl/src/network/ns_parse.c b/vendor/modernc.org/libc/musl/src/network/ns_parse.c new file mode 100644 index 000000000..d01da47a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/ns_parse.c @@ -0,0 +1,171 @@ +#define _BSD_SOURCE +#include +#include +#include +#include + +const struct _ns_flagdata _ns_flagdata[16] = { + { 0x8000, 15 }, + { 0x7800, 11 }, + { 0x0400, 10 }, + { 0x0200, 9 }, + { 0x0100, 8 }, + { 0x0080, 7 }, + { 0x0040, 6 }, + { 0x0020, 5 }, + { 0x0010, 4 }, + { 0x000f, 0 }, + { 0x0000, 0 }, + { 0x0000, 0 }, + { 0x0000, 0 }, + { 0x0000, 0 }, + { 0x0000, 0 }, + { 0x0000, 0 }, +}; + +unsigned ns_get16(const unsigned char *cp) +{ + return cp[0]<<8 | cp[1]; +} + +unsigned long ns_get32(const unsigned char *cp) +{ + return (unsigned)cp[0]<<24 | cp[1]<<16 | cp[2]<<8 | cp[3]; +} + +void ns_put16(unsigned s, unsigned char *cp) +{ + *cp++ = s>>8; + *cp++ = s; +} + +void ns_put32(unsigned long l, unsigned char *cp) +{ + *cp++ = l>>24; + *cp++ = l>>16; + *cp++ = l>>8; + *cp++ = l; +} + +int ns_initparse(const unsigned char *msg, int msglen, ns_msg *handle) +{ + int i, r; + + handle->_msg = msg; + handle->_eom = msg + msglen; + if (msglen < (2 + ns_s_max) * NS_INT16SZ) goto bad; + NS_GET16(handle->_id, msg); + NS_GET16(handle->_flags, msg); + for (i = 0; i < ns_s_max; i++) NS_GET16(handle->_counts[i], msg); + for (i = 0; i < ns_s_max; i++) { + if (handle->_counts[i]) { + handle->_sections[i] = msg; + r = ns_skiprr(msg, handle->_eom, i, handle->_counts[i]); + if (r < 0) return -1; + msg += r; + } else { + handle->_sections[i] = NULL; + } + } + if (msg != handle->_eom) goto bad; + handle->_sect = ns_s_max; + handle->_rrnum = -1; + handle->_msg_ptr = NULL; + return 0; +bad: + errno = EMSGSIZE; + return -1; +} + +int ns_skiprr(const unsigned char *ptr, const unsigned char *eom, ns_sect section, int count) +{ + const unsigned char *p = ptr; + int r; + + while (count--) { + r = dn_skipname(p, eom); + if (r < 0) goto bad; + if (r + 2 * NS_INT16SZ > eom - p) goto bad; + p += r + 2 * NS_INT16SZ; + if (section != ns_s_qd) { + if (NS_INT32SZ + NS_INT16SZ > eom - p) goto bad; + p += NS_INT32SZ; + NS_GET16(r, p); + if (r > eom - p) goto bad; + p += r; + } + } + return p - ptr; +bad: + errno = EMSGSIZE; + return -1; +} + +int ns_parserr(ns_msg *handle, ns_sect section, int rrnum, ns_rr *rr) +{ + int r; + + if (section < 0 || section >= ns_s_max) goto bad; + if (section != handle->_sect) { + handle->_sect = section; + handle->_rrnum = 0; + handle->_msg_ptr = handle->_sections[section]; + } + if (rrnum == -1) rrnum = handle->_rrnum; + if (rrnum < 0 || rrnum >= handle->_counts[section]) goto bad; + if (rrnum < handle->_rrnum) { + handle->_rrnum = 0; + handle->_msg_ptr = handle->_sections[section]; + } + if (rrnum > handle->_rrnum) { + r = ns_skiprr(handle->_msg_ptr, handle->_eom, section, rrnum - handle->_rrnum); + if (r < 0) return -1; + handle->_msg_ptr += r; + handle->_rrnum = rrnum; + } + r = ns_name_uncompress(handle->_msg, handle->_eom, handle->_msg_ptr, rr->name, NS_MAXDNAME); + if (r < 0) return -1; + handle->_msg_ptr += r; + if (2 * NS_INT16SZ > handle->_eom - handle->_msg_ptr) goto size; + NS_GET16(rr->type, handle->_msg_ptr); + NS_GET16(rr->rr_class, handle->_msg_ptr); + if (section != ns_s_qd) { + if (NS_INT32SZ + NS_INT16SZ > handle->_eom - handle->_msg_ptr) goto size; + NS_GET32(rr->ttl, handle->_msg_ptr); + NS_GET16(rr->rdlength, handle->_msg_ptr); + if (rr->rdlength > handle->_eom - handle->_msg_ptr) goto size; + rr->rdata = handle->_msg_ptr; + handle->_msg_ptr += rr->rdlength; + } else { + rr->ttl = 0; + rr->rdlength = 0; + rr->rdata = NULL; + } + handle->_rrnum++; + if (handle->_rrnum > handle->_counts[section]) { + handle->_sect = section + 1; + if (handle->_sect == ns_s_max) { + handle->_rrnum = -1; + handle->_msg_ptr = NULL; + } else { + handle->_rrnum = 0; + } + } + return 0; +bad: + errno = ENODEV; + return -1; +size: + errno = EMSGSIZE; + return -1; +} + +int ns_name_uncompress(const unsigned char *msg, const unsigned char *eom, + const unsigned char *src, char *dst, size_t dstsiz) +{ + int r; + r = dn_expand(msg, eom, src, dst, dstsiz); + if (r < 0) errno = EMSGSIZE; + return r; +} + diff --git a/vendor/modernc.org/libc/musl/src/network/ntohl.c b/vendor/modernc.org/libc/musl/src/network/ntohl.c new file mode 100644 index 000000000..d6fce4590 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/ntohl.c @@ -0,0 +1,8 @@ +#include +#include + +uint32_t ntohl(uint32_t n) +{ + union { int i; char c; } u = { 1 }; + return u.c ? bswap_32(n) : n; +} diff --git a/vendor/modernc.org/libc/musl/src/network/ntohs.c b/vendor/modernc.org/libc/musl/src/network/ntohs.c new file mode 100644 index 000000000..745cef425 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/ntohs.c @@ -0,0 +1,8 @@ +#include +#include + +uint16_t ntohs(uint16_t n) +{ + union { int i; char c; } u = { 1 }; + return u.c ? bswap_16(n) : n; +} diff --git a/vendor/modernc.org/libc/musl/src/network/proto.c b/vendor/modernc.org/libc/musl/src/network/proto.c new file mode 100644 index 000000000..c4fd34efb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/proto.c @@ -0,0 +1,84 @@ +#include +#include + +/* do we really need all these?? */ + +static int idx; +static const unsigned char protos[] = { + "\000ip\0" + "\001icmp\0" + "\002igmp\0" + "\003ggp\0" + "\004ipencap\0" + "\005st\0" + "\006tcp\0" + "\010egp\0" + "\014pup\0" + "\021udp\0" + "\024hmp\0" + "\026xns-idp\0" + "\033rdp\0" + "\035iso-tp4\0" + "\044xtp\0" + "\045ddp\0" + "\046idpr-cmtp\0" + "\051ipv6\0" + "\053ipv6-route\0" + "\054ipv6-frag\0" + "\055idrp\0" + "\056rsvp\0" + "\057gre\0" + "\062esp\0" + "\063ah\0" + "\071skip\0" + "\072ipv6-icmp\0" + "\073ipv6-nonxt\0" + "\074ipv6-opts\0" + "\111rspf\0" + "\121vmtp\0" + "\131ospf\0" + "\136ipip\0" + "\142encap\0" + "\147pim\0" + "\377raw" +}; + +void endprotoent(void) +{ + idx = 0; +} + +void setprotoent(int stayopen) +{ + idx = 0; +} + +struct protoent *getprotoent(void) +{ + static struct protoent p; + static const char *aliases; + if (idx >= sizeof protos) return NULL; + p.p_proto = protos[idx]; + p.p_name = (char *)&protos[idx+1]; + p.p_aliases = (char **)&aliases; + idx += strlen(p.p_name) + 2; + return &p; +} + +struct protoent *getprotobyname(const char *name) +{ + struct protoent *p; + endprotoent(); + do p = getprotoent(); + while (p && strcmp(name, p->p_name)); + return p; +} + +struct protoent *getprotobynumber(int num) +{ + struct protoent *p; + endprotoent(); + do p = getprotoent(); + while (p && p->p_proto != num); + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/network/recv.c b/vendor/modernc.org/libc/musl/src/network/recv.c new file mode 100644 index 000000000..59700485b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/recv.c @@ -0,0 +1,6 @@ +#include + +ssize_t recv(int fd, void *buf, size_t len, int flags) +{ + return recvfrom(fd, buf, len, flags, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/recvfrom.c b/vendor/modernc.org/libc/musl/src/network/recvfrom.c new file mode 100644 index 000000000..61911663e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/recvfrom.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t recvfrom(int fd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict alen) +{ + return socketcall_cp(recvfrom, fd, buf, len, flags, addr, alen); +} diff --git a/vendor/modernc.org/libc/musl/src/network/recvmmsg.c b/vendor/modernc.org/libc/musl/src/network/recvmmsg.c new file mode 100644 index 000000000..2978e2f64 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/recvmmsg.c @@ -0,0 +1,39 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +hidden void __convert_scm_timestamps(struct msghdr *, socklen_t); + +int recvmmsg(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags, struct timespec *timeout) +{ +#if LONG_MAX > INT_MAX + struct mmsghdr *mh = msgvec; + unsigned int i; + for (i = vlen; i; i--, mh++) + mh->msg_hdr.__pad1 = mh->msg_hdr.__pad2 = 0; +#endif +#ifdef SYS_recvmmsg_time64 + time_t s = timeout ? timeout->tv_sec : 0; + long ns = timeout ? timeout->tv_nsec : 0; + int r = __syscall_cp(SYS_recvmmsg_time64, fd, msgvec, vlen, flags, + timeout ? ((long long[]){s, ns}) : 0); + if (SYS_recvmmsg == SYS_recvmmsg_time64 || r!=-ENOSYS) + return __syscall_ret(r); + if (vlen > IOV_MAX) vlen = IOV_MAX; + socklen_t csize[vlen]; + for (int i=0; i +#include +#include +#include +#include +#include "syscall.h" + +hidden void __convert_scm_timestamps(struct msghdr *, socklen_t); + +void __convert_scm_timestamps(struct msghdr *msg, socklen_t csize) +{ + if (SCM_TIMESTAMP == SCM_TIMESTAMP_OLD) return; + if (!msg->msg_control || !msg->msg_controllen) return; + + struct cmsghdr *cmsg, *last=0; + long tmp; + long long tvts[2]; + int type = 0; + + for (cmsg=CMSG_FIRSTHDR(msg); cmsg; cmsg=CMSG_NXTHDR(msg, cmsg)) { + if (cmsg->cmsg_level==SOL_SOCKET) switch (cmsg->cmsg_type) { + case SCM_TIMESTAMP_OLD: + if (type) break; + type = SCM_TIMESTAMP; + goto common; + case SCM_TIMESTAMPNS_OLD: + type = SCM_TIMESTAMPNS; + common: + memcpy(&tmp, CMSG_DATA(cmsg), sizeof tmp); + tvts[0] = tmp; + memcpy(&tmp, CMSG_DATA(cmsg) + sizeof tmp, sizeof tmp); + tvts[1] = tmp; + break; + } + last = cmsg; + } + if (!last || !type) return; + if (CMSG_SPACE(sizeof tvts) > csize-msg->msg_controllen) { + msg->msg_flags |= MSG_CTRUNC; + return; + } + msg->msg_controllen += CMSG_SPACE(sizeof tvts); + cmsg = CMSG_NXTHDR(msg, last); + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = type; + cmsg->cmsg_len = CMSG_LEN(sizeof tvts); + memcpy(CMSG_DATA(cmsg), &tvts, sizeof tvts); +} + +ssize_t recvmsg(int fd, struct msghdr *msg, int flags) +{ + ssize_t r; + socklen_t orig_controllen = msg->msg_controllen; +#if LONG_MAX > INT_MAX + struct msghdr h, *orig = msg; + if (msg) { + h = *msg; + h.__pad1 = h.__pad2 = 0; + msg = &h; + } +#endif + r = socketcall_cp(recvmsg, fd, msg, flags, 0, 0, 0); + if (r >= 0) __convert_scm_timestamps(msg, orig_controllen); +#if LONG_MAX > INT_MAX + if (orig) *orig = h; +#endif + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/network/res_init.c b/vendor/modernc.org/libc/musl/src/network/res_init.c new file mode 100644 index 000000000..5dba9dfc3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_init.c @@ -0,0 +1,6 @@ +#include + +int res_init() +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/res_mkquery.c b/vendor/modernc.org/libc/musl/src/network/res_mkquery.c new file mode 100644 index 000000000..33f50cb93 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_mkquery.c @@ -0,0 +1,44 @@ +#include +#include +#include + +int __res_mkquery(int op, const char *dname, int class, int type, + const unsigned char *data, int datalen, + const unsigned char *newrr, unsigned char *buf, int buflen) +{ + int id, i, j; + unsigned char q[280]; + struct timespec ts; + size_t l = strnlen(dname, 255); + int n; + + if (l && dname[l-1]=='.') l--; + n = 17+l+!!l; + if (l>253 || buflen15u || class>255u || type>255u) + return -1; + + /* Construct query template - ID will be filled later */ + memset(q, 0, n); + q[2] = op*8 + 1; + q[3] = 32; /* AD */ + q[5] = 1; + memcpy((char *)q+13, dname, l); + for (i=13; q[i]; i=j+1) { + for (j=i; q[j] && q[j] != '.'; j++); + if (j-i-1u > 62u) return -1; + q[i-1] = j-i; + } + q[i+1] = type; + q[i+3] = class; + + /* Make a reasonably unpredictable id */ + clock_gettime(CLOCK_REALTIME, &ts); + id = ts.tv_nsec + ts.tv_nsec/65536UL & 0xffff; + q[0] = id/256; + q[1] = id; + + memcpy(buf, q, n); + return n; +} + +weak_alias(__res_mkquery, res_mkquery); diff --git a/vendor/modernc.org/libc/musl/src/network/res_msend.c b/vendor/modernc.org/libc/musl/src/network/res_msend.c new file mode 100644 index 000000000..3e018009e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_msend.c @@ -0,0 +1,188 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "stdio_impl.h" +#include "syscall.h" +#include "lookup.h" + +static void cleanup(void *p) +{ + __syscall(SYS_close, (intptr_t)p); +} + +static unsigned long mtime() +{ + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + return (unsigned long)ts.tv_sec * 1000 + + ts.tv_nsec / 1000000; +} + +int __res_msend_rc(int nqueries, const unsigned char *const *queries, + const int *qlens, unsigned char *const *answers, int *alens, int asize, + const struct resolvconf *conf) +{ + int fd; + int timeout, attempts, retry_interval, servfail_retry; + union { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + } sa = {0}, ns[MAXNS] = {{0}}; + socklen_t sl = sizeof sa.sin; + int nns = 0; + int family = AF_INET; + int rlen; + int next; + int i, j; + int cs; + struct pollfd pfd; + unsigned long t0, t1, t2; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + timeout = 1000*conf->timeout; + attempts = conf->attempts; + + for (nns=0; nnsnns; nns++) { + const struct address *iplit = &conf->ns[nns]; + if (iplit->family == AF_INET) { + memcpy(&ns[nns].sin.sin_addr, iplit->addr, 4); + ns[nns].sin.sin_port = htons(53); + ns[nns].sin.sin_family = AF_INET; + } else { + sl = sizeof sa.sin6; + memcpy(&ns[nns].sin6.sin6_addr, iplit->addr, 16); + ns[nns].sin6.sin6_port = htons(53); + ns[nns].sin6.sin6_scope_id = iplit->scopeid; + ns[nns].sin6.sin6_family = family = AF_INET6; + } + } + + /* Get local address and open/bind a socket */ + sa.sin.sin_family = family; + fd = socket(family, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); + + /* Handle case where system lacks IPv6 support */ + if (fd < 0 && family == AF_INET6 && errno == EAFNOSUPPORT) { + fd = socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); + family = AF_INET; + } + if (fd < 0 || bind(fd, (void *)&sa, sl) < 0) { + if (fd >= 0) close(fd); + pthread_setcancelstate(cs, 0); + return -1; + } + + /* Past this point, there are no errors. Each individual query will + * yield either no reply (indicated by zero length) or an answer + * packet which is up to the caller to interpret. */ + + pthread_cleanup_push(cleanup, (void *)(intptr_t)fd); + pthread_setcancelstate(cs, 0); + + /* Convert any IPv4 addresses in a mixed environment to v4-mapped */ + if (family == AF_INET6) { + setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){0}, sizeof 0); + for (i=0; i= retry_interval) { + /* Query all configured namservers in parallel */ + for (i=0; i= 0) { + + /* Ignore non-identifiable packets */ + if (rlen < 4) continue; + + /* Ignore replies from addresses we didn't send to */ + for (j=0; j +#include + +int res_query(const char *name, int class, int type, unsigned char *dest, int len) +{ + unsigned char q[280]; + int ql = __res_mkquery(0, name, class, type, 0, 0, 0, q, sizeof q); + if (ql < 0) return ql; + return __res_send(q, ql, dest, len); +} + +weak_alias(res_query, res_search); diff --git a/vendor/modernc.org/libc/musl/src/network/res_querydomain.c b/vendor/modernc.org/libc/musl/src/network/res_querydomain.c new file mode 100644 index 000000000..727e6f6ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_querydomain.c @@ -0,0 +1,14 @@ +#include +#include + +int res_querydomain(const char *name, const char *domain, int class, int type, unsigned char *dest, int len) +{ + char tmp[255]; + size_t nl = strnlen(name, 255); + size_t dl = strnlen(domain, 255); + if (nl+dl+1 > 254) return -1; + memcpy(tmp, name, nl); + tmp[nl] = '.'; + memcpy(tmp+nl+1, domain, dl+1); + return res_query(tmp, class, type, dest, len); +} diff --git a/vendor/modernc.org/libc/musl/src/network/res_send.c b/vendor/modernc.org/libc/musl/src/network/res_send.c new file mode 100644 index 000000000..ee4abf1f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_send.c @@ -0,0 +1,9 @@ +#include + +int __res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen) +{ + int r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen); + return r<0 || !anslen ? -1 : anslen; +} + +weak_alias(__res_send, res_send); diff --git a/vendor/modernc.org/libc/musl/src/network/res_state.c b/vendor/modernc.org/libc/musl/src/network/res_state.c new file mode 100644 index 000000000..5c42cda5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/res_state.c @@ -0,0 +1,9 @@ +#include + +/* This is completely unused, and exists purely to satisfy broken apps. */ + +struct __res_state *__res_state() +{ + static struct __res_state res; + return &res; +} diff --git a/vendor/modernc.org/libc/musl/src/network/resolvconf.c b/vendor/modernc.org/libc/musl/src/network/resolvconf.c new file mode 100644 index 000000000..ceabf0808 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/resolvconf.c @@ -0,0 +1,94 @@ +#include "lookup.h" +#include "stdio_impl.h" +#include +#include +#include +#include +#include + +int __get_resolv_conf(struct resolvconf *conf, char *search, size_t search_sz) +{ + char line[256]; + unsigned char _buf[256]; + FILE *f, _f; + int nns = 0; + + conf->ndots = 1; + conf->timeout = 5; + conf->attempts = 2; + if (search) *search = 0; + + f = __fopen_rb_ca("/etc/resolv.conf", &_f, _buf, sizeof _buf); + if (!f) switch (errno) { + case ENOENT: + case ENOTDIR: + case EACCES: + goto no_resolv_conf; + default: + return -1; + } + + while (fgets(line, sizeof line, f)) { + char *p, *z; + if (!strchr(line, '\n') && !feof(f)) { + /* Ignore lines that get truncated rather than + * potentially misinterpreting them. */ + int c; + do c = getc(f); + while (c != '\n' && c != EOF); + continue; + } + if (!strncmp(line, "options", 7) && isspace(line[7])) { + p = strstr(line, "ndots:"); + if (p && isdigit(p[6])) { + p += 6; + unsigned long x = strtoul(p, &z, 10); + if (z != p) conf->ndots = x > 15 ? 15 : x; + } + p = strstr(line, "attempts:"); + if (p && isdigit(p[9])) { + p += 9; + unsigned long x = strtoul(p, &z, 10); + if (z != p) conf->attempts = x > 10 ? 10 : x; + } + p = strstr(line, "timeout:"); + if (p && (isdigit(p[8]) || p[8]=='.')) { + p += 8; + unsigned long x = strtoul(p, &z, 10); + if (z != p) conf->timeout = x > 60 ? 60 : x; + } + continue; + } + if (!strncmp(line, "nameserver", 10) && isspace(line[10])) { + if (nns >= MAXNS) continue; + for (p=line+11; isspace(*p); p++); + for (z=p; *z && !isspace(*z); z++); + *z=0; + if (__lookup_ipliteral(conf->ns+nns, p, AF_UNSPEC) > 0) + nns++; + continue; + } + + if (!search) continue; + if ((strncmp(line, "domain", 6) && strncmp(line, "search", 6)) + || !isspace(line[6])) + continue; + for (p=line+7; isspace(*p); p++); + size_t l = strlen(p); + /* This can never happen anyway with chosen buffer sizes. */ + if (l >= search_sz) continue; + memcpy(search, p, l+1); + } + + __fclose_ca(f); + +no_resolv_conf: + if (!nns) { + __lookup_ipliteral(conf->ns, "127.0.0.1", AF_UNSPEC); + nns = 1; + } + + conf->nns = nns; + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/send.c b/vendor/modernc.org/libc/musl/src/network/send.c new file mode 100644 index 000000000..9f1049773 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/send.c @@ -0,0 +1,6 @@ +#include + +ssize_t send(int fd, const void *buf, size_t len, int flags) +{ + return sendto(fd, buf, len, flags, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/sendmmsg.c b/vendor/modernc.org/libc/musl/src/network/sendmmsg.c new file mode 100644 index 000000000..eeae1d0a5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/sendmmsg.c @@ -0,0 +1,30 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int sendmmsg(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags) +{ +#if LONG_MAX > INT_MAX + /* Can't use the syscall directly because the kernel has the wrong + * idea for the types of msg_iovlen, msg_controllen, and cmsg_len, + * and the cmsg blocks cannot be modified in-place. */ + int i; + if (vlen > IOV_MAX) vlen = IOV_MAX; /* This matches the kernel. */ + if (!vlen) return 0; + for (i=0; i +#include +#include +#include +#include "syscall.h" + +ssize_t sendmsg(int fd, const struct msghdr *msg, int flags) +{ +#if LONG_MAX > INT_MAX + struct msghdr h; + struct cmsghdr chbuf[1024/sizeof(struct cmsghdr)+1], *c; + if (msg) { + h = *msg; + h.__pad1 = h.__pad2 = 0; + msg = &h; + if (h.msg_controllen) { + if (h.msg_controllen > 1024) { + errno = ENOMEM; + return -1; + } + memcpy(chbuf, h.msg_control, h.msg_controllen); + h.msg_control = chbuf; + for (c=CMSG_FIRSTHDR(&h); c; c=CMSG_NXTHDR(&h,c)) + c->__pad1 = 0; + } + } +#endif + return socketcall_cp(sendmsg, fd, msg, flags, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/sendto.c b/vendor/modernc.org/libc/musl/src/network/sendto.c new file mode 100644 index 000000000..c598797c7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/sendto.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen) +{ + return socketcall_cp(sendto, fd, buf, len, flags, addr, alen); +} diff --git a/vendor/modernc.org/libc/musl/src/network/serv.c b/vendor/modernc.org/libc/musl/src/network/serv.c new file mode 100644 index 000000000..41424e806 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/serv.c @@ -0,0 +1,14 @@ +#include + +void endservent(void) +{ +} + +void setservent(int stayopen) +{ +} + +struct servent *getservent(void) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/network/setsockopt.c b/vendor/modernc.org/libc/musl/src/network/setsockopt.c new file mode 100644 index 000000000..612a1947a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/setsockopt.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen) +{ + const struct timeval *tv; + time_t s; + suseconds_t us; + + int r = __socketcall(setsockopt, fd, level, optname, optval, optlen, 0); + + if (r==-ENOPROTOOPT) switch (level) { + case SOL_SOCKET: + switch (optname) { + case SO_RCVTIMEO: + case SO_SNDTIMEO: + if (SO_RCVTIMEO == SO_RCVTIMEO_OLD) break; + if (optlen < sizeof *tv) return __syscall_ret(-EINVAL); + tv = optval; + s = tv->tv_sec; + us = tv->tv_usec; + if (!IS32BIT(s)) return __syscall_ret(-ENOTSUP); + + if (optname==SO_RCVTIMEO) optname=SO_RCVTIMEO_OLD; + if (optname==SO_SNDTIMEO) optname=SO_SNDTIMEO_OLD; + + r = __socketcall(setsockopt, fd, level, optname, + ((long[]){s, CLAMP(us)}), 2*sizeof(long), 0); + break; + case SO_TIMESTAMP: + case SO_TIMESTAMPNS: + if (SO_TIMESTAMP == SO_TIMESTAMP_OLD) break; + if (optname==SO_TIMESTAMP) optname=SO_TIMESTAMP_OLD; + if (optname==SO_TIMESTAMPNS) optname=SO_TIMESTAMPNS_OLD; + r = __socketcall(setsockopt, fd, level, + optname, optval, optlen, 0); + break; + } + } + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/network/shutdown.c b/vendor/modernc.org/libc/musl/src/network/shutdown.c new file mode 100644 index 000000000..10ca21aa3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/shutdown.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int shutdown(int fd, int how) +{ + return socketcall(shutdown, fd, how, 0, 0, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/network/sockatmark.c b/vendor/modernc.org/libc/musl/src/network/sockatmark.c new file mode 100644 index 000000000..f474551aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/sockatmark.c @@ -0,0 +1,10 @@ +#include +#include + +int sockatmark(int s) +{ + int ret; + if (ioctl(s, SIOCATMARK, &ret) < 0) + return -1; + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/network/socket.c b/vendor/modernc.org/libc/musl/src/network/socket.c new file mode 100644 index 000000000..afa1a7f3e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/socket.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include "syscall.h" + +int socket(int domain, int type, int protocol) +{ + int s = __socketcall(socket, domain, type, protocol, 0, 0, 0); + if ((s==-EINVAL || s==-EPROTONOSUPPORT) + && (type&(SOCK_CLOEXEC|SOCK_NONBLOCK))) { + s = __socketcall(socket, domain, + type & ~(SOCK_CLOEXEC|SOCK_NONBLOCK), + protocol, 0, 0, 0); + if (s < 0) return __syscall_ret(s); + if (type & SOCK_CLOEXEC) + __syscall(SYS_fcntl, s, F_SETFD, FD_CLOEXEC); + if (type & SOCK_NONBLOCK) + __syscall(SYS_fcntl, s, F_SETFL, O_NONBLOCK); + } + return __syscall_ret(s); +} diff --git a/vendor/modernc.org/libc/musl/src/network/socketpair.c b/vendor/modernc.org/libc/musl/src/network/socketpair.c new file mode 100644 index 000000000..f34896211 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/network/socketpair.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include "syscall.h" + +int socketpair(int domain, int type, int protocol, int fd[2]) +{ + int r = socketcall(socketpair, domain, type, protocol, fd, 0, 0); + if (r<0 && (errno==EINVAL || errno==EPROTONOSUPPORT) + && (type&(SOCK_CLOEXEC|SOCK_NONBLOCK))) { + r = socketcall(socketpair, domain, + type & ~(SOCK_CLOEXEC|SOCK_NONBLOCK), + protocol, fd, 0, 0); + if (r < 0) return r; + if (type & SOCK_CLOEXEC) { + __syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC); + __syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC); + } + if (type & SOCK_NONBLOCK) { + __syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK); + __syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK); + } + } + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/fgetgrent.c b/vendor/modernc.org/libc/musl/src/passwd/fgetgrent.c new file mode 100644 index 000000000..7d045fd22 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/fgetgrent.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include "pwf.h" + +struct group *fgetgrent(FILE *f) +{ + static char *line, **mem; + static struct group gr; + struct group *res; + size_t size=0, nmem=0; + __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res); + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/fgetpwent.c b/vendor/modernc.org/libc/musl/src/passwd/fgetpwent.c new file mode 100644 index 000000000..fd472a07a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/fgetpwent.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include "pwf.h" + +struct passwd *fgetpwent(FILE *f) +{ + static char *line; + static struct passwd pw; + size_t size=0; + struct passwd *res; + __getpwent_a(f, &pw, &line, &size, &res); + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/fgetspent.c b/vendor/modernc.org/libc/musl/src/passwd/fgetspent.c new file mode 100644 index 000000000..47473bdb8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/fgetspent.c @@ -0,0 +1,15 @@ +#include "pwf.h" +#include + +struct spwd *fgetspent(FILE *f) +{ + static char *line; + static struct spwd sp; + size_t size = 0; + struct spwd *res = 0; + int cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + if (getline(&line, &size, f) >= 0 && __parsespent(line, &sp) >= 0) res = &sp; + pthread_setcancelstate(cs, 0); + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getgr_a.c b/vendor/modernc.org/libc/musl/src/passwd/getgr_a.c new file mode 100644 index 000000000..afeb1eceb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getgr_a.c @@ -0,0 +1,169 @@ +#include +#include +#include +#include +#include "pwf.h" +#include "nscd.h" + +static char *itoa(char *p, uint32_t x) +{ + // number of digits in a uint32_t + NUL + p += 11; + *--p = 0; + do { + *--p = '0' + x % 10; + x /= 10; + } while (x); + return p; +} + +int __getgr_a(const char *name, gid_t gid, struct group *gr, char **buf, size_t *size, char ***mem, size_t *nmem, struct group **res) +{ + FILE *f; + int rv = 0; + int cs; + + *res = 0; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + f = fopen("/etc/group", "rbe"); + if (!f) { + rv = errno; + goto done; + } + + while (!(rv = __getgrent_a(f, gr, buf, size, mem, nmem, res)) && *res) { + if (name && !strcmp(name, (*res)->gr_name) + || !name && (*res)->gr_gid == gid) { + break; + } + } + fclose(f); + + if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) { + int32_t req = name ? GETGRBYNAME : GETGRBYGID; + int32_t i; + const char *key; + int32_t groupbuf[GR_LEN] = {0}; + size_t len = 0; + size_t grlist_len = 0; + char gidbuf[11] = {0}; + int swap = 0; + char *ptr; + + if (name) { + key = name; + } else { + if (gid < 0 || gid > UINT32_MAX) { + rv = 0; + goto done; + } + key = itoa(gidbuf, gid); + } + + f = __nscd_query(req, key, groupbuf, sizeof groupbuf, &swap); + if (!f) { rv = errno; goto done; } + + if (!groupbuf[GRFOUND]) { rv = 0; goto cleanup_f; } + + if (!groupbuf[GRNAMELEN] || !groupbuf[GRPASSWDLEN]) { + rv = EIO; + goto cleanup_f; + } + + if (groupbuf[GRNAMELEN] > SIZE_MAX - groupbuf[GRPASSWDLEN]) { + rv = ENOMEM; + goto cleanup_f; + } + len = groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN]; + + for (i = 0; i < groupbuf[GRMEMCNT]; i++) { + uint32_t name_len; + if (fread(&name_len, sizeof name_len, 1, f) < 1) { + rv = ferror(f) ? errno : EIO; + goto cleanup_f; + } + if (swap) { + name_len = bswap_32(name_len); + } + if (name_len > SIZE_MAX - grlist_len + || name_len > SIZE_MAX - len) { + rv = ENOMEM; + goto cleanup_f; + } + len += name_len; + grlist_len += name_len; + } + + if (len > *size || !*buf) { + char *tmp = realloc(*buf, len); + if (!tmp) { + rv = errno; + goto cleanup_f; + } + *buf = tmp; + *size = len; + } + + if (!fread(*buf, len, 1, f)) { + rv = ferror(f) ? errno : EIO; + goto cleanup_f; + } + + if (groupbuf[GRMEMCNT] + 1 > *nmem) { + if (groupbuf[GRMEMCNT] + 1 > SIZE_MAX/sizeof(char*)) { + rv = ENOMEM; + goto cleanup_f; + } + char **tmp = realloc(*mem, (groupbuf[GRMEMCNT]+1)*sizeof(char*)); + if (!tmp) { + rv = errno; + goto cleanup_f; + } + *mem = tmp; + *nmem = groupbuf[GRMEMCNT] + 1; + } + + if (groupbuf[GRMEMCNT]) { + mem[0][0] = *buf + groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN]; + for (ptr = mem[0][0], i = 0; ptr != mem[0][0]+grlist_len; ptr++) + if (!*ptr) mem[0][++i] = ptr+1; + mem[0][i] = 0; + + if (i != groupbuf[GRMEMCNT]) { + rv = EIO; + goto cleanup_f; + } + } else { + mem[0][0] = 0; + } + + gr->gr_name = *buf; + gr->gr_passwd = gr->gr_name + groupbuf[GRNAMELEN]; + gr->gr_gid = groupbuf[GRGID]; + gr->gr_mem = *mem; + + if (gr->gr_passwd[-1] + || gr->gr_passwd[groupbuf[GRPASSWDLEN]-1]) { + rv = EIO; + goto cleanup_f; + } + + if (name && strcmp(name, gr->gr_name) + || !name && gid != gr->gr_gid) { + rv = EIO; + goto cleanup_f; + } + + *res = gr; + +cleanup_f: + fclose(f); + goto done; + } + +done: + pthread_setcancelstate(cs, 0); + if (rv) errno = rv; + return rv; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getgr_r.c b/vendor/modernc.org/libc/musl/src/passwd/getgr_r.c new file mode 100644 index 000000000..f3e8f603a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getgr_r.c @@ -0,0 +1,49 @@ +#include "pwf.h" +#include + +#define FIX(x) (gr->gr_##x = gr->gr_##x-line+buf) + +static int getgr_r(const char *name, gid_t gid, struct group *gr, char *buf, size_t size, struct group **res) +{ + char *line = 0; + size_t len = 0; + char **mem = 0; + size_t nmem = 0; + int rv = 0; + size_t i; + int cs; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + rv = __getgr_a(name, gid, gr, &line, &len, &mem, &nmem, res); + if (*res && size < len + (nmem+1)*sizeof(char *) + 32) { + *res = 0; + rv = ERANGE; + } + if (*res) { + buf += (16-(uintptr_t)buf)%16; + gr->gr_mem = (void *)buf; + buf += (nmem+1)*sizeof(char *); + memcpy(buf, line, len); + FIX(name); + FIX(passwd); + for (i=0; mem[i]; i++) + gr->gr_mem[i] = mem[i]-line+buf; + gr->gr_mem[i] = 0; + } + free(mem); + free(line); + pthread_setcancelstate(cs, 0); + if (rv) errno = rv; + return rv; +} + +int getgrnam_r(const char *name, struct group *gr, char *buf, size_t size, struct group **res) +{ + return getgr_r(name, 0, gr, buf, size, res); +} + +int getgrgid_r(gid_t gid, struct group *gr, char *buf, size_t size, struct group **res) +{ + return getgr_r(0, gid, gr, buf, size, res); +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getgrent.c b/vendor/modernc.org/libc/musl/src/passwd/getgrent.c new file mode 100644 index 000000000..835b9ab5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getgrent.c @@ -0,0 +1,39 @@ +#include "pwf.h" + +static FILE *f; +static char *line, **mem; +static struct group gr; + +void setgrent() +{ + if (f) fclose(f); + f = 0; +} + +weak_alias(setgrent, endgrent); + +struct group *getgrent() +{ + struct group *res; + size_t size=0, nmem=0; + if (!f) f = fopen("/etc/group", "rbe"); + if (!f) return 0; + __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res); + return res; +} + +struct group *getgrgid(gid_t gid) +{ + struct group *res; + size_t size=0, nmem=0; + __getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res); + return res; +} + +struct group *getgrnam(const char *name) +{ + struct group *res; + size_t size=0, nmem=0; + __getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res); + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getgrent_a.c b/vendor/modernc.org/libc/musl/src/passwd/getgrent_a.c new file mode 100644 index 000000000..7fc389d46 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getgrent_a.c @@ -0,0 +1,68 @@ +#include "pwf.h" +#include + +static unsigned atou(char **s) +{ + unsigned x; + for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0'); + return x; +} + +int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***mem, size_t *nmem, struct group **res) +{ + ssize_t l; + char *s, *mems; + size_t i; + int rv = 0; + int cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + for (;;) { + if ((l=getline(line, size, f)) < 0) { + rv = ferror(f) ? errno : 0; + free(*line); + *line = 0; + gr = 0; + goto end; + } + line[0][l-1] = 0; + + s = line[0]; + gr->gr_name = s++; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; gr->gr_passwd = s; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; gr->gr_gid = atou(&s); + if (*s != ':') continue; + + *s++ = 0; mems = s; + break; + } + + for (*nmem=!!*s; *s; s++) + if (*s==',') ++*nmem; + free(*mem); + *mem = calloc(sizeof(char *), *nmem+1); + if (!*mem) { + rv = errno; + free(*line); + *line = 0; + gr = 0; + goto end; + } + if (*mems) { + mem[0][0] = mems; + for (s=mems, i=0; *s; s++) + if (*s==',') *s++ = 0, mem[0][++i] = s; + mem[0][++i] = 0; + } else { + mem[0][0] = 0; + } + gr->gr_mem = *mem; +end: + pthread_setcancelstate(cs, 0); + *res = gr; + if(rv) errno = rv; + return rv; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getgrouplist.c b/vendor/modernc.org/libc/musl/src/passwd/getgrouplist.c new file mode 100644 index 000000000..43e518245 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getgrouplist.c @@ -0,0 +1,80 @@ +#define _GNU_SOURCE +#include "pwf.h" +#include +#include +#include +#include +#include +#include +#include +#include "nscd.h" + +int getgrouplist(const char *user, gid_t gid, gid_t *groups, int *ngroups) +{ + int rv, nlim, ret = -1; + ssize_t i, n = 1; + struct group gr; + struct group *res; + FILE *f; + int swap = 0; + int32_t resp[INITGR_LEN]; + uint32_t *nscdbuf = 0; + char *buf = 0; + char **mem = 0; + size_t nmem = 0; + size_t size; + nlim = *ngroups; + if (nlim >= 1) *groups++ = gid; + + f = __nscd_query(GETINITGR, user, resp, sizeof resp, &swap); + if (!f) goto cleanup; + if (resp[INITGRFOUND]) { + nscdbuf = calloc(resp[INITGRNGRPS], sizeof(uint32_t)); + if (!nscdbuf) goto cleanup; + if (!fread(nscdbuf, sizeof(*nscdbuf)*resp[INITGRNGRPS], 1, f)) { + if (!ferror(f)) errno = EIO; + goto cleanup; + } + if (swap) { + for (i = 0; i < resp[INITGRNGRPS]; i++) + nscdbuf[i] = bswap_32(nscdbuf[i]); + } + } + fclose(f); + + f = fopen("/etc/group", "rbe"); + if (!f && errno != ENOENT && errno != ENOTDIR) + goto cleanup; + + if (f) { + while (!(rv = __getgrent_a(f, &gr, &buf, &size, &mem, &nmem, &res)) && res) { + if (nscdbuf) + for (i=0; i < resp[INITGRNGRPS]; i++) { + if (nscdbuf[i] == gr.gr_gid) nscdbuf[i] = gid; + } + for (i=0; gr.gr_mem[i] && strcmp(user, gr.gr_mem[i]); i++); + if (!gr.gr_mem[i]) continue; + if (++n <= nlim) *groups++ = gr.gr_gid; + } + if (rv) { + errno = rv; + goto cleanup; + } + } + if (nscdbuf) { + for(i=0; i < resp[INITGRNGRPS]; i++) { + if (nscdbuf[i] != gid) + if(++n <= nlim) *groups++ = nscdbuf[i]; + } + } + + ret = n > nlim ? -1 : n; + *ngroups = n; + +cleanup: + if (f) fclose(f); + free(nscdbuf); + free(buf); + free(mem); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getpw_a.c b/vendor/modernc.org/libc/musl/src/passwd/getpw_a.c new file mode 100644 index 000000000..15a70c033 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getpw_a.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include +#include "pwf.h" +#include "nscd.h" + +static char *itoa(char *p, uint32_t x) +{ + // number of digits in a uint32_t + NUL + p += 11; + *--p = 0; + do { + *--p = '0' + x % 10; + x /= 10; + } while (x); + return p; +} + +int __getpw_a(const char *name, uid_t uid, struct passwd *pw, char **buf, size_t *size, struct passwd **res) +{ + FILE *f; + int cs; + int rv = 0; + + *res = 0; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + f = fopen("/etc/passwd", "rbe"); + if (!f) { + rv = errno; + goto done; + } + + while (!(rv = __getpwent_a(f, pw, buf, size, res)) && *res) { + if (name && !strcmp(name, (*res)->pw_name) + || !name && (*res)->pw_uid == uid) + break; + } + fclose(f); + + if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) { + int32_t req = name ? GETPWBYNAME : GETPWBYUID; + const char *key; + int32_t passwdbuf[PW_LEN] = {0}; + size_t len = 0; + char uidbuf[11] = {0}; + + if (name) { + key = name; + } else { + /* uid outside of this range can't be queried with the + * nscd interface, but might happen if uid_t ever + * happens to be a larger type (this is not true as of + * now) + */ + if(uid < 0 || uid > UINT32_MAX) { + rv = 0; + goto done; + } + key = itoa(uidbuf, uid); + } + + f = __nscd_query(req, key, passwdbuf, sizeof passwdbuf, (int[]){0}); + if (!f) { rv = errno; goto done; } + + if(!passwdbuf[PWFOUND]) { rv = 0; goto cleanup_f; } + + /* A zero length response from nscd is invalid. We ignore + * invalid responses and just report an error, rather than + * trying to do something with them. + */ + if (!passwdbuf[PWNAMELEN] || !passwdbuf[PWPASSWDLEN] + || !passwdbuf[PWGECOSLEN] || !passwdbuf[PWDIRLEN] + || !passwdbuf[PWSHELLLEN]) { + rv = EIO; + goto cleanup_f; + } + + if ((passwdbuf[PWNAMELEN]|passwdbuf[PWPASSWDLEN] + |passwdbuf[PWGECOSLEN]|passwdbuf[PWDIRLEN] + |passwdbuf[PWSHELLLEN]) >= SIZE_MAX/8) { + rv = ENOMEM; + goto cleanup_f; + } + + len = passwdbuf[PWNAMELEN] + passwdbuf[PWPASSWDLEN] + + passwdbuf[PWGECOSLEN] + passwdbuf[PWDIRLEN] + + passwdbuf[PWSHELLLEN]; + + if (len > *size || !*buf) { + char *tmp = realloc(*buf, len); + if (!tmp) { + rv = errno; + goto cleanup_f; + } + *buf = tmp; + *size = len; + } + + if (!fread(*buf, len, 1, f)) { + rv = ferror(f) ? errno : EIO; + goto cleanup_f; + } + + pw->pw_name = *buf; + pw->pw_passwd = pw->pw_name + passwdbuf[PWNAMELEN]; + pw->pw_gecos = pw->pw_passwd + passwdbuf[PWPASSWDLEN]; + pw->pw_dir = pw->pw_gecos + passwdbuf[PWGECOSLEN]; + pw->pw_shell = pw->pw_dir + passwdbuf[PWDIRLEN]; + pw->pw_uid = passwdbuf[PWUID]; + pw->pw_gid = passwdbuf[PWGID]; + + /* Don't assume that nscd made sure to null terminate strings. + * It's supposed to, but malicious nscd should be ignored + * rather than causing a crash. + */ + if (pw->pw_passwd[-1] || pw->pw_gecos[-1] || pw->pw_dir[-1] + || pw->pw_shell[passwdbuf[PWSHELLLEN]-1]) { + rv = EIO; + goto cleanup_f; + } + + if (name && strcmp(name, pw->pw_name) + || !name && uid != pw->pw_uid) { + rv = EIO; + goto cleanup_f; + } + + + *res = pw; +cleanup_f: + fclose(f); + goto done; + } + +done: + pthread_setcancelstate(cs, 0); + if (rv) errno = rv; + return rv; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getpw_r.c b/vendor/modernc.org/libc/musl/src/passwd/getpw_r.c new file mode 100644 index 000000000..0c87ab05d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getpw_r.c @@ -0,0 +1,42 @@ +#include "pwf.h" +#include + +#define FIX(x) (pw->pw_##x = pw->pw_##x-line+buf) + +static int getpw_r(const char *name, uid_t uid, struct passwd *pw, char *buf, size_t size, struct passwd **res) +{ + char *line = 0; + size_t len = 0; + int rv = 0; + int cs; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + rv = __getpw_a(name, uid, pw, &line, &len, res); + if (*res && size < len) { + *res = 0; + rv = ERANGE; + } + if (*res) { + memcpy(buf, line, len); + FIX(name); + FIX(passwd); + FIX(gecos); + FIX(dir); + FIX(shell); + } + free(line); + pthread_setcancelstate(cs, 0); + if (rv) errno = rv; + return rv; +} + +int getpwnam_r(const char *name, struct passwd *pw, char *buf, size_t size, struct passwd **res) +{ + return getpw_r(name, 0, pw, buf, size, res); +} + +int getpwuid_r(uid_t uid, struct passwd *pw, char *buf, size_t size, struct passwd **res) +{ + return getpw_r(0, uid, pw, buf, size, res); +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getpwent.c b/vendor/modernc.org/libc/musl/src/passwd/getpwent.c new file mode 100644 index 000000000..f2bd516e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getpwent.c @@ -0,0 +1,37 @@ +#include "pwf.h" + +static FILE *f; +static char *line; +static struct passwd pw; +static size_t size; + +void setpwent() +{ + if (f) fclose(f); + f = 0; +} + +weak_alias(setpwent, endpwent); + +struct passwd *getpwent() +{ + struct passwd *res; + if (!f) f = fopen("/etc/passwd", "rbe"); + if (!f) return 0; + __getpwent_a(f, &pw, &line, &size, &res); + return res; +} + +struct passwd *getpwuid(uid_t uid) +{ + struct passwd *res; + __getpw_a(0, uid, &pw, &line, &size, &res); + return res; +} + +struct passwd *getpwnam(const char *name) +{ + struct passwd *res; + __getpw_a(name, 0, &pw, &line, &size, &res); + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getpwent_a.c b/vendor/modernc.org/libc/musl/src/passwd/getpwent_a.c new file mode 100644 index 000000000..d1b4b53ce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getpwent_a.c @@ -0,0 +1,54 @@ +#include "pwf.h" +#include + +static unsigned atou(char **s) +{ + unsigned x; + for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0'); + return x; +} + +int __getpwent_a(FILE *f, struct passwd *pw, char **line, size_t *size, struct passwd **res) +{ + ssize_t l; + char *s; + int rv = 0; + int cs; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + for (;;) { + if ((l=getline(line, size, f)) < 0) { + rv = ferror(f) ? errno : 0; + free(*line); + *line = 0; + pw = 0; + break; + } + line[0][l-1] = 0; + + s = line[0]; + pw->pw_name = s++; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; pw->pw_passwd = s; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; pw->pw_uid = atou(&s); + if (*s != ':') continue; + + *s++ = 0; pw->pw_gid = atou(&s); + if (*s != ':') continue; + + *s++ = 0; pw->pw_gecos = s; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; pw->pw_dir = s; + if (!(s = strchr(s, ':'))) continue; + + *s++ = 0; pw->pw_shell = s; + break; + } + pthread_setcancelstate(cs, 0); + *res = pw; + if (rv) errno = rv; + return rv; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getspent.c b/vendor/modernc.org/libc/musl/src/passwd/getspent.c new file mode 100644 index 000000000..8574a480e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getspent.c @@ -0,0 +1,14 @@ +#include "pwf.h" + +void setspent() +{ +} + +void endspent() +{ +} + +struct spwd *getspent() +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getspnam.c b/vendor/modernc.org/libc/musl/src/passwd/getspnam.c new file mode 100644 index 000000000..709b526dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getspnam.c @@ -0,0 +1,18 @@ +#include "pwf.h" + +#define LINE_LIM 256 + +struct spwd *getspnam(const char *name) +{ + static struct spwd sp; + static char *line; + struct spwd *res; + int e; + int orig_errno = errno; + + if (!line) line = malloc(LINE_LIM); + if (!line) return 0; + e = getspnam_r(name, &sp, line, LINE_LIM, &res); + errno = e ? e : orig_errno; + return res; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/getspnam_r.c b/vendor/modernc.org/libc/musl/src/passwd/getspnam_r.c new file mode 100644 index 000000000..541e85314 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/getspnam_r.c @@ -0,0 +1,125 @@ +#include +#include +#include +#include +#include +#include "pwf.h" + +/* This implementation support Openwall-style TCB passwords in place of + * traditional shadow, if the appropriate directories and files exist. + * Thus, it is careful to avoid following symlinks or blocking on fifos + * which a malicious user might create in place of his or her TCB shadow + * file. It also avoids any allocation to prevent memory-exhaustion + * attacks via huge TCB shadow files. */ + +static long xatol(char **s) +{ + long x; + if (**s == ':' || **s == '\n') return -1; + for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0'); + return x; +} + +int __parsespent(char *s, struct spwd *sp) +{ + sp->sp_namp = s; + if (!(s = strchr(s, ':'))) return -1; + *s = 0; + + sp->sp_pwdp = ++s; + if (!(s = strchr(s, ':'))) return -1; + *s = 0; + + s++; sp->sp_lstchg = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_min = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_max = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_warn = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_inact = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_expire = xatol(&s); + if (*s != ':') return -1; + + s++; sp->sp_flag = xatol(&s); + if (*s != '\n') return -1; + return 0; +} + +static void cleanup(void *p) +{ + fclose(p); +} + +int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct spwd **res) +{ + char path[20+NAME_MAX]; + FILE *f = 0; + int rv = 0; + int fd; + size_t k, l = strlen(name); + int skip = 0; + int cs; + int orig_errno = errno; + + *res = 0; + + /* Disallow potentially-malicious user names */ + if (*name=='.' || strchr(name, '/') || !l) + return errno = EINVAL; + + /* Buffer size must at least be able to hold name, plus some.. */ + if (size < l+100) + return errno = ERANGE; + + /* Protect against truncation */ + if (snprintf(path, sizeof path, "/etc/tcb/%s/shadow", name) >= sizeof path) + return errno = EINVAL; + + fd = open(path, O_RDONLY|O_NOFOLLOW|O_NONBLOCK|O_CLOEXEC); + if (fd >= 0) { + struct stat st = { 0 }; + errno = EINVAL; + if (fstat(fd, &st) || !S_ISREG(st.st_mode) || !(f = fdopen(fd, "rb"))) { + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + close(fd); + pthread_setcancelstate(cs, 0); + return errno; + } + } else { + if (errno != ENOENT && errno != ENOTDIR) + return errno; + f = fopen("/etc/shadow", "rbe"); + if (!f) { + if (errno != ENOENT && errno != ENOTDIR) + return errno; + return 0; + } + } + + pthread_cleanup_push(cleanup, f); + while (fgets(buf, size, f) && (k=strlen(buf))>0) { + if (skip || strncmp(name, buf, l) || buf[l]!=':') { + skip = buf[k-1] != '\n'; + continue; + } + if (buf[k-1] != '\n') { + rv = ERANGE; + break; + } + + if (__parsespent(buf, sp) < 0) continue; + *res = sp; + break; + } + pthread_cleanup_pop(1); + errno = rv ? rv : orig_errno; + return rv; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/lckpwdf.c b/vendor/modernc.org/libc/musl/src/passwd/lckpwdf.c new file mode 100644 index 000000000..2feda617c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/lckpwdf.c @@ -0,0 +1,11 @@ +#include + +int lckpwdf() +{ + return 0; +} + +int ulckpwdf() +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/nscd.h b/vendor/modernc.org/libc/musl/src/passwd/nscd.h new file mode 100644 index 000000000..ae5aa8d5d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/nscd.h @@ -0,0 +1,44 @@ +#ifndef NSCD_H +#define NSCD_H + +#include + +#define NSCDVERSION 2 +#define GETPWBYNAME 0 +#define GETPWBYUID 1 +#define GETGRBYNAME 2 +#define GETGRBYGID 3 +#define GETINITGR 15 + +#define REQVERSION 0 +#define REQTYPE 1 +#define REQKEYLEN 2 +#define REQ_LEN 3 + +#define PWVERSION 0 +#define PWFOUND 1 +#define PWNAMELEN 2 +#define PWPASSWDLEN 3 +#define PWUID 4 +#define PWGID 5 +#define PWGECOSLEN 6 +#define PWDIRLEN 7 +#define PWSHELLLEN 8 +#define PW_LEN 9 + +#define GRVERSION 0 +#define GRFOUND 1 +#define GRNAMELEN 2 +#define GRPASSWDLEN 3 +#define GRGID 4 +#define GRMEMCNT 5 +#define GR_LEN 6 + +#define INITGRVERSION 0 +#define INITGRFOUND 1 +#define INITGRNGRPS 2 +#define INITGR_LEN 3 + +hidden FILE *__nscd_query(int32_t req, const char *key, int32_t *buf, size_t len, int *swap); + +#endif diff --git a/vendor/modernc.org/libc/musl/src/passwd/nscd_query.c b/vendor/modernc.org/libc/musl/src/passwd/nscd_query.c new file mode 100644 index 000000000..d38e371bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/nscd_query.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include +#include +#include +#include +#include "nscd.h" + +static const struct { + short sun_family; + char sun_path[21]; +} addr = { + AF_UNIX, + "/var/run/nscd/socket" +}; + +FILE *__nscd_query(int32_t req, const char *key, int32_t *buf, size_t len, int *swap) +{ + size_t i; + int fd; + FILE *f = 0; + int32_t req_buf[REQ_LEN] = { + NSCDVERSION, + req, + strnlen(key,LOGIN_NAME_MAX)+1 + }; + struct msghdr msg = { + .msg_iov = (struct iovec[]){ + {&req_buf, sizeof(req_buf)}, + {(char*)key, strlen(key)+1} + }, + .msg_iovlen = 2 + }; + int errno_save = errno; + + *swap = 0; +retry: + memset(buf, 0, len); + buf[0] = NSCDVERSION; + + fd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); + if (fd < 0) return NULL; + + if(!(f = fdopen(fd, "r"))) { + close(fd); + return 0; + } + + if (req_buf[2] > LOGIN_NAME_MAX) + return f; + + if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { + /* If there isn't a running nscd we simulate a "not found" + * result and the caller is responsible for calling + * fclose on the (unconnected) socket. The value of + * errno must be left unchanged in this case. */ + if (errno == EACCES || errno == ECONNREFUSED || errno == ENOENT) { + errno = errno_save; + return f; + } + goto error; + } + + if (sendmsg(fd, &msg, MSG_NOSIGNAL) < 0) + goto error; + + if (!fread(buf, len, 1, f)) { + /* If the VERSION entry mismatches nscd will disconnect. The + * most likely cause is that the endianness mismatched. So, we + * byteswap and try once more. (if we already swapped, just + * fail out) + */ + if (ferror(f)) goto error; + if (!*swap) { + fclose(f); + for (i = 0; i < sizeof(req_buf)/sizeof(req_buf[0]); i++) { + req_buf[i] = bswap_32(req_buf[i]); + } + *swap = 1; + goto retry; + } else { + errno = EIO; + goto error; + } + } + + if (*swap) { + for (i = 0; i < len/sizeof(buf[0]); i++) { + buf[i] = bswap_32(buf[i]); + } + } + + /* The first entry in every nscd response is the version number. This + * really shouldn't happen, and is evidence of some form of malformed + * response. + */ + if(buf[0] != NSCDVERSION) { + errno = EIO; + goto error; + } + + return f; +error: + fclose(f); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/putgrent.c b/vendor/modernc.org/libc/musl/src/passwd/putgrent.c new file mode 100644 index 000000000..2a8257dc9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/putgrent.c @@ -0,0 +1,17 @@ +#define _GNU_SOURCE +#include +#include + +int putgrent(const struct group *gr, FILE *f) +{ + int r; + size_t i; + flockfile(f); + if ((r = fprintf(f, "%s:%s:%u:", gr->gr_name, gr->gr_passwd, gr->gr_gid))<0) goto done; + if (gr->gr_mem) for (i=0; gr->gr_mem[i]; i++) + if ((r = fprintf(f, "%s%s", i?",":"", gr->gr_mem[i]))<0) goto done; + r = fputc('\n', f); +done: + funlockfile(f); + return r<0 ? -1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/putpwent.c b/vendor/modernc.org/libc/musl/src/passwd/putpwent.c new file mode 100644 index 000000000..312b76530 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/putpwent.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include +#include + +int putpwent(const struct passwd *pw, FILE *f) +{ + return fprintf(f, "%s:%s:%u:%u:%s:%s:%s\n", + pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, + pw->pw_gecos, pw->pw_dir, pw->pw_shell)<0 ? -1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/putspent.c b/vendor/modernc.org/libc/musl/src/passwd/putspent.c new file mode 100644 index 000000000..55c41bbc3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/putspent.c @@ -0,0 +1,13 @@ +#include +#include + +#define NUM(n) ((n) == -1 ? 0 : -1), ((n) == -1 ? 0 : (n)) +#define STR(s) ((s) ? (s) : "") + +int putspent(const struct spwd *sp, FILE *f) +{ + return fprintf(f, "%s:%s:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*lu\n", + STR(sp->sp_namp), STR(sp->sp_pwdp), NUM(sp->sp_lstchg), + NUM(sp->sp_min), NUM(sp->sp_max), NUM(sp->sp_warn), + NUM(sp->sp_inact), NUM(sp->sp_expire), NUM(sp->sp_flag)) < 0 ? -1 : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/passwd/pwf.h b/vendor/modernc.org/libc/musl/src/passwd/pwf.h new file mode 100644 index 000000000..95bb6e053 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/passwd/pwf.h @@ -0,0 +1,15 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +hidden int __getpwent_a(FILE *f, struct passwd *pw, char **line, size_t *size, struct passwd **res); +hidden int __getpw_a(const char *name, uid_t uid, struct passwd *pw, char **buf, size_t *size, struct passwd **res); +hidden int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***mem, size_t *nmem, struct group **res); +hidden int __getgr_a(const char *name, gid_t gid, struct group *gr, char **buf, size_t *size, char ***mem, size_t *nmem, struct group **res); +hidden int __parsespent(char *s, struct spwd *sp); diff --git a/vendor/modernc.org/libc/musl/src/prng/__rand48_step.c b/vendor/modernc.org/libc/musl/src/prng/__rand48_step.c new file mode 100644 index 000000000..94703d073 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/__rand48_step.c @@ -0,0 +1,14 @@ +#include +#include "rand48.h" + +uint64_t __rand48_step(unsigned short *xi, unsigned short *lc) +{ + uint64_t a, x; + x = xi[0] | xi[1]+0U<<16 | xi[2]+0ULL<<32; + a = lc[0] | lc[1]+0U<<16 | lc[2]+0ULL<<32; + x = a*x + lc[3]; + xi[0] = x; + xi[1] = x>>16; + xi[2] = x>>32; + return x & 0xffffffffffffull; +} diff --git a/vendor/modernc.org/libc/musl/src/prng/__seed48.c b/vendor/modernc.org/libc/musl/src/prng/__seed48.c new file mode 100644 index 000000000..e436b4d30 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/__seed48.c @@ -0,0 +1,3 @@ +#include "rand48.h" + +unsigned short __seed48[7] = { 0, 0, 0, 0xe66d, 0xdeec, 0x5, 0xb }; diff --git a/vendor/modernc.org/libc/musl/src/prng/drand48.c b/vendor/modernc.org/libc/musl/src/prng/drand48.c new file mode 100644 index 000000000..08283e240 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/drand48.c @@ -0,0 +1,17 @@ +#include +#include +#include "rand48.h" + +double erand48(unsigned short s[3]) +{ + union { + uint64_t u; + double f; + } x = { 0x3ff0000000000000ULL | __rand48_step(s, __seed48+3)<<4 }; + return x.f - 1.0; +} + +double drand48(void) +{ + return erand48(__seed48); +} diff --git a/vendor/modernc.org/libc/musl/src/prng/lcong48.c b/vendor/modernc.org/libc/musl/src/prng/lcong48.c new file mode 100644 index 000000000..030e51484 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/lcong48.c @@ -0,0 +1,8 @@ +#include +#include +#include "rand48.h" + +void lcong48(unsigned short p[7]) +{ + memcpy(__seed48, p, sizeof __seed48); +} diff --git a/vendor/modernc.org/libc/musl/src/prng/lrand48.c b/vendor/modernc.org/libc/musl/src/prng/lrand48.c new file mode 100644 index 000000000..07e2b7844 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/lrand48.c @@ -0,0 +1,13 @@ +#include +#include +#include "rand48.h" + +long nrand48(unsigned short s[3]) +{ + return __rand48_step(s, __seed48+3) >> 17; +} + +long lrand48(void) +{ + return nrand48(__seed48); +} diff --git a/vendor/modernc.org/libc/musl/src/prng/mrand48.c b/vendor/modernc.org/libc/musl/src/prng/mrand48.c new file mode 100644 index 000000000..f4a56e61b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/mrand48.c @@ -0,0 +1,13 @@ +#include +#include +#include "rand48.h" + +long jrand48(unsigned short s[3]) +{ + return (int32_t)(__rand48_step(s, __seed48+3) >> 16); +} + +long mrand48(void) +{ + return jrand48(__seed48); +} diff --git a/vendor/modernc.org/libc/musl/src/prng/rand.c b/vendor/modernc.org/libc/musl/src/prng/rand.c new file mode 100644 index 000000000..c000cd248 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/rand.c @@ -0,0 +1,15 @@ +#include +#include + +static uint64_t seed; + +void srand(unsigned s) +{ + seed = s-1; +} + +int rand(void) +{ + seed = 6364136223846793005ULL*seed + 1; + return seed>>33; +} diff --git a/vendor/modernc.org/libc/musl/src/prng/rand48.h b/vendor/modernc.org/libc/musl/src/prng/rand48.h new file mode 100644 index 000000000..55cbec1c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/rand48.h @@ -0,0 +1,5 @@ +#include +#include + +hidden uint64_t __rand48_step(unsigned short *xi, unsigned short *lc); +extern hidden unsigned short __seed48[7]; diff --git a/vendor/modernc.org/libc/musl/src/prng/rand_r.c b/vendor/modernc.org/libc/musl/src/prng/rand_r.c new file mode 100644 index 000000000..638614c86 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/rand_r.c @@ -0,0 +1,15 @@ +#include + +static unsigned temper(unsigned x) +{ + x ^= x>>11; + x ^= x<<7 & 0x9D2C5680; + x ^= x<<15 & 0xEFC60000; + x ^= x>>18; + return x; +} + +int rand_r(unsigned *seed) +{ + return temper(*seed = *seed * 1103515245 + 12345)/2; +} diff --git a/vendor/modernc.org/libc/musl/src/prng/random.c b/vendor/modernc.org/libc/musl/src/prng/random.c new file mode 100644 index 000000000..6df601e0a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/random.c @@ -0,0 +1,124 @@ +#include +#include +#include "lock.h" + +/* +this code uses the same lagged fibonacci generator as the +original bsd random implementation except for the seeding +which was broken in the original +*/ + +static uint32_t init[] = { +0x00000000,0x5851f42d,0xc0b18ccf,0xcbb5f646, +0xc7033129,0x30705b04,0x20fd5db4,0x9a8b7f78, +0x502959d8,0xab894868,0x6c0356a7,0x88cdb7ff, +0xb477d43f,0x70a3a52b,0xa8e4baf1,0xfd8341fc, +0x8ae16fd9,0x742d2f7a,0x0d1f0796,0x76035e09, +0x40f7702c,0x6fa72ca5,0xaaa84157,0x58a0df74, +0xc74a0364,0xae533cc4,0x04185faf,0x6de3b115, +0x0cab8628,0xf043bfa4,0x398150e9,0x37521657}; + +static int n = 31; +static int i = 3; +static int j = 0; +static uint32_t *x = init+1; + +// static volatile int lock[1]; +static void *lock; // *sync.Mutec + +static uint32_t lcg31(uint32_t x) { + return (1103515245*x + 12345) & 0x7fffffff; +} + +static uint64_t lcg64(uint64_t x) { + return 6364136223846793005ull*x + 1; +} + +static void *savestate() { + x[-1] = (n<<16)|(i<<8)|j; + return x-1; +} + +static void loadstate(uint32_t *state) { + x = state+1; + n = x[-1]>>16; + i = (x[-1]>>8)&0xff; + j = x[-1]&0xff; +} + +static void __srandom(unsigned seed) { + int k; + uint64_t s = seed; + + if (n == 0) { + x[0] = s; + return; + } + i = n == 31 || n == 7 ? 3 : 1; + j = 0; + for (k = 0; k < n; k++) { + s = lcg64(s); + x[k] = s>>32; + } + /* make sure x contains at least one odd number */ + x[0] |= 1; +} + +void srandom(unsigned seed) { + LOCK(lock); + __srandom(seed); + UNLOCK(lock); +} + +char *initstate(unsigned seed, char *state, size_t size) { + void *old; + + if (size < 8) + return 0; + LOCK(lock); + old = savestate(); + if (size < 32) + n = 0; + else if (size < 64) + n = 7; + else if (size < 128) + n = 15; + else if (size < 256) + n = 31; + else + n = 63; + x = (uint32_t*)state + 1; + __srandom(seed); + savestate(); + UNLOCK(lock); + return old; +} + +char *setstate(char *state) { + void *old; + + LOCK(lock); + old = savestate(); + loadstate((uint32_t*)state); + UNLOCK(lock); + return old; +} + +long random(void) { + long k; + + LOCK(lock); + if (n == 0) { + k = x[0] = lcg31(x[0]); + goto end; + } + x[i] += x[j]; + k = x[i]>>1; + if (++i == n) + i = 0; + if (++j == n) + j = 0; +end: + UNLOCK(lock); + return k; +} diff --git a/vendor/modernc.org/libc/musl/src/prng/seed48.c b/vendor/modernc.org/libc/musl/src/prng/seed48.c new file mode 100644 index 000000000..bce7b339f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/seed48.c @@ -0,0 +1,11 @@ +#include +#include +#include "rand48.h" + +unsigned short *seed48(unsigned short *s) +{ + static unsigned short p[3]; + memcpy(p, __seed48, sizeof p); + memcpy(__seed48, s, sizeof p); + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/prng/srand48.c b/vendor/modernc.org/libc/musl/src/prng/srand48.c new file mode 100644 index 000000000..0a56f6a07 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/prng/srand48.c @@ -0,0 +1,6 @@ +#include + +void srand48(long seed) +{ + seed48((unsigned short [3]){ 0x330e, seed, seed>>16 }); +} diff --git a/vendor/modernc.org/libc/musl/src/process/execl.c b/vendor/modernc.org/libc/musl/src/process/execl.c new file mode 100644 index 000000000..5ee5c81e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/execl.c @@ -0,0 +1,22 @@ +#include +#include + +int execl(const char *path, const char *argv0, ...) +{ + int argc; + va_list ap; + va_start(ap, argv0); + for (argc=1; va_arg(ap, const char *); argc++); + va_end(ap); + { + int i; + char *argv[argc+1]; + va_start(ap, argv0); + argv[0] = (char *)argv0; + for (i=1; i +#include + +int execle(const char *path, const char *argv0, ...) +{ + int argc; + va_list ap; + va_start(ap, argv0); + for (argc=1; va_arg(ap, const char *); argc++); + va_end(ap); + { + int i; + char *argv[argc+1]; + char **envp; + va_start(ap, argv0); + argv[0] = (char *)argv0; + for (i=1; i<=argc; i++) + argv[i] = va_arg(ap, char *); + envp = va_arg(ap, char **); + va_end(ap); + return execve(path, argv, envp); + } +} diff --git a/vendor/modernc.org/libc/musl/src/process/execlp.c b/vendor/modernc.org/libc/musl/src/process/execlp.c new file mode 100644 index 000000000..5eed886e7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/execlp.c @@ -0,0 +1,22 @@ +#include +#include + +int execlp(const char *file, const char *argv0, ...) +{ + int argc; + va_list ap; + va_start(ap, argv0); + for (argc=1; va_arg(ap, const char *); argc++); + va_end(ap); + { + int i; + char *argv[argc+1]; + va_start(ap, argv0); + argv[0] = (char *)argv0; + for (i=1; i + +extern char **__environ; + +int execv(const char *path, char *const argv[]) +{ + return execve(path, argv, __environ); +} diff --git a/vendor/modernc.org/libc/musl/src/process/execve.c b/vendor/modernc.org/libc/musl/src/process/execve.c new file mode 100644 index 000000000..70286a173 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/execve.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" + +int execve(const char *path, char *const argv[], char *const envp[]) +{ + /* do we need to use environ if envp is null? */ + return syscall(SYS_execve, path, argv, envp); +} diff --git a/vendor/modernc.org/libc/musl/src/process/execvp.c b/vendor/modernc.org/libc/musl/src/process/execvp.c new file mode 100644 index 000000000..ef3b9dd59 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/execvp.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include + +extern char **__environ; + +int __execvpe(const char *file, char *const argv[], char *const envp[]) +{ + const char *p, *z, *path = getenv("PATH"); + size_t l, k; + int seen_eacces = 0; + + errno = ENOENT; + if (!*file) return -1; + + if (strchr(file, '/')) + return execve(file, argv, envp); + + if (!path) path = "/usr/local/bin:/bin:/usr/bin"; + k = strnlen(file, NAME_MAX+1); + if (k > NAME_MAX) { + errno = ENAMETOOLONG; + return -1; + } + l = strnlen(path, PATH_MAX-1)+1; + + for(p=path; ; p=z) { + char b[l+k+1]; + z = __strchrnul(p, ':'); + if (z-p >= l) { + if (!*z++) break; + continue; + } + memcpy(b, p, z-p); + b[z-p] = '/'; + memcpy(b+(z-p)+(z>p), file, k+1); + execve(b, argv, envp); + switch (errno) { + case EACCES: + seen_eacces = 1; + case ENOENT: + case ENOTDIR: + break; + default: + return -1; + } + if (!*z++) break; + } + if (seen_eacces) errno = EACCES; + return -1; +} + +int execvp(const char *file, char *const argv[]) +{ + return __execvpe(file, argv, __environ); +} + +weak_alias(__execvpe, execvpe); diff --git a/vendor/modernc.org/libc/musl/src/process/fdop.h b/vendor/modernc.org/libc/musl/src/process/fdop.h new file mode 100644 index 000000000..5adf14438 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/fdop.h @@ -0,0 +1,12 @@ +#define FDOP_CLOSE 1 +#define FDOP_DUP2 2 +#define FDOP_OPEN 3 +#define FDOP_CHDIR 4 +#define FDOP_FCHDIR 5 + +struct fdop { + struct fdop *next, *prev; + int cmd, fd, srcfd, oflag; + mode_t mode; + char path[]; +}; diff --git a/vendor/modernc.org/libc/musl/src/process/fexecve.c b/vendor/modernc.org/libc/musl/src/process/fexecve.c new file mode 100644 index 000000000..554c1981b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/fexecve.c @@ -0,0 +1,16 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int fexecve(int fd, char *const argv[], char *const envp[]) +{ + int r = __syscall(SYS_execveat, fd, "", argv, envp, AT_EMPTY_PATH); + if (r != -ENOSYS) return __syscall_ret(r); + char buf[15 + 3*sizeof(int)]; + __procfdname(buf, fd); + execve(buf, argv, envp); + if (errno == ENOENT) errno = EBADF; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/process/fork.c b/vendor/modernc.org/libc/musl/src/process/fork.c new file mode 100644 index 000000000..7e984ff8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/fork.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include "syscall.h" +#include "libc.h" +#include "pthread_impl.h" + +static void dummy(int x) +{ +} + +weak_alias(dummy, __fork_handler); + +pid_t fork(void) +{ + pid_t ret; + sigset_t set; + __fork_handler(-1); + __block_all_sigs(&set); +#ifdef SYS_fork + ret = __syscall(SYS_fork); +#else + ret = __syscall(SYS_clone, SIGCHLD, 0); +#endif + if (!ret) { + pthread_t self = __pthread_self(); + self->tid = __syscall(SYS_gettid); + self->robust_list.off = 0; + self->robust_list.pending = 0; + self->next = self->prev = self; + __thread_list_lock = 0; + libc.threads_minus_1 = 0; + if (libc.need_locks) libc.need_locks = -1; + } + __restore_sigs(&set); + __fork_handler(!ret); + return __syscall_ret(ret); +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn.c new file mode 100644 index 000000000..29652197c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn.c @@ -0,0 +1,204 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "pthread_impl.h" +#include "fdop.h" + +struct args { + int p[2]; + sigset_t oldmask; + const char *path; + const posix_spawn_file_actions_t *fa; + const posix_spawnattr_t *restrict attr; + char *const *argv, *const *envp; +}; + +static int __sys_dup2(int old, int new) +{ +#ifdef SYS_dup2 + return __syscall(SYS_dup2, old, new); +#else + return __syscall(SYS_dup3, old, new, 0); +#endif +} + +static int child(void *args_vp) +{ + int i, ret; + struct sigaction sa = {0}; + struct args *args = args_vp; + int p = args->p[1]; + const posix_spawn_file_actions_t *fa = args->fa; + const posix_spawnattr_t *restrict attr = args->attr; + sigset_t hset; + + close(args->p[0]); + + /* All signal dispositions must be either SIG_DFL or SIG_IGN + * before signals are unblocked. Otherwise a signal handler + * from the parent might get run in the child while sharing + * memory, with unpredictable and dangerous results. To + * reduce overhead, sigaction has tracked for us which signals + * potentially have a signal handler. */ + __get_handler_set(&hset); + for (i=1; i<_NSIG; i++) { + if ((attr->__flags & POSIX_SPAWN_SETSIGDEF) + && sigismember(&attr->__def, i)) { + sa.sa_handler = SIG_DFL; + } else if (sigismember(&hset, i)) { + if (i-32<3U) { + sa.sa_handler = SIG_IGN; + } else { + __libc_sigaction(i, 0, &sa); + if (sa.sa_handler==SIG_IGN) continue; + sa.sa_handler = SIG_DFL; + } + } else { + continue; + } + __libc_sigaction(i, &sa, 0); + } + + if (attr->__flags & POSIX_SPAWN_SETSID) + if ((ret=__syscall(SYS_setsid)) < 0) + goto fail; + + if (attr->__flags & POSIX_SPAWN_SETPGROUP) + if ((ret=__syscall(SYS_setpgid, 0, attr->__pgrp))) + goto fail; + + /* Use syscalls directly because the library functions attempt + * to do a multi-threaded synchronized id-change, which would + * trash the parent's state. */ + if (attr->__flags & POSIX_SPAWN_RESETIDS) + if ((ret=__syscall(SYS_setgid, __syscall(SYS_getgid))) || + (ret=__syscall(SYS_setuid, __syscall(SYS_getuid))) ) + goto fail; + + if (fa && fa->__actions) { + struct fdop *op; + int fd; + for (op = fa->__actions; op->next; op = op->next); + for (; op; op = op->prev) { + /* It's possible that a file operation would clobber + * the pipe fd used for synchronizing with the + * parent. To avoid that, we dup the pipe onto + * an unoccupied fd. */ + if (op->fd == p) { + ret = __syscall(SYS_dup, p); + if (ret < 0) goto fail; + __syscall(SYS_close, p); + p = ret; + } + switch(op->cmd) { + case FDOP_CLOSE: + __syscall(SYS_close, op->fd); + break; + case FDOP_DUP2: + fd = op->srcfd; + if (fd == p) { + ret = -EBADF; + goto fail; + } + if (fd != op->fd) { + if ((ret=__sys_dup2(fd, op->fd))<0) + goto fail; + } else { + ret = __syscall(SYS_fcntl, fd, F_GETFD); + ret = __syscall(SYS_fcntl, fd, F_SETFD, + ret & ~FD_CLOEXEC); + if (ret<0) + goto fail; + } + break; + case FDOP_OPEN: + fd = __sys_open(op->path, op->oflag, op->mode); + if ((ret=fd) < 0) goto fail; + if (fd != op->fd) { + if ((ret=__sys_dup2(fd, op->fd))<0) + goto fail; + __syscall(SYS_close, fd); + } + break; + case FDOP_CHDIR: + ret = __syscall(SYS_chdir, op->path); + if (ret<0) goto fail; + break; + case FDOP_FCHDIR: + ret = __syscall(SYS_fchdir, op->fd); + if (ret<0) goto fail; + break; + } + } + } + + /* Close-on-exec flag may have been lost if we moved the pipe + * to a different fd. We don't use F_DUPFD_CLOEXEC above because + * it would fail on older kernels and atomicity is not needed -- + * in this process there are no threads or signal handlers. */ + __syscall(SYS_fcntl, p, F_SETFD, FD_CLOEXEC); + + pthread_sigmask(SIG_SETMASK, (attr->__flags & POSIX_SPAWN_SETSIGMASK) + ? &attr->__mask : &args->oldmask, 0); + + int (*exec)(const char *, char *const *, char *const *) = + attr->__fn ? (int (*)())attr->__fn : execve; + + exec(args->path, args->argv, args->envp); + ret = -errno; + +fail: + /* Since sizeof errno < PIPE_BUF, the write is atomic. */ + ret = -ret; + if (ret) while (__syscall(SYS_write, p, &ret, sizeof ret) < 0); + _exit(127); +} + + +int posix_spawn(pid_t *restrict res, const char *restrict path, + const posix_spawn_file_actions_t *fa, + const posix_spawnattr_t *restrict attr, + char *const argv[restrict], char *const envp[restrict]) +{ + pid_t pid; + char stack[1024+PATH_MAX]; + int ec=0, cs; + struct args args; + + if (pipe2(args.p, O_CLOEXEC)) + return errno; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + args.path = path; + args.fa = fa; + args.attr = attr ? attr : &(const posix_spawnattr_t){0}; + args.argv = argv; + args.envp = envp; + pthread_sigmask(SIG_BLOCK, SIGALL_SET, &args.oldmask); + + pid = __clone(child, stack+sizeof stack, + CLONE_VM|CLONE_VFORK|SIGCHLD, &args); + close(args.p[1]); + + if (pid > 0) { + if (read(args.p[0], &ec, sizeof ec) != sizeof ec) ec = 0; + else waitpid(pid, &(int){0}, 0); + } else { + ec = -pid; + } + + close(args.p[0]); + + if (!ec && res) *res = pid; + + pthread_sigmask(SIG_SETMASK, &args.oldmask, 0); + pthread_setcancelstate(cs, 0); + + return ec; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addchdir.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addchdir.c new file mode 100644 index 000000000..7f2590ae4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addchdir.c @@ -0,0 +1,18 @@ +#include +#include +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *restrict fa, const char *restrict path) +{ + struct fdop *op = malloc(sizeof *op + strlen(path) + 1); + if (!op) return ENOMEM; + op->cmd = FDOP_CHDIR; + op->fd = -1; + strcpy(op->path, path); + if ((op->next = fa->__actions)) op->next->prev = op; + op->prev = 0; + fa->__actions = op; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addclose.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addclose.c new file mode 100644 index 000000000..cdda59799 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addclose.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *fa, int fd) +{ + struct fdop *op = malloc(sizeof *op); + if (!op) return ENOMEM; + op->cmd = FDOP_CLOSE; + op->fd = fd; + if ((op->next = fa->__actions)) op->next->prev = op; + op->prev = 0; + fa->__actions = op; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_adddup2.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_adddup2.c new file mode 100644 index 000000000..0367498fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_adddup2.c @@ -0,0 +1,17 @@ +#include +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *fa, int srcfd, int fd) +{ + struct fdop *op = malloc(sizeof *op); + if (!op) return ENOMEM; + op->cmd = FDOP_DUP2; + op->srcfd = srcfd; + op->fd = fd; + if ((op->next = fa->__actions)) op->next->prev = op; + op->prev = 0; + fa->__actions = op; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addfchdir.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addfchdir.c new file mode 100644 index 000000000..436c683d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addfchdir.c @@ -0,0 +1,17 @@ +#include +#include +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *fa, int fd) +{ + struct fdop *op = malloc(sizeof *op); + if (!op) return ENOMEM; + op->cmd = FDOP_FCHDIR; + op->fd = fd; + if ((op->next = fa->__actions)) op->next->prev = op; + op->prev = 0; + fa->__actions = op; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addopen.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addopen.c new file mode 100644 index 000000000..368922c76 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_addopen.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict fa, int fd, const char *restrict path, int flags, mode_t mode) +{ + struct fdop *op = malloc(sizeof *op + strlen(path) + 1); + if (!op) return ENOMEM; + op->cmd = FDOP_OPEN; + op->fd = fd; + op->oflag = flags; + op->mode = mode; + strcpy(op->path, path); + if ((op->next = fa->__actions)) op->next->prev = op; + op->prev = 0; + fa->__actions = op; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_destroy.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_destroy.c new file mode 100644 index 000000000..3251babb5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_destroy.c @@ -0,0 +1,14 @@ +#include +#include +#include "fdop.h" + +int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *fa) +{ + struct fdop *op = fa->__actions, *next; + while (op) { + next = op->next; + free(op); + op = next; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_init.c b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_init.c new file mode 100644 index 000000000..89d5e1278 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawn_file_actions_init.c @@ -0,0 +1,7 @@ +#include + +int posix_spawn_file_actions_init(posix_spawn_file_actions_t *fa) +{ + fa->__actions = 0; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_destroy.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_destroy.c new file mode 100644 index 000000000..fc714a1b2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_destroy.c @@ -0,0 +1,6 @@ +#include + +int posix_spawnattr_destroy(posix_spawnattr_t *attr) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getflags.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getflags.c new file mode 100644 index 000000000..aa635ddaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getflags.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_getflags(const posix_spawnattr_t *restrict attr, short *restrict flags) +{ + *flags = attr->__flags; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getpgroup.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getpgroup.c new file mode 100644 index 000000000..0480527d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getpgroup.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict attr, pid_t *restrict pgrp) +{ + *pgrp = attr->__pgrp; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigdefault.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigdefault.c new file mode 100644 index 000000000..a49050aa4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigdefault.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict attr, sigset_t *restrict def) +{ + *def = attr->__def; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigmask.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigmask.c new file mode 100644 index 000000000..f60ad7f37 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_getsigmask.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict attr, sigset_t *restrict mask) +{ + *mask = attr->__mask; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_init.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_init.c new file mode 100644 index 000000000..0dcd868f3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_init.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_init(posix_spawnattr_t *attr) +{ + *attr = (posix_spawnattr_t){ 0 }; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_sched.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_sched.c new file mode 100644 index 000000000..3143635ba --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_sched.c @@ -0,0 +1,25 @@ +#include +#include +#include + +int posix_spawnattr_getschedparam(const posix_spawnattr_t *restrict attr, + struct sched_param *restrict schedparam) +{ + return ENOSYS; +} + +int posix_spawnattr_setschedparam(posix_spawnattr_t *restrict attr, + const struct sched_param *restrict schedparam) +{ + return ENOSYS; +} + +int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *restrict attr, int *restrict policy) +{ + return ENOSYS; +} + +int posix_spawnattr_setschedpolicy(posix_spawnattr_t *attr, int policy) +{ + return ENOSYS; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setflags.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setflags.c new file mode 100644 index 000000000..687809921 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setflags.c @@ -0,0 +1,18 @@ +#include +#include + +int posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags) +{ + const unsigned all_flags = + POSIX_SPAWN_RESETIDS | + POSIX_SPAWN_SETPGROUP | + POSIX_SPAWN_SETSIGDEF | + POSIX_SPAWN_SETSIGMASK | + POSIX_SPAWN_SETSCHEDPARAM | + POSIX_SPAWN_SETSCHEDULER | + POSIX_SPAWN_USEVFORK | + POSIX_SPAWN_SETSID; + if (flags & ~all_flags) return EINVAL; + attr->__flags = flags; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setpgroup.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setpgroup.c new file mode 100644 index 000000000..f39596a6e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setpgroup.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_setpgroup(posix_spawnattr_t *attr, pid_t pgrp) +{ + attr->__pgrp = pgrp; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigdefault.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigdefault.c new file mode 100644 index 000000000..568697267 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigdefault.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict attr, const sigset_t *restrict def) +{ + attr->__def = *def; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigmask.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigmask.c new file mode 100644 index 000000000..f2532f8e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnattr_setsigmask.c @@ -0,0 +1,7 @@ +#include + +int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict attr, const sigset_t *restrict mask) +{ + attr->__mask = *mask; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/process/posix_spawnp.c b/vendor/modernc.org/libc/musl/src/process/posix_spawnp.c new file mode 100644 index 000000000..aad6133b9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/posix_spawnp.c @@ -0,0 +1,13 @@ +#include +#include + +int posix_spawnp(pid_t *restrict res, const char *restrict file, + const posix_spawn_file_actions_t *fa, + const posix_spawnattr_t *restrict attr, + char *const argv[restrict], char *const envp[restrict]) +{ + posix_spawnattr_t spawnp_attr = { 0 }; + if (attr) spawnp_attr = *attr; + spawnp_attr.__fn = (void *)__execvpe; + return posix_spawn(res, file, fa, &spawnp_attr, argv, envp); +} diff --git a/vendor/modernc.org/libc/musl/src/process/system.c b/vendor/modernc.org/libc/musl/src/process/system.c new file mode 100644 index 000000000..5af59b809 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/system.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include +#include "pthread_impl.h" + +extern char **__environ; + +int system(const char *cmd) +{ + pid_t pid; + sigset_t old, reset; + struct sigaction sa = { .sa_handler = SIG_IGN }, oldint, oldquit; + int status = -1, ret; + posix_spawnattr_t attr; + + pthread_testcancel(); + + if (!cmd) return 1; + + sigaction(SIGINT, &sa, &oldint); + sigaction(SIGQUIT, &sa, &oldquit); + sigaddset(&sa.sa_mask, SIGCHLD); + sigprocmask(SIG_BLOCK, &sa.sa_mask, &old); + + sigemptyset(&reset); + if (oldint.sa_handler != SIG_IGN) sigaddset(&reset, SIGINT); + if (oldquit.sa_handler != SIG_IGN) sigaddset(&reset, SIGQUIT); + posix_spawnattr_init(&attr); + posix_spawnattr_setsigmask(&attr, &old); + posix_spawnattr_setsigdefault(&attr, &reset); + posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETSIGDEF|POSIX_SPAWN_SETSIGMASK); + ret = posix_spawn(&pid, "/bin/sh", 0, &attr, + (char *[]){"sh", "-c", (char *)cmd, 0}, __environ); + posix_spawnattr_destroy(&attr); + + if (!ret) while (waitpid(pid, &status, 0)<0 && errno == EINTR); + sigaction(SIGINT, &oldint, NULL); + sigaction(SIGQUIT, &oldquit, NULL); + sigprocmask(SIG_SETMASK, &old, NULL); + + if (ret) errno = ret; + return status; +} diff --git a/vendor/modernc.org/libc/musl/src/process/vfork.c b/vendor/modernc.org/libc/musl/src/process/vfork.c new file mode 100644 index 000000000..d430c13fc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/vfork.c @@ -0,0 +1,14 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" + +pid_t vfork(void) +{ + /* vfork syscall cannot be made from C code */ +#ifdef SYS_fork + return syscall(SYS_fork); +#else + return syscall(SYS_clone, SIGCHLD, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/process/wait.c b/vendor/modernc.org/libc/musl/src/process/wait.c new file mode 100644 index 000000000..34da102d5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/wait.c @@ -0,0 +1,6 @@ +#include + +pid_t wait(int *status) +{ + return waitpid((pid_t)-1, status, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/process/waitid.c b/vendor/modernc.org/libc/musl/src/process/waitid.c new file mode 100644 index 000000000..d688650d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/waitid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int waitid(idtype_t type, id_t id, siginfo_t *info, int options) +{ + return syscall_cp(SYS_waitid, type, id, info, options, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/process/waitpid.c b/vendor/modernc.org/libc/musl/src/process/waitpid.c new file mode 100644 index 000000000..1b65bf051 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/process/waitpid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t waitpid(pid_t pid, int *status, int options) +{ + return syscall_cp(SYS_wait4, pid, status, options, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/regex/fnmatch.c b/vendor/modernc.org/libc/musl/src/regex/fnmatch.c new file mode 100644 index 000000000..978fff884 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/fnmatch.c @@ -0,0 +1,321 @@ +/* + * An implementation of what I call the "Sea of Stars" algorithm for + * POSIX fnmatch(). The basic idea is that we factor the pattern into + * a head component (which we match first and can reject without ever + * measuring the length of the string), an optional tail component + * (which only exists if the pattern contains at least one star), and + * an optional "sea of stars", a set of star-separated components + * between the head and tail. After the head and tail matches have + * been removed from the input string, the components in the "sea of + * stars" are matched sequentially by searching for their first + * occurrence past the end of the previous match. + * + * - Rich Felker, April 2012 + */ + +#include +#include +#include +#include +#include +#include "locale_impl.h" + +#define END 0 +#define UNMATCHABLE -2 +#define BRACKET -3 +#define QUESTION -4 +#define STAR -5 + +static int str_next(const char *str, size_t n, size_t *step) +{ + if (!n) { + *step = 0; + return 0; + } + if (str[0] >= 128U) { + wchar_t wc; + int k = mbtowc(&wc, str, n); + if (k<0) { + *step = 1; + return -1; + } + *step = k; + return wc; + } + *step = 1; + return str[0]; +} + +static int pat_next(const char *pat, size_t m, size_t *step, int flags) +{ + int esc = 0; + if (!m || !*pat) { + *step = 0; + return END; + } + *step = 1; + if (pat[0]=='\\' && pat[1] && !(flags & FNM_NOESCAPE)) { + *step = 2; + pat++; + esc = 1; + goto escaped; + } + if (pat[0]=='[') { + size_t k = 1; + if (k= 128U) { + wchar_t wc; + int k = mbtowc(&wc, pat, m); + if (k<0) { + *step = 0; + return UNMATCHABLE; + } + *step = k + esc; + return wc; + } + return pat[0]; +} + +static int casefold(int k) +{ + int c = towupper(k); + return c == k ? towlower(k) : c; +} + +static int match_bracket(const char *p, int k, int kfold) +{ + wchar_t wc; + int inv = 0; + p++; + if (*p=='^' || *p=='!') { + inv = 1; + p++; + } + if (*p==']') { + if (k==']') return !inv; + p++; + } else if (*p=='-') { + if (k=='-') return !inv; + p++; + } + wc = p[-1]; + for (; *p != ']'; p++) { + if (p[0]=='-' && p[1]!=']') { + wchar_t wc2; + int l = mbtowc(&wc2, p+1, 4); + if (l < 0) return 0; + if (wc <= wc2) + if ((unsigned)k-wc <= wc2-wc || + (unsigned)kfold-wc <= wc2-wc) + return !inv; + p += l-1; + continue; + } + if (p[0]=='[' && (p[1]==':' || p[1]=='.' || p[1]=='=')) { + const char *p0 = p+2; + int z = p[1]; + p+=3; + while (p[-1]!=z || p[0]!=']') p++; + if (z == ':' && p-1-p0 < 16) { + char buf[16]; + memcpy(buf, p0, p-1-p0); + buf[p-1-p0] = 0; + if (iswctype(k, wctype(buf)) || + iswctype(kfold, wctype(buf))) + return !inv; + } + continue; + } + if (*p < 128U) { + wc = (unsigned char)*p; + } else { + int l = mbtowc(&wc, p, 4); + if (l < 0) return 0; + p += l-1; + } + if (wc==k || wc==kfold) return !inv; + } + return inv; +} + +static int fnmatch_internal(const char *pat, size_t m, const char *str, size_t n, int flags) +{ + const char *p, *ptail, *endpat; + const char *s, *stail, *endstr; + size_t pinc, sinc, tailcnt=0; + int c, k, kfold; + + if (flags & FNM_PERIOD) { + if (*str == '.' && *pat != '.') + return FNM_NOMATCH; + } + for (;;) { + switch ((c = pat_next(pat, m, &pinc, flags))) { + case UNMATCHABLE: + return FNM_NOMATCH; + case STAR: + pat++; + m--; + break; + default: + k = str_next(str, n, &sinc); + if (k <= 0) + return (c==END) ? 0 : FNM_NOMATCH; + str += sinc; + n -= sinc; + kfold = flags & FNM_CASEFOLD ? casefold(k) : k; + if (c == BRACKET) { + if (!match_bracket(pat, k, kfold)) + return FNM_NOMATCH; + } else if (c != QUESTION && k != c && kfold != c) { + return FNM_NOMATCH; + } + pat+=pinc; + m-=pinc; + continue; + } + break; + } + + /* Compute real pat length if it was initially unknown/-1 */ + m = strnlen(pat, m); + endpat = pat + m; + + /* Find the last * in pat and count chars needed after it */ + for (p=ptail=pat; pstr && tailcnt; tailcnt--) { + if (s[-1] < 128U || MB_CUR_MAX==1) s--; + else while ((unsigned char)*--s-0x80U<0x40 && s>str); + } + if (tailcnt) return FNM_NOMATCH; + stail = s; + + /* Check that the pat and str tails match */ + p = ptail; + for (;;) { + c = pat_next(p, endpat-p, &pinc, flags); + p += pinc; + if ((k = str_next(s, endstr-s, &sinc)) <= 0) { + if (c != END) return FNM_NOMATCH; + break; + } + s += sinc; + kfold = flags & FNM_CASEFOLD ? casefold(k) : k; + if (c == BRACKET) { + if (!match_bracket(p-pinc, k, kfold)) + return FNM_NOMATCH; + } else if (c != QUESTION && k != c && kfold != c) { + return FNM_NOMATCH; + } + } + + /* We're all done with the tails now, so throw them out */ + endstr = stail; + endpat = ptail; + + /* Match pattern components until there are none left */ + while (pat 0) str += sinc; + else for (str++; str_next(str, endstr-str, &sinc)<0; str++); + } + + return 0; +} + +int fnmatch(const char *pat, const char *str, int flags) +{ + const char *s, *p; + size_t inc; + int c; + if (flags & FNM_PATHNAME) for (;;) { + for (s=str; *s && *s!='/'; s++); + for (p=pat; (c=pat_next(p, -1, &inc, flags))!=END && c!='/'; p+=inc); + if (c!=*s && (!*s || !(flags & FNM_LEADING_DIR))) + return FNM_NOMATCH; + if (fnmatch_internal(pat, p-pat, str, s-str, flags)) + return FNM_NOMATCH; + if (!c) return 0; + str = s+1; + pat = p+inc; + } else if (flags & FNM_LEADING_DIR) { + for (s=str; *s; s++) { + if (*s != '/') continue; + if (!fnmatch_internal(pat, -1, str, s-str, flags)) + return 0; + } + } + return fnmatch_internal(pat, -1, str, -1, flags); +} diff --git a/vendor/modernc.org/libc/musl/src/regex/glob.c b/vendor/modernc.org/libc/musl/src/regex/glob.c new file mode 100644 index 000000000..9de080ed9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/glob.c @@ -0,0 +1,311 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct match +{ + struct match *next; + char name[]; +}; + +static int append(struct match **tail, const char *name, size_t len, int mark) +{ + struct match *new = malloc(sizeof(struct match) + len + 2); + if (!new) return -1; + (*tail)->next = new; + new->next = NULL; + memcpy(new->name, name, len+1); + if (mark && len && name[len-1]!='/') { + new->name[len] = '/'; + new->name[len+1] = 0; + } + *tail = new; + return 0; +} + +static int do_glob(char *buf, size_t pos, int type, char *pat, int flags, int (*errfunc)(const char *path, int err), struct match **tail) +{ + /* If GLOB_MARK is unused, we don't care about type. */ + if (!type && !(flags & GLOB_MARK)) type = DT_REG; + + /* Special-case the remaining pattern being all slashes, in + * which case we can use caller-passed type if it's a dir. */ + if (*pat && type!=DT_DIR) type = 0; + while (pos+1 < PATH_MAX && *pat=='/') buf[pos++] = *pat++; + + /* Consume maximal [escaped-]literal prefix of pattern, copying + * and un-escaping it to the running buffer as we go. */ + ptrdiff_t i=0, j=0; + int in_bracket = 0, overflow = 0; + for (; pat[i]!='*' && pat[i]!='?' && (!in_bracket || pat[i]!=']'); i++) { + if (!pat[i]) { + if (overflow) return 0; + pat += i; + pos += j; + i = j = 0; + break; + } else if (pat[i] == '[') { + in_bracket = 1; + } else if (pat[i] == '\\' && !(flags & GLOB_NOESCAPE)) { + /* Backslashes inside a bracket are (at least by + * our interpretation) non-special, so if next + * char is ']' we have a complete expression. */ + if (in_bracket && pat[i+1]==']') break; + /* Unpaired final backslash never matches. */ + if (!pat[i+1]) return 0; + i++; + } + if (pat[i] == '/') { + if (overflow) return 0; + in_bracket = 0; + pat += i+1; + i = -1; + pos += j+1; + j = -1; + } + /* Only store a character if it fits in the buffer, but if + * a potential bracket expression is open, the overflow + * must be remembered and handled later only if the bracket + * is unterminated (and thereby a literal), so as not to + * disallow long bracket expressions with short matches. */ + if (pos+(j+1) < PATH_MAX) { + buf[pos+j++] = pat[i]; + } else if (in_bracket) { + overflow = 1; + } else { + return 0; + } + /* If we consume any new components, the caller-passed type + * or dummy type from above is no longer valid. */ + type = 0; + } + buf[pos] = 0; + if (!*pat) { + /* If we consumed any components above, or if GLOB_MARK is + * requested and we don't yet know if the match is a dir, + * we must confirm the file exists and/or determine its type. + * + * If marking dirs, symlink type is inconclusive; we need the + * type for the symlink target, and therefore must try stat + * first unless type is known not to be a symlink. Otherwise, + * or if that fails, use lstat for determining existence to + * avoid false negatives in the case of broken symlinks. */ + struct stat st; + if ((flags & GLOB_MARK) && (!type||type==DT_LNK) && !stat(buf, &st)) { + if (S_ISDIR(st.st_mode)) type = DT_DIR; + else type = DT_REG; + } + if (!type && lstat(buf, &st)) { + if (errno!=ENOENT && (errfunc(buf, errno) || (flags & GLOB_ERR))) + return GLOB_ABORTED; + return 0; + } + if (append(tail, buf, pos, (flags & GLOB_MARK) && type==DT_DIR)) + return GLOB_NOSPACE; + return 0; + } + char *p2 = strchr(pat, '/'), saved_sep = '/'; + /* Check if the '/' was escaped and, if so, remove the escape char + * so that it will not be unpaired when passed to fnmatch. */ + if (p2 && !(flags & GLOB_NOESCAPE)) { + char *p; + for (p=p2; p>pat && p[-1]=='\\'; p--); + if ((p2-p)%2) { + p2--; + saved_sep = '\\'; + } + } + DIR *dir = opendir(pos ? buf : "."); + if (!dir) { + if (errfunc(buf, errno) || (flags & GLOB_ERR)) + return GLOB_ABORTED; + return 0; + } + int old_errno = errno; + struct dirent *de; + while (errno=0, de=readdir(dir)) { + /* Quickly skip non-directories when there's pattern left. */ + if (p2 && de->d_type && de->d_type!=DT_DIR && de->d_type!=DT_LNK) + continue; + + size_t l = strlen(de->d_name); + if (l >= PATH_MAX-pos) continue; + + if (p2) *p2 = 0; + + int fnm_flags= ((flags & GLOB_NOESCAPE) ? FNM_NOESCAPE : 0) + | ((!(flags & GLOB_PERIOD)) ? FNM_PERIOD : 0); + + if (fnmatch(pat, de->d_name, fnm_flags)) + continue; + + /* With GLOB_PERIOD, don't allow matching . or .. unless + * fnmatch would match them with FNM_PERIOD rules in effect. */ + if (p2 && (flags & GLOB_PERIOD) && de->d_name[0]=='.' + && (!de->d_name[1] || de->d_name[1]=='.' && !de->d_name[2]) + && fnmatch(pat, de->d_name, fnm_flags | FNM_PERIOD)) + continue; + + memcpy(buf+pos, de->d_name, l+1); + if (p2) *p2 = saved_sep; + int r = do_glob(buf, pos+l, de->d_type, p2 ? p2 : "", flags, errfunc, tail); + if (r) { + closedir(dir); + return r; + } + } + int readerr = errno; + if (p2) *p2 = saved_sep; + closedir(dir); + if (readerr && (errfunc(buf, errno) || (flags & GLOB_ERR))) + return GLOB_ABORTED; + errno = old_errno; + return 0; +} + +static int ignore_err(const char *path, int err) +{ + return 0; +} + +static void freelist(struct match *head) +{ + struct match *match, *next; + for (match=head->next; match; match=next) { + next = match->next; + free(match); + } +} + +static int sort(const void *a, const void *b) +{ + return strcmp(*(const char **)a, *(const char **)b); +} + +static int expand_tilde(char **pat, char *buf, size_t *pos) +{ + char *p = *pat + 1; + size_t i = 0; + + char delim, *name_end = __strchrnul(p, '/'); + if ((delim = *name_end)) *name_end++ = 0; + *pat = name_end; + + char *home = *p ? NULL : getenv("HOME"); + if (!home) { + struct passwd pw, *res; + switch (*p ? getpwnam_r(p, &pw, buf, PATH_MAX, &res) + : getpwuid_r(getuid(), &pw, buf, PATH_MAX, &res)) { + case ENOMEM: + return GLOB_NOSPACE; + case 0: + if (!res) + default: + return GLOB_NOMATCH; + } + home = pw.pw_dir; + } + while (i < PATH_MAX - 2 && *home) + buf[i++] = *home++; + if (*home) + return GLOB_NOMATCH; + if ((buf[i] = delim)) + buf[++i] = 0; + *pos = i; + return 0; +} + +int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, int err), glob_t *restrict g) +{ + struct match head = { .next = NULL }, *tail = &head; + size_t cnt, i; + size_t offs = (flags & GLOB_DOOFFS) ? g->gl_offs : 0; + int error = 0; + char buf[PATH_MAX]; + + if (!errfunc) errfunc = ignore_err; + + if (!(flags & GLOB_APPEND)) { + g->gl_offs = offs; + g->gl_pathc = 0; + g->gl_pathv = NULL; + } + + if (*pat) { + char *p = strdup(pat); + if (!p) return GLOB_NOSPACE; + buf[0] = 0; + size_t pos = 0; + char *s = p; + if ((flags & (GLOB_TILDE | GLOB_TILDE_CHECK)) && *p == '~') + error = expand_tilde(&s, buf, &pos); + if (!error) + error = do_glob(buf, pos, 0, s, flags, errfunc, &tail); + free(p); + } + + if (error == GLOB_NOSPACE) { + freelist(&head); + return error; + } + + for (cnt=0, tail=head.next; tail; tail=tail->next, cnt++); + if (!cnt) { + if (flags & GLOB_NOCHECK) { + tail = &head; + if (append(&tail, pat, strlen(pat), 0)) + return GLOB_NOSPACE; + cnt++; + } else + return GLOB_NOMATCH; + } + + if (flags & GLOB_APPEND) { + char **pathv = realloc(g->gl_pathv, (offs + g->gl_pathc + cnt + 1) * sizeof(char *)); + if (!pathv) { + freelist(&head); + return GLOB_NOSPACE; + } + g->gl_pathv = pathv; + offs += g->gl_pathc; + } else { + g->gl_pathv = malloc((offs + cnt + 1) * sizeof(char *)); + if (!g->gl_pathv) { + freelist(&head); + return GLOB_NOSPACE; + } + for (i=0; igl_pathv[i] = NULL; + } + for (i=0, tail=head.next; inext, i++) + g->gl_pathv[offs + i] = tail->name; + g->gl_pathv[offs + i] = NULL; + g->gl_pathc += cnt; + + if (!(flags & GLOB_NOSORT)) + qsort(g->gl_pathv+offs, cnt, sizeof(char *), sort); + + return error; +} + +void globfree(glob_t *g) +{ + size_t i; + for (i=0; igl_pathc; i++) + free(g->gl_pathv[g->gl_offs + i] - offsetof(struct match, name)); + free(g->gl_pathv); + g->gl_pathc = 0; + g->gl_pathv = NULL; +} + +weak_alias(glob, glob64); +weak_alias(globfree, globfree64); diff --git a/vendor/modernc.org/libc/musl/src/regex/regcomp.c b/vendor/modernc.org/libc/musl/src/regex/regcomp.c new file mode 100644 index 000000000..fb24556eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/regcomp.c @@ -0,0 +1,2953 @@ +/* + regcomp.c - TRE POSIX compatible regex compilation functions. + + Copyright (c) 2001-2009 Ville Laurikari + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include +#include +#include +#include +#include +#include + +#include "tre.h" + +#include + +/*********************************************************************** + from tre-compile.h +***********************************************************************/ + +typedef struct { + int position; + int code_min; + int code_max; + int *tags; + int assertions; + tre_ctype_t class; + tre_ctype_t *neg_classes; + int backref; +} tre_pos_and_tags_t; + + +/*********************************************************************** + from tre-ast.c and tre-ast.h +***********************************************************************/ + +/* The different AST node types. */ +typedef enum { + LITERAL, + CATENATION, + ITERATION, + UNION +} tre_ast_type_t; + +/* Special subtypes of TRE_LITERAL. */ +#define EMPTY -1 /* Empty leaf (denotes empty string). */ +#define ASSERTION -2 /* Assertion leaf. */ +#define TAG -3 /* Tag leaf. */ +#define BACKREF -4 /* Back reference leaf. */ + +#define IS_SPECIAL(x) ((x)->code_min < 0) +#define IS_EMPTY(x) ((x)->code_min == EMPTY) +#define IS_ASSERTION(x) ((x)->code_min == ASSERTION) +#define IS_TAG(x) ((x)->code_min == TAG) +#define IS_BACKREF(x) ((x)->code_min == BACKREF) + + +/* A generic AST node. All AST nodes consist of this node on the top + level with `obj' pointing to the actual content. */ +typedef struct { + tre_ast_type_t type; /* Type of the node. */ + void *obj; /* Pointer to actual node. */ + int nullable; + int submatch_id; + int num_submatches; + int num_tags; + tre_pos_and_tags_t *firstpos; + tre_pos_and_tags_t *lastpos; +} tre_ast_node_t; + + +/* A "literal" node. These are created for assertions, back references, + tags, matching parameter settings, and all expressions that match one + character. */ +typedef struct { + long code_min; + long code_max; + int position; + tre_ctype_t class; + tre_ctype_t *neg_classes; +} tre_literal_t; + +/* A "catenation" node. These are created when two regexps are concatenated. + If there are more than one subexpressions in sequence, the `left' part + holds all but the last, and `right' part holds the last subexpression + (catenation is left associative). */ +typedef struct { + tre_ast_node_t *left; + tre_ast_node_t *right; +} tre_catenation_t; + +/* An "iteration" node. These are created for the "*", "+", "?", and "{m,n}" + operators. */ +typedef struct { + /* Subexpression to match. */ + tre_ast_node_t *arg; + /* Minimum number of consecutive matches. */ + int min; + /* Maximum number of consecutive matches. */ + int max; + /* If 0, match as many characters as possible, if 1 match as few as + possible. Note that this does not always mean the same thing as + matching as many/few repetitions as possible. */ + unsigned int minimal:1; +} tre_iteration_t; + +/* An "union" node. These are created for the "|" operator. */ +typedef struct { + tre_ast_node_t *left; + tre_ast_node_t *right; +} tre_union_t; + + +static tre_ast_node_t * +tre_ast_new_node(tre_mem_t mem, int type, void *obj) +{ + tre_ast_node_t *node = tre_mem_calloc(mem, sizeof *node); + if (!node || !obj) + return 0; + node->obj = obj; + node->type = type; + node->nullable = -1; + node->submatch_id = -1; + return node; +} + +static tre_ast_node_t * +tre_ast_new_literal(tre_mem_t mem, int code_min, int code_max, int position) +{ + tre_ast_node_t *node; + tre_literal_t *lit; + + lit = tre_mem_calloc(mem, sizeof *lit); + node = tre_ast_new_node(mem, LITERAL, lit); + if (!node) + return 0; + lit->code_min = code_min; + lit->code_max = code_max; + lit->position = position; + return node; +} + +static tre_ast_node_t * +tre_ast_new_iter(tre_mem_t mem, tre_ast_node_t *arg, int min, int max, int minimal) +{ + tre_ast_node_t *node; + tre_iteration_t *iter; + + iter = tre_mem_calloc(mem, sizeof *iter); + node = tre_ast_new_node(mem, ITERATION, iter); + if (!node) + return 0; + iter->arg = arg; + iter->min = min; + iter->max = max; + iter->minimal = minimal; + node->num_submatches = arg->num_submatches; + return node; +} + +static tre_ast_node_t * +tre_ast_new_union(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right) +{ + tre_ast_node_t *node; + tre_union_t *un; + + if (!left) + return right; + un = tre_mem_calloc(mem, sizeof *un); + node = tre_ast_new_node(mem, UNION, un); + if (!node || !right) + return 0; + un->left = left; + un->right = right; + node->num_submatches = left->num_submatches + right->num_submatches; + return node; +} + +static tre_ast_node_t * +tre_ast_new_catenation(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right) +{ + tre_ast_node_t *node; + tre_catenation_t *cat; + + if (!left) + return right; + cat = tre_mem_calloc(mem, sizeof *cat); + node = tre_ast_new_node(mem, CATENATION, cat); + if (!node) + return 0; + cat->left = left; + cat->right = right; + node->num_submatches = left->num_submatches + right->num_submatches; + return node; +} + + +/*********************************************************************** + from tre-stack.c and tre-stack.h +***********************************************************************/ + +typedef struct tre_stack_rec tre_stack_t; + +/* Creates a new stack object. `size' is initial size in bytes, `max_size' + is maximum size, and `increment' specifies how much more space will be + allocated with realloc() if all space gets used up. Returns the stack + object or NULL if out of memory. */ +static tre_stack_t * +tre_stack_new(int size, int max_size, int increment); + +/* Frees the stack object. */ +static void +tre_stack_destroy(tre_stack_t *s); + +/* Returns the current number of objects in the stack. */ +static int +tre_stack_num_objects(tre_stack_t *s); + +/* Each tre_stack_push_*(tre_stack_t *s, value) function pushes + `value' on top of stack `s'. Returns REG_ESPACE if out of memory. + This tries to realloc() more space before failing if maximum size + has not yet been reached. Returns REG_OK if successful. */ +#define declare_pushf(typetag, type) \ + static reg_errcode_t tre_stack_push_ ## typetag(tre_stack_t *s, type value) + +declare_pushf(voidptr, void *); +declare_pushf(int, int); + +/* Each tre_stack_pop_*(tre_stack_t *s) function pops the topmost + element off of stack `s' and returns it. The stack must not be + empty. */ +#define declare_popf(typetag, type) \ + static type tre_stack_pop_ ## typetag(tre_stack_t *s) + +declare_popf(voidptr, void *); +declare_popf(int, int); + +/* Just to save some typing. */ +#define STACK_PUSH(s, typetag, value) \ + do \ + { \ + status = tre_stack_push_ ## typetag(s, value); \ + } \ + while (/*CONSTCOND*/0) + +#define STACK_PUSHX(s, typetag, value) \ + { \ + status = tre_stack_push_ ## typetag(s, value); \ + if (status != REG_OK) \ + break; \ + } + +#define STACK_PUSHR(s, typetag, value) \ + { \ + reg_errcode_t _status; \ + _status = tre_stack_push_ ## typetag(s, value); \ + if (_status != REG_OK) \ + return _status; \ + } + +union tre_stack_item { + void *voidptr_value; + int int_value; +}; + +struct tre_stack_rec { + int size; + int max_size; + int increment; + int ptr; + union tre_stack_item *stack; +}; + + +static tre_stack_t * +tre_stack_new(int size, int max_size, int increment) +{ + tre_stack_t *s; + + s = xmalloc(sizeof(*s)); + if (s != NULL) + { + s->stack = xmalloc(sizeof(*s->stack) * size); + if (s->stack == NULL) + { + xfree(s); + return NULL; + } + s->size = size; + s->max_size = max_size; + s->increment = increment; + s->ptr = 0; + } + return s; +} + +static void +tre_stack_destroy(tre_stack_t *s) +{ + xfree(s->stack); + xfree(s); +} + +static int +tre_stack_num_objects(tre_stack_t *s) +{ + return s->ptr; +} + +static reg_errcode_t +tre_stack_push(tre_stack_t *s, union tre_stack_item value) +{ + if (s->ptr < s->size) + { + s->stack[s->ptr] = value; + s->ptr++; + } + else + { + if (s->size >= s->max_size) + { + return REG_ESPACE; + } + else + { + union tre_stack_item *new_buffer; + int new_size; + new_size = s->size + s->increment; + if (new_size > s->max_size) + new_size = s->max_size; + new_buffer = xrealloc(s->stack, sizeof(*new_buffer) * new_size); + if (new_buffer == NULL) + { + return REG_ESPACE; + } + assert(new_size > s->size); + s->size = new_size; + s->stack = new_buffer; + tre_stack_push(s, value); + } + } + return REG_OK; +} + +#define define_pushf(typetag, type) \ + declare_pushf(typetag, type) { \ + union tre_stack_item item; \ + item.typetag ## _value = value; \ + return tre_stack_push(s, item); \ +} + +define_pushf(int, int) +define_pushf(voidptr, void *) + +#define define_popf(typetag, type) \ + declare_popf(typetag, type) { \ + return s->stack[--s->ptr].typetag ## _value; \ + } + +define_popf(int, int) +define_popf(voidptr, void *) + + +/*********************************************************************** + from tre-parse.c and tre-parse.h +***********************************************************************/ + +/* Parse context. */ +typedef struct { + /* Memory allocator. The AST is allocated using this. */ + tre_mem_t mem; + /* Stack used for keeping track of regexp syntax. */ + tre_stack_t *stack; + /* The parsed node after a parse function returns. */ + tre_ast_node_t *n; + /* Position in the regexp pattern after a parse function returns. */ + const char *s; + /* The first character of the last subexpression parsed. */ + const char *start; + /* Current submatch ID. */ + int submatch_id; + /* Current position (number of literal). */ + int position; + /* The highest back reference or -1 if none seen so far. */ + int max_backref; + /* Compilation flags. */ + int cflags; +} tre_parse_ctx_t; + +/* Some macros for expanding \w, \s, etc. */ +static const struct { + char c; + const char *expansion; +} tre_macros[] = { + {'t', "\t"}, {'n', "\n"}, {'r', "\r"}, + {'f', "\f"}, {'a', "\a"}, {'e', "\033"}, + {'w', "[[:alnum:]_]"}, {'W', "[^[:alnum:]_]"}, {'s', "[[:space:]]"}, + {'S', "[^[:space:]]"}, {'d', "[[:digit:]]"}, {'D', "[^[:digit:]]"}, + { 0, 0 } +}; + +/* Expands a macro delimited by `regex' and `regex_end' to `buf', which + must have at least `len' items. Sets buf[0] to zero if the there + is no match in `tre_macros'. */ +static const char *tre_expand_macro(const char *s) +{ + int i; + for (i = 0; tre_macros[i].c && tre_macros[i].c != *s; i++); + return tre_macros[i].expansion; +} + +static int +tre_compare_lit(const void *a, const void *b) +{ + const tre_literal_t *const *la = a; + const tre_literal_t *const *lb = b; + /* assumes the range of valid code_min is < INT_MAX */ + return la[0]->code_min - lb[0]->code_min; +} + +struct literals { + tre_mem_t mem; + tre_literal_t **a; + int len; + int cap; +}; + +static tre_literal_t *tre_new_lit(struct literals *p) +{ + tre_literal_t **a; + if (p->len >= p->cap) { + if (p->cap >= 1<<15) + return 0; + p->cap *= 2; + a = xrealloc(p->a, p->cap * sizeof *p->a); + if (!a) + return 0; + p->a = a; + } + a = p->a + p->len++; + *a = tre_mem_calloc(p->mem, sizeof **a); + return *a; +} + +static int add_icase_literals(struct literals *ls, int min, int max) +{ + tre_literal_t *lit; + int b, e, c; + for (c=min; c<=max; ) { + /* assumes islower(c) and isupper(c) are exclusive + and toupper(c)!=c if islower(c). + multiple opposite case characters are not supported */ + if (tre_islower(c)) { + b = e = tre_toupper(c); + for (c++, e++; c<=max; c++, e++) + if (tre_toupper(c) != e) break; + } else if (tre_isupper(c)) { + b = e = tre_tolower(c); + for (c++, e++; c<=max; c++, e++) + if (tre_tolower(c) != e) break; + } else { + c++; + continue; + } + lit = tre_new_lit(ls); + if (!lit) + return -1; + lit->code_min = b; + lit->code_max = e-1; + lit->position = -1; + } + return 0; +} + + +/* Maximum number of character classes in a negated bracket expression. */ +#define MAX_NEG_CLASSES 64 + +struct neg { + int negate; + int len; + tre_ctype_t a[MAX_NEG_CLASSES]; +}; + +// TODO: parse bracket into a set of non-overlapping [lo,hi] ranges + +/* +bracket grammar: +Bracket = '[' List ']' | '[^' List ']' +List = Term | List Term +Term = Char | Range | Chclass | Eqclass +Range = Char '-' Char | Char '-' '-' +Char = Coll | coll_single +Meta = ']' | '-' +Coll = '[.' coll_single '.]' | '[.' coll_multi '.]' | '[.' Meta '.]' +Eqclass = '[=' coll_single '=]' | '[=' coll_multi '=]' +Chclass = '[:' class ':]' + +coll_single is a single char collating element but it can be + '-' only at the beginning or end of a List and + ']' only at the beginning of a List and + '^' anywhere except after the openning '[' +*/ + +static reg_errcode_t parse_bracket_terms(tre_parse_ctx_t *ctx, const char *s, struct literals *ls, struct neg *neg) +{ + const char *start = s; + tre_ctype_t class; + int min, max; + wchar_t wc; + int len; + + for (;;) { + class = 0; + len = mbtowc(&wc, s, -1); + if (len <= 0) + return *s ? REG_BADPAT : REG_EBRACK; + if (*s == ']' && s != start) { + ctx->s = s+1; + return REG_OK; + } + if (*s == '-' && s != start && s[1] != ']' && + /* extension: [a-z--@] is accepted as [a-z]|[--@] */ + (s[1] != '-' || s[2] == ']')) + return REG_ERANGE; + if (*s == '[' && (s[1] == '.' || s[1] == '=')) + /* collating symbols and equivalence classes are not supported */ + return REG_ECOLLATE; + if (*s == '[' && s[1] == ':') { + char tmp[CHARCLASS_NAME_MAX+1]; + s += 2; + for (len=0; len < CHARCLASS_NAME_MAX && s[len]; len++) { + if (s[len] == ':') { + memcpy(tmp, s, len); + tmp[len] = 0; + class = tre_ctype(tmp); + break; + } + } + if (!class || s[len+1] != ']') + return REG_ECTYPE; + min = 0; + max = TRE_CHAR_MAX; + s += len+2; + } else { + min = max = wc; + s += len; + if (*s == '-' && s[1] != ']') { + s++; + len = mbtowc(&wc, s, -1); + max = wc; + /* XXX - Should use collation order instead of + encoding values in character ranges. */ + if (len <= 0 || min > max) + return REG_ERANGE; + s += len; + } + } + + if (class && neg->negate) { + if (neg->len >= MAX_NEG_CLASSES) + return REG_ESPACE; + neg->a[neg->len++] = class; + } else { + tre_literal_t *lit = tre_new_lit(ls); + if (!lit) + return REG_ESPACE; + lit->code_min = min; + lit->code_max = max; + lit->class = class; + lit->position = -1; + + /* Add opposite-case codepoints if REG_ICASE is present. + It seems that POSIX requires that bracket negation + should happen before case-folding, but most practical + implementations do it the other way around. Changing + the order would need efficient representation of + case-fold ranges and bracket range sets even with + simple patterns so this is ok for now. */ + if (ctx->cflags & REG_ICASE && !class) + if (add_icase_literals(ls, min, max)) + return REG_ESPACE; + } + } +} + +static reg_errcode_t parse_bracket(tre_parse_ctx_t *ctx, const char *s) +{ + int i, max, min, negmax, negmin; + tre_ast_node_t *node = 0, *n; + tre_ctype_t *nc = 0; + tre_literal_t *lit; + struct literals ls; + struct neg neg; + reg_errcode_t err; + + ls.mem = ctx->mem; + ls.len = 0; + ls.cap = 32; + ls.a = xmalloc(ls.cap * sizeof *ls.a); + if (!ls.a) + return REG_ESPACE; + neg.len = 0; + neg.negate = *s == '^'; + if (neg.negate) + s++; + + err = parse_bracket_terms(ctx, s, &ls, &neg); + if (err != REG_OK) + goto parse_bracket_done; + + if (neg.negate) { + /* + * With REG_NEWLINE, POSIX requires that newlines are not matched by + * any form of a non-matching list. + */ + if (ctx->cflags & REG_NEWLINE) { + lit = tre_new_lit(&ls); + if (!lit) { + err = REG_ESPACE; + goto parse_bracket_done; + } + lit->code_min = '\n'; + lit->code_max = '\n'; + lit->position = -1; + } + /* Sort the array if we need to negate it. */ + qsort(ls.a, ls.len, sizeof *ls.a, tre_compare_lit); + /* extra lit for the last negated range */ + lit = tre_new_lit(&ls); + if (!lit) { + err = REG_ESPACE; + goto parse_bracket_done; + } + lit->code_min = TRE_CHAR_MAX+1; + lit->code_max = TRE_CHAR_MAX+1; + lit->position = -1; + /* negated classes */ + if (neg.len) { + nc = tre_mem_alloc(ctx->mem, (neg.len+1)*sizeof *neg.a); + if (!nc) { + err = REG_ESPACE; + goto parse_bracket_done; + } + memcpy(nc, neg.a, neg.len*sizeof *neg.a); + nc[neg.len] = 0; + } + } + + /* Build a union of the items in the array, negated if necessary. */ + negmax = negmin = 0; + for (i = 0; i < ls.len; i++) { + lit = ls.a[i]; + min = lit->code_min; + max = lit->code_max; + if (neg.negate) { + if (min <= negmin) { + /* Overlap. */ + negmin = MAX(max + 1, negmin); + continue; + } + negmax = min - 1; + lit->code_min = negmin; + lit->code_max = negmax; + negmin = max + 1; + } + lit->position = ctx->position; + lit->neg_classes = nc; + n = tre_ast_new_node(ctx->mem, LITERAL, lit); + node = tre_ast_new_union(ctx->mem, node, n); + if (!node) { + err = REG_ESPACE; + break; + } + } + +parse_bracket_done: + xfree(ls.a); + ctx->position++; + ctx->n = node; + return err; +} + +static const char *parse_dup_count(const char *s, int *n) +{ + *n = -1; + if (!isdigit(*s)) + return s; + *n = 0; + for (;;) { + *n = 10 * *n + (*s - '0'); + s++; + if (!isdigit(*s) || *n > RE_DUP_MAX) + break; + } + return s; +} + +static const char *parse_dup(const char *s, int ere, int *pmin, int *pmax) +{ + int min, max; + + s = parse_dup_count(s, &min); + if (*s == ',') + s = parse_dup_count(s+1, &max); + else + max = min; + + if ( + (max < min && max >= 0) || + max > RE_DUP_MAX || + min > RE_DUP_MAX || + min < 0 || + (!ere && *s++ != '\\') || + *s++ != '}' + ) + return 0; + *pmin = min; + *pmax = max; + return s; +} + +static int hexval(unsigned c) +{ + if (c-'0'<10) return c-'0'; + c |= 32; + if (c-'a'<6) return c-'a'+10; + return -1; +} + +static reg_errcode_t marksub(tre_parse_ctx_t *ctx, tre_ast_node_t *node, int subid) +{ + if (node->submatch_id >= 0) { + tre_ast_node_t *n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1); + if (!n) + return REG_ESPACE; + n = tre_ast_new_catenation(ctx->mem, n, node); + if (!n) + return REG_ESPACE; + n->num_submatches = node->num_submatches; + node = n; + } + node->submatch_id = subid; + node->num_submatches++; + ctx->n = node; + return REG_OK; +} + +/* +BRE grammar: +Regex = Branch | '^' | '$' | '^$' | '^' Branch | Branch '$' | '^' Branch '$' +Branch = Atom | Branch Atom +Atom = char | quoted_char | '.' | Bracket | Atom Dup | '\(' Branch '\)' | back_ref +Dup = '*' | '\{' Count '\}' | '\{' Count ',\}' | '\{' Count ',' Count '\}' + +(leading ^ and trailing $ in a sub expr may be an anchor or literal as well) + +ERE grammar: +Regex = Branch | Regex '|' Branch +Branch = Atom | Branch Atom +Atom = char | quoted_char | '.' | Bracket | Atom Dup | '(' Regex ')' | '^' | '$' +Dup = '*' | '+' | '?' | '{' Count '}' | '{' Count ',}' | '{' Count ',' Count '}' + +(a*+?, ^*, $+, \X, {, (|a) are unspecified) +*/ + +static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s) +{ + int len, ere = ctx->cflags & REG_EXTENDED; + const char *p; + tre_ast_node_t *node; + wchar_t wc; + switch (*s) { + case '[': + return parse_bracket(ctx, s+1); + case '\\': + p = tre_expand_macro(s+1); + if (p) { + /* assume \X expansion is a single atom */ + reg_errcode_t err = parse_atom(ctx, p); + ctx->s = s+2; + return err; + } + /* extensions: \b, \B, \<, \>, \xHH \x{HHHH} */ + switch (*++s) { + case 0: + return REG_EESCAPE; + case 'b': + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB, -1); + break; + case 'B': + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB_NEG, -1); + break; + case '<': + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOW, -1); + break; + case '>': + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOW, -1); + break; + case 'x': + s++; + int i, v = 0, c; + len = 2; + if (*s == '{') { + len = 8; + s++; + } + for (i=0; imem, v, v, ctx->position++); + s--; + break; + case '{': + case '+': + case '?': + /* extension: treat \+, \? as repetitions in BRE */ + /* reject repetitions after empty expression in BRE */ + if (!ere) + return REG_BADRPT; + case '|': + /* extension: treat \| as alternation in BRE */ + if (!ere) { + node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1); + s--; + goto end; + } + /* fallthrough */ + default: + if (!ere && (unsigned)*s-'1' < 9) { + /* back reference */ + int val = *s - '0'; + node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position++); + ctx->max_backref = MAX(val, ctx->max_backref); + } else { + /* extension: accept unknown escaped char + as a literal */ + goto parse_literal; + } + } + s++; + break; + case '.': + if (ctx->cflags & REG_NEWLINE) { + tre_ast_node_t *tmp1, *tmp2; + tmp1 = tre_ast_new_literal(ctx->mem, 0, '\n'-1, ctx->position++); + tmp2 = tre_ast_new_literal(ctx->mem, '\n'+1, TRE_CHAR_MAX, ctx->position++); + if (tmp1 && tmp2) + node = tre_ast_new_union(ctx->mem, tmp1, tmp2); + else + node = 0; + } else { + node = tre_ast_new_literal(ctx->mem, 0, TRE_CHAR_MAX, ctx->position++); + } + s++; + break; + case '^': + /* '^' has a special meaning everywhere in EREs, and at beginning of BRE. */ + if (!ere && s != ctx->start) + goto parse_literal; + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOL, -1); + s++; + break; + case '$': + /* '$' is special everywhere in EREs, and at the end of a BRE subexpression. */ + if (!ere && s[1] && (s[1]!='\\'|| (s[2]!=')' && s[2]!='|'))) + goto parse_literal; + node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOL, -1); + s++; + break; + case '*': + case '{': + case '+': + case '?': + /* reject repetitions after empty expression in ERE */ + if (ere) + return REG_BADRPT; + case '|': + if (!ere) + goto parse_literal; + case 0: + node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1); + break; + default: +parse_literal: + len = mbtowc(&wc, s, -1); + if (len < 0) + return REG_BADPAT; + if (ctx->cflags & REG_ICASE && (tre_isupper(wc) || tre_islower(wc))) { + tre_ast_node_t *tmp1, *tmp2; + /* multiple opposite case characters are not supported */ + tmp1 = tre_ast_new_literal(ctx->mem, tre_toupper(wc), tre_toupper(wc), ctx->position); + tmp2 = tre_ast_new_literal(ctx->mem, tre_tolower(wc), tre_tolower(wc), ctx->position); + if (tmp1 && tmp2) + node = tre_ast_new_union(ctx->mem, tmp1, tmp2); + else + node = 0; + } else { + node = tre_ast_new_literal(ctx->mem, wc, wc, ctx->position); + } + ctx->position++; + s += len; + break; + } +end: + if (!node) + return REG_ESPACE; + ctx->n = node; + ctx->s = s; + return REG_OK; +} + +#define PUSHPTR(err, s, v) do { \ + if ((err = tre_stack_push_voidptr(s, v)) != REG_OK) \ + return err; \ +} while(0) + +#define PUSHINT(err, s, v) do { \ + if ((err = tre_stack_push_int(s, v)) != REG_OK) \ + return err; \ +} while(0) + +static reg_errcode_t tre_parse(tre_parse_ctx_t *ctx) +{ + tre_ast_node_t *nbranch=0, *nunion=0; + int ere = ctx->cflags & REG_EXTENDED; + const char *s = ctx->start; + int subid = 0; + int depth = 0; + reg_errcode_t err; + tre_stack_t *stack = ctx->stack; + + PUSHINT(err, stack, subid++); + for (;;) { + if ((!ere && *s == '\\' && s[1] == '(') || + (ere && *s == '(')) { + PUSHPTR(err, stack, nunion); + PUSHPTR(err, stack, nbranch); + PUSHINT(err, stack, subid++); + s++; + if (!ere) + s++; + depth++; + nbranch = nunion = 0; + ctx->start = s; + continue; + } + if ((!ere && *s == '\\' && s[1] == ')') || + (ere && *s == ')' && depth)) { + ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1); + if (!ctx->n) + return REG_ESPACE; + } else { + err = parse_atom(ctx, s); + if (err != REG_OK) + return err; + s = ctx->s; + } + + parse_iter: + for (;;) { + int min, max; + + if (*s!='\\' && *s!='*') { + if (!ere) + break; + if (*s!='+' && *s!='?' && *s!='{') + break; + } + if (*s=='\\' && ere) + break; + /* extension: treat \+, \? as repetitions in BRE */ + if (*s=='\\' && s[1]!='+' && s[1]!='?' && s[1]!='{') + break; + if (*s=='\\') + s++; + + /* handle ^* at the start of a BRE. */ + if (!ere && s==ctx->start+1 && s[-1]=='^') + break; + + /* extension: multiple consecutive *+?{,} is unspecified, + but (a+)+ has to be supported so accepting a++ makes + sense, note however that the RE_DUP_MAX limit can be + circumvented: (a{255}){255} uses a lot of memory.. */ + if (*s=='{') { + s = parse_dup(s+1, ere, &min, &max); + if (!s) + return REG_BADBR; + } else { + min=0; + max=-1; + if (*s == '+') + min = 1; + if (*s == '?') + max = 1; + s++; + } + if (max == 0) + ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1); + else + ctx->n = tre_ast_new_iter(ctx->mem, ctx->n, min, max, 0); + if (!ctx->n) + return REG_ESPACE; + } + + nbranch = tre_ast_new_catenation(ctx->mem, nbranch, ctx->n); + if ((ere && *s == '|') || + (ere && *s == ')' && depth) || + (!ere && *s == '\\' && s[1] == ')') || + /* extension: treat \| as alternation in BRE */ + (!ere && *s == '\\' && s[1] == '|') || + !*s) { + /* extension: empty branch is unspecified (), (|a), (a|) + here they are not rejected but match on empty string */ + int c = *s; + nunion = tre_ast_new_union(ctx->mem, nunion, nbranch); + nbranch = 0; + + if (c == '\\' && s[1] == '|') { + s+=2; + ctx->start = s; + } else if (c == '|') { + s++; + ctx->start = s; + } else { + if (c == '\\') { + if (!depth) return REG_EPAREN; + s+=2; + } else if (c == ')') + s++; + depth--; + err = marksub(ctx, nunion, tre_stack_pop_int(stack)); + if (err != REG_OK) + return err; + if (!c && depth<0) { + ctx->submatch_id = subid; + return REG_OK; + } + if (!c || depth<0) + return REG_EPAREN; + nbranch = tre_stack_pop_voidptr(stack); + nunion = tre_stack_pop_voidptr(stack); + goto parse_iter; + } + } + } +} + + +/*********************************************************************** + from tre-compile.c +***********************************************************************/ + + +/* + TODO: + - Fix tre_ast_to_tnfa() to recurse using a stack instead of recursive + function calls. +*/ + +/* + Algorithms to setup tags so that submatch addressing can be done. +*/ + + +/* Inserts a catenation node to the root of the tree given in `node'. + As the left child a new tag with number `tag_id' to `node' is added, + and the right child is the old root. */ +static reg_errcode_t +tre_add_tag_left(tre_mem_t mem, tre_ast_node_t *node, int tag_id) +{ + tre_catenation_t *c; + + c = tre_mem_alloc(mem, sizeof(*c)); + if (c == NULL) + return REG_ESPACE; + c->left = tre_ast_new_literal(mem, TAG, tag_id, -1); + if (c->left == NULL) + return REG_ESPACE; + c->right = tre_mem_alloc(mem, sizeof(tre_ast_node_t)); + if (c->right == NULL) + return REG_ESPACE; + + c->right->obj = node->obj; + c->right->type = node->type; + c->right->nullable = -1; + c->right->submatch_id = -1; + c->right->firstpos = NULL; + c->right->lastpos = NULL; + c->right->num_tags = 0; + c->right->num_submatches = 0; + node->obj = c; + node->type = CATENATION; + return REG_OK; +} + +/* Inserts a catenation node to the root of the tree given in `node'. + As the right child a new tag with number `tag_id' to `node' is added, + and the left child is the old root. */ +static reg_errcode_t +tre_add_tag_right(tre_mem_t mem, tre_ast_node_t *node, int tag_id) +{ + tre_catenation_t *c; + + c = tre_mem_alloc(mem, sizeof(*c)); + if (c == NULL) + return REG_ESPACE; + c->right = tre_ast_new_literal(mem, TAG, tag_id, -1); + if (c->right == NULL) + return REG_ESPACE; + c->left = tre_mem_alloc(mem, sizeof(tre_ast_node_t)); + if (c->left == NULL) + return REG_ESPACE; + + c->left->obj = node->obj; + c->left->type = node->type; + c->left->nullable = -1; + c->left->submatch_id = -1; + c->left->firstpos = NULL; + c->left->lastpos = NULL; + c->left->num_tags = 0; + c->left->num_submatches = 0; + node->obj = c; + node->type = CATENATION; + return REG_OK; +} + +typedef enum { + ADDTAGS_RECURSE, + ADDTAGS_AFTER_ITERATION, + ADDTAGS_AFTER_UNION_LEFT, + ADDTAGS_AFTER_UNION_RIGHT, + ADDTAGS_AFTER_CAT_LEFT, + ADDTAGS_AFTER_CAT_RIGHT, + ADDTAGS_SET_SUBMATCH_END +} tre_addtags_symbol_t; + + +typedef struct { + int tag; + int next_tag; +} tre_tag_states_t; + + +/* Go through `regset' and set submatch data for submatches that are + using this tag. */ +static void +tre_purge_regset(int *regset, tre_tnfa_t *tnfa, int tag) +{ + int i; + + for (i = 0; regset[i] >= 0; i++) + { + int id = regset[i] / 2; + int start = !(regset[i] % 2); + if (start) + tnfa->submatch_data[id].so_tag = tag; + else + tnfa->submatch_data[id].eo_tag = tag; + } + regset[0] = -1; +} + + +/* Adds tags to appropriate locations in the parse tree in `tree', so that + subexpressions marked for submatch addressing can be traced. */ +static reg_errcode_t +tre_add_tags(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree, + tre_tnfa_t *tnfa) +{ + reg_errcode_t status = REG_OK; + tre_addtags_symbol_t symbol; + tre_ast_node_t *node = tree; /* Tree node we are currently looking at. */ + int bottom = tre_stack_num_objects(stack); + /* True for first pass (counting number of needed tags) */ + int first_pass = (mem == NULL || tnfa == NULL); + int *regset, *orig_regset; + int num_tags = 0; /* Total number of tags. */ + int num_minimals = 0; /* Number of special minimal tags. */ + int tag = 0; /* The tag that is to be added next. */ + int next_tag = 1; /* Next tag to use after this one. */ + int *parents; /* Stack of submatches the current submatch is + contained in. */ + int minimal_tag = -1; /* Tag that marks the beginning of a minimal match. */ + tre_tag_states_t *saved_states; + + tre_tag_direction_t direction = TRE_TAG_MINIMIZE; + if (!first_pass) + { + tnfa->end_tag = 0; + tnfa->minimal_tags[0] = -1; + } + + regset = xmalloc(sizeof(*regset) * ((tnfa->num_submatches + 1) * 2)); + if (regset == NULL) + return REG_ESPACE; + regset[0] = -1; + orig_regset = regset; + + parents = xmalloc(sizeof(*parents) * (tnfa->num_submatches + 1)); + if (parents == NULL) + { + xfree(regset); + return REG_ESPACE; + } + parents[0] = -1; + + saved_states = xmalloc(sizeof(*saved_states) * (tnfa->num_submatches + 1)); + if (saved_states == NULL) + { + xfree(regset); + xfree(parents); + return REG_ESPACE; + } + else + { + unsigned int i; + for (i = 0; i <= tnfa->num_submatches; i++) + saved_states[i].tag = -1; + } + + STACK_PUSH(stack, voidptr, node); + STACK_PUSH(stack, int, ADDTAGS_RECURSE); + + while (tre_stack_num_objects(stack) > bottom) + { + if (status != REG_OK) + break; + + symbol = (tre_addtags_symbol_t)tre_stack_pop_int(stack); + switch (symbol) + { + + case ADDTAGS_SET_SUBMATCH_END: + { + int id = tre_stack_pop_int(stack); + int i; + + /* Add end of this submatch to regset. */ + for (i = 0; regset[i] >= 0; i++); + regset[i] = id * 2 + 1; + regset[i + 1] = -1; + + /* Pop this submatch from the parents stack. */ + for (i = 0; parents[i] >= 0; i++); + parents[i - 1] = -1; + break; + } + + case ADDTAGS_RECURSE: + node = tre_stack_pop_voidptr(stack); + + if (node->submatch_id >= 0) + { + int id = node->submatch_id; + int i; + + + /* Add start of this submatch to regset. */ + for (i = 0; regset[i] >= 0; i++); + regset[i] = id * 2; + regset[i + 1] = -1; + + if (!first_pass) + { + for (i = 0; parents[i] >= 0; i++); + tnfa->submatch_data[id].parents = NULL; + if (i > 0) + { + int *p = xmalloc(sizeof(*p) * (i + 1)); + if (p == NULL) + { + status = REG_ESPACE; + break; + } + assert(tnfa->submatch_data[id].parents == NULL); + tnfa->submatch_data[id].parents = p; + for (i = 0; parents[i] >= 0; i++) + p[i] = parents[i]; + p[i] = -1; + } + } + + /* Add end of this submatch to regset after processing this + node. */ + STACK_PUSHX(stack, int, node->submatch_id); + STACK_PUSHX(stack, int, ADDTAGS_SET_SUBMATCH_END); + } + + switch (node->type) + { + case LITERAL: + { + tre_literal_t *lit = node->obj; + + if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) + { + int i; + if (regset[0] >= 0) + { + /* Regset is not empty, so add a tag before the + literal or backref. */ + if (!first_pass) + { + status = tre_add_tag_left(mem, node, tag); + tnfa->tag_directions[tag] = direction; + if (minimal_tag >= 0) + { + for (i = 0; tnfa->minimal_tags[i] >= 0; i++); + tnfa->minimal_tags[i] = tag; + tnfa->minimal_tags[i + 1] = minimal_tag; + tnfa->minimal_tags[i + 2] = -1; + minimal_tag = -1; + num_minimals++; + } + tre_purge_regset(regset, tnfa, tag); + } + else + { + node->num_tags = 1; + } + + regset[0] = -1; + tag = next_tag; + num_tags++; + next_tag++; + } + } + else + { + assert(!IS_TAG(lit)); + } + break; + } + case CATENATION: + { + tre_catenation_t *cat = node->obj; + tre_ast_node_t *left = cat->left; + tre_ast_node_t *right = cat->right; + int reserved_tag = -1; + + + /* After processing right child. */ + STACK_PUSHX(stack, voidptr, node); + STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_RIGHT); + + /* Process right child. */ + STACK_PUSHX(stack, voidptr, right); + STACK_PUSHX(stack, int, ADDTAGS_RECURSE); + + /* After processing left child. */ + STACK_PUSHX(stack, int, next_tag + left->num_tags); + if (left->num_tags > 0 && right->num_tags > 0) + { + /* Reserve the next tag to the right child. */ + reserved_tag = next_tag; + next_tag++; + } + STACK_PUSHX(stack, int, reserved_tag); + STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_LEFT); + + /* Process left child. */ + STACK_PUSHX(stack, voidptr, left); + STACK_PUSHX(stack, int, ADDTAGS_RECURSE); + + } + break; + case ITERATION: + { + tre_iteration_t *iter = node->obj; + + if (first_pass) + { + STACK_PUSHX(stack, int, regset[0] >= 0 || iter->minimal); + } + else + { + STACK_PUSHX(stack, int, tag); + STACK_PUSHX(stack, int, iter->minimal); + } + STACK_PUSHX(stack, voidptr, node); + STACK_PUSHX(stack, int, ADDTAGS_AFTER_ITERATION); + + STACK_PUSHX(stack, voidptr, iter->arg); + STACK_PUSHX(stack, int, ADDTAGS_RECURSE); + + /* Regset is not empty, so add a tag here. */ + if (regset[0] >= 0 || iter->minimal) + { + if (!first_pass) + { + int i; + status = tre_add_tag_left(mem, node, tag); + if (iter->minimal) + tnfa->tag_directions[tag] = TRE_TAG_MAXIMIZE; + else + tnfa->tag_directions[tag] = direction; + if (minimal_tag >= 0) + { + for (i = 0; tnfa->minimal_tags[i] >= 0; i++); + tnfa->minimal_tags[i] = tag; + tnfa->minimal_tags[i + 1] = minimal_tag; + tnfa->minimal_tags[i + 2] = -1; + minimal_tag = -1; + num_minimals++; + } + tre_purge_regset(regset, tnfa, tag); + } + + regset[0] = -1; + tag = next_tag; + num_tags++; + next_tag++; + } + direction = TRE_TAG_MINIMIZE; + } + break; + case UNION: + { + tre_union_t *uni = node->obj; + tre_ast_node_t *left = uni->left; + tre_ast_node_t *right = uni->right; + int left_tag; + int right_tag; + + if (regset[0] >= 0) + { + left_tag = next_tag; + right_tag = next_tag + 1; + } + else + { + left_tag = tag; + right_tag = next_tag; + } + + /* After processing right child. */ + STACK_PUSHX(stack, int, right_tag); + STACK_PUSHX(stack, int, left_tag); + STACK_PUSHX(stack, voidptr, regset); + STACK_PUSHX(stack, int, regset[0] >= 0); + STACK_PUSHX(stack, voidptr, node); + STACK_PUSHX(stack, voidptr, right); + STACK_PUSHX(stack, voidptr, left); + STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_RIGHT); + + /* Process right child. */ + STACK_PUSHX(stack, voidptr, right); + STACK_PUSHX(stack, int, ADDTAGS_RECURSE); + + /* After processing left child. */ + STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_LEFT); + + /* Process left child. */ + STACK_PUSHX(stack, voidptr, left); + STACK_PUSHX(stack, int, ADDTAGS_RECURSE); + + /* Regset is not empty, so add a tag here. */ + if (regset[0] >= 0) + { + if (!first_pass) + { + int i; + status = tre_add_tag_left(mem, node, tag); + tnfa->tag_directions[tag] = direction; + if (minimal_tag >= 0) + { + for (i = 0; tnfa->minimal_tags[i] >= 0; i++); + tnfa->minimal_tags[i] = tag; + tnfa->minimal_tags[i + 1] = minimal_tag; + tnfa->minimal_tags[i + 2] = -1; + minimal_tag = -1; + num_minimals++; + } + tre_purge_regset(regset, tnfa, tag); + } + + regset[0] = -1; + tag = next_tag; + num_tags++; + next_tag++; + } + + if (node->num_submatches > 0) + { + /* The next two tags are reserved for markers. */ + next_tag++; + tag = next_tag; + next_tag++; + } + + break; + } + } + + if (node->submatch_id >= 0) + { + int i; + /* Push this submatch on the parents stack. */ + for (i = 0; parents[i] >= 0; i++); + parents[i] = node->submatch_id; + parents[i + 1] = -1; + } + + break; /* end case: ADDTAGS_RECURSE */ + + case ADDTAGS_AFTER_ITERATION: + { + int minimal = 0; + int enter_tag; + node = tre_stack_pop_voidptr(stack); + if (first_pass) + { + node->num_tags = ((tre_iteration_t *)node->obj)->arg->num_tags + + tre_stack_pop_int(stack); + minimal_tag = -1; + } + else + { + minimal = tre_stack_pop_int(stack); + enter_tag = tre_stack_pop_int(stack); + if (minimal) + minimal_tag = enter_tag; + } + + if (!first_pass) + { + if (minimal) + direction = TRE_TAG_MINIMIZE; + else + direction = TRE_TAG_MAXIMIZE; + } + break; + } + + case ADDTAGS_AFTER_CAT_LEFT: + { + int new_tag = tre_stack_pop_int(stack); + next_tag = tre_stack_pop_int(stack); + if (new_tag >= 0) + { + tag = new_tag; + } + break; + } + + case ADDTAGS_AFTER_CAT_RIGHT: + node = tre_stack_pop_voidptr(stack); + if (first_pass) + node->num_tags = ((tre_catenation_t *)node->obj)->left->num_tags + + ((tre_catenation_t *)node->obj)->right->num_tags; + break; + + case ADDTAGS_AFTER_UNION_LEFT: + /* Lift the bottom of the `regset' array so that when processing + the right operand the items currently in the array are + invisible. The original bottom was saved at ADDTAGS_UNION and + will be restored at ADDTAGS_AFTER_UNION_RIGHT below. */ + while (*regset >= 0) + regset++; + break; + + case ADDTAGS_AFTER_UNION_RIGHT: + { + int added_tags, tag_left, tag_right; + tre_ast_node_t *left = tre_stack_pop_voidptr(stack); + tre_ast_node_t *right = tre_stack_pop_voidptr(stack); + node = tre_stack_pop_voidptr(stack); + added_tags = tre_stack_pop_int(stack); + if (first_pass) + { + node->num_tags = ((tre_union_t *)node->obj)->left->num_tags + + ((tre_union_t *)node->obj)->right->num_tags + added_tags + + ((node->num_submatches > 0) ? 2 : 0); + } + regset = tre_stack_pop_voidptr(stack); + tag_left = tre_stack_pop_int(stack); + tag_right = tre_stack_pop_int(stack); + + /* Add tags after both children, the left child gets a smaller + tag than the right child. This guarantees that we prefer + the left child over the right child. */ + /* XXX - This is not always necessary (if the children have + tags which must be seen for every match of that child). */ + /* XXX - Check if this is the only place where tre_add_tag_right + is used. If so, use tre_add_tag_left (putting the tag before + the child as opposed after the child) and throw away + tre_add_tag_right. */ + if (node->num_submatches > 0) + { + if (!first_pass) + { + status = tre_add_tag_right(mem, left, tag_left); + tnfa->tag_directions[tag_left] = TRE_TAG_MAXIMIZE; + if (status == REG_OK) + status = tre_add_tag_right(mem, right, tag_right); + tnfa->tag_directions[tag_right] = TRE_TAG_MAXIMIZE; + } + num_tags += 2; + } + direction = TRE_TAG_MAXIMIZE; + break; + } + + default: + assert(0); + break; + + } /* end switch(symbol) */ + } /* end while(tre_stack_num_objects(stack) > bottom) */ + + if (!first_pass) + tre_purge_regset(regset, tnfa, tag); + + if (!first_pass && minimal_tag >= 0) + { + int i; + for (i = 0; tnfa->minimal_tags[i] >= 0; i++); + tnfa->minimal_tags[i] = tag; + tnfa->minimal_tags[i + 1] = minimal_tag; + tnfa->minimal_tags[i + 2] = -1; + minimal_tag = -1; + num_minimals++; + } + + assert(tree->num_tags == num_tags); + tnfa->end_tag = num_tags; + tnfa->num_tags = num_tags; + tnfa->num_minimals = num_minimals; + xfree(orig_regset); + xfree(parents); + xfree(saved_states); + return status; +} + + + +/* + AST to TNFA compilation routines. +*/ + +typedef enum { + COPY_RECURSE, + COPY_SET_RESULT_PTR +} tre_copyast_symbol_t; + +/* Flags for tre_copy_ast(). */ +#define COPY_REMOVE_TAGS 1 +#define COPY_MAXIMIZE_FIRST_TAG 2 + +static reg_errcode_t +tre_copy_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast, + int flags, int *pos_add, tre_tag_direction_t *tag_directions, + tre_ast_node_t **copy, int *max_pos) +{ + reg_errcode_t status = REG_OK; + int bottom = tre_stack_num_objects(stack); + int num_copied = 0; + int first_tag = 1; + tre_ast_node_t **result = copy; + tre_copyast_symbol_t symbol; + + STACK_PUSH(stack, voidptr, ast); + STACK_PUSH(stack, int, COPY_RECURSE); + + while (status == REG_OK && tre_stack_num_objects(stack) > bottom) + { + tre_ast_node_t *node; + if (status != REG_OK) + break; + + symbol = (tre_copyast_symbol_t)tre_stack_pop_int(stack); + switch (symbol) + { + case COPY_SET_RESULT_PTR: + result = tre_stack_pop_voidptr(stack); + break; + case COPY_RECURSE: + node = tre_stack_pop_voidptr(stack); + switch (node->type) + { + case LITERAL: + { + tre_literal_t *lit = node->obj; + int pos = lit->position; + int min = lit->code_min; + int max = lit->code_max; + if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) + { + /* XXX - e.g. [ab] has only one position but two + nodes, so we are creating holes in the state space + here. Not fatal, just wastes memory. */ + pos += *pos_add; + num_copied++; + } + else if (IS_TAG(lit) && (flags & COPY_REMOVE_TAGS)) + { + /* Change this tag to empty. */ + min = EMPTY; + max = pos = -1; + } + else if (IS_TAG(lit) && (flags & COPY_MAXIMIZE_FIRST_TAG) + && first_tag) + { + /* Maximize the first tag. */ + tag_directions[max] = TRE_TAG_MAXIMIZE; + first_tag = 0; + } + *result = tre_ast_new_literal(mem, min, max, pos); + if (*result == NULL) + status = REG_ESPACE; + else { + tre_literal_t *p = (*result)->obj; + p->class = lit->class; + p->neg_classes = lit->neg_classes; + } + + if (pos > *max_pos) + *max_pos = pos; + break; + } + case UNION: + { + tre_union_t *uni = node->obj; + tre_union_t *tmp; + *result = tre_ast_new_union(mem, uni->left, uni->right); + if (*result == NULL) + { + status = REG_ESPACE; + break; + } + tmp = (*result)->obj; + result = &tmp->left; + STACK_PUSHX(stack, voidptr, uni->right); + STACK_PUSHX(stack, int, COPY_RECURSE); + STACK_PUSHX(stack, voidptr, &tmp->right); + STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR); + STACK_PUSHX(stack, voidptr, uni->left); + STACK_PUSHX(stack, int, COPY_RECURSE); + break; + } + case CATENATION: + { + tre_catenation_t *cat = node->obj; + tre_catenation_t *tmp; + *result = tre_ast_new_catenation(mem, cat->left, cat->right); + if (*result == NULL) + { + status = REG_ESPACE; + break; + } + tmp = (*result)->obj; + tmp->left = NULL; + tmp->right = NULL; + result = &tmp->left; + + STACK_PUSHX(stack, voidptr, cat->right); + STACK_PUSHX(stack, int, COPY_RECURSE); + STACK_PUSHX(stack, voidptr, &tmp->right); + STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR); + STACK_PUSHX(stack, voidptr, cat->left); + STACK_PUSHX(stack, int, COPY_RECURSE); + break; + } + case ITERATION: + { + tre_iteration_t *iter = node->obj; + STACK_PUSHX(stack, voidptr, iter->arg); + STACK_PUSHX(stack, int, COPY_RECURSE); + *result = tre_ast_new_iter(mem, iter->arg, iter->min, + iter->max, iter->minimal); + if (*result == NULL) + { + status = REG_ESPACE; + break; + } + iter = (*result)->obj; + result = &iter->arg; + break; + } + default: + assert(0); + break; + } + break; + } + } + *pos_add += num_copied; + return status; +} + +typedef enum { + EXPAND_RECURSE, + EXPAND_AFTER_ITER +} tre_expand_ast_symbol_t; + +/* Expands each iteration node that has a finite nonzero minimum or maximum + iteration count to a catenated sequence of copies of the node. */ +static reg_errcode_t +tre_expand_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast, + int *position, tre_tag_direction_t *tag_directions) +{ + reg_errcode_t status = REG_OK; + int bottom = tre_stack_num_objects(stack); + int pos_add = 0; + int pos_add_total = 0; + int max_pos = 0; + int iter_depth = 0; + + STACK_PUSHR(stack, voidptr, ast); + STACK_PUSHR(stack, int, EXPAND_RECURSE); + while (status == REG_OK && tre_stack_num_objects(stack) > bottom) + { + tre_ast_node_t *node; + tre_expand_ast_symbol_t symbol; + + if (status != REG_OK) + break; + + symbol = (tre_expand_ast_symbol_t)tre_stack_pop_int(stack); + node = tre_stack_pop_voidptr(stack); + switch (symbol) + { + case EXPAND_RECURSE: + switch (node->type) + { + case LITERAL: + { + tre_literal_t *lit= node->obj; + if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) + { + lit->position += pos_add; + if (lit->position > max_pos) + max_pos = lit->position; + } + break; + } + case UNION: + { + tre_union_t *uni = node->obj; + STACK_PUSHX(stack, voidptr, uni->right); + STACK_PUSHX(stack, int, EXPAND_RECURSE); + STACK_PUSHX(stack, voidptr, uni->left); + STACK_PUSHX(stack, int, EXPAND_RECURSE); + break; + } + case CATENATION: + { + tre_catenation_t *cat = node->obj; + STACK_PUSHX(stack, voidptr, cat->right); + STACK_PUSHX(stack, int, EXPAND_RECURSE); + STACK_PUSHX(stack, voidptr, cat->left); + STACK_PUSHX(stack, int, EXPAND_RECURSE); + break; + } + case ITERATION: + { + tre_iteration_t *iter = node->obj; + STACK_PUSHX(stack, int, pos_add); + STACK_PUSHX(stack, voidptr, node); + STACK_PUSHX(stack, int, EXPAND_AFTER_ITER); + STACK_PUSHX(stack, voidptr, iter->arg); + STACK_PUSHX(stack, int, EXPAND_RECURSE); + /* If we are going to expand this node at EXPAND_AFTER_ITER + then don't increase the `pos' fields of the nodes now, it + will get done when expanding. */ + if (iter->min > 1 || iter->max > 1) + pos_add = 0; + iter_depth++; + break; + } + default: + assert(0); + break; + } + break; + case EXPAND_AFTER_ITER: + { + tre_iteration_t *iter = node->obj; + int pos_add_last; + pos_add = tre_stack_pop_int(stack); + pos_add_last = pos_add; + if (iter->min > 1 || iter->max > 1) + { + tre_ast_node_t *seq1 = NULL, *seq2 = NULL; + int j; + int pos_add_save = pos_add; + + /* Create a catenated sequence of copies of the node. */ + for (j = 0; j < iter->min; j++) + { + tre_ast_node_t *copy; + /* Remove tags from all but the last copy. */ + int flags = ((j + 1 < iter->min) + ? COPY_REMOVE_TAGS + : COPY_MAXIMIZE_FIRST_TAG); + pos_add_save = pos_add; + status = tre_copy_ast(mem, stack, iter->arg, flags, + &pos_add, tag_directions, ©, + &max_pos); + if (status != REG_OK) + return status; + if (seq1 != NULL) + seq1 = tre_ast_new_catenation(mem, seq1, copy); + else + seq1 = copy; + if (seq1 == NULL) + return REG_ESPACE; + } + + if (iter->max == -1) + { + /* No upper limit. */ + pos_add_save = pos_add; + status = tre_copy_ast(mem, stack, iter->arg, 0, + &pos_add, NULL, &seq2, &max_pos); + if (status != REG_OK) + return status; + seq2 = tre_ast_new_iter(mem, seq2, 0, -1, 0); + if (seq2 == NULL) + return REG_ESPACE; + } + else + { + for (j = iter->min; j < iter->max; j++) + { + tre_ast_node_t *tmp, *copy; + pos_add_save = pos_add; + status = tre_copy_ast(mem, stack, iter->arg, 0, + &pos_add, NULL, ©, &max_pos); + if (status != REG_OK) + return status; + if (seq2 != NULL) + seq2 = tre_ast_new_catenation(mem, copy, seq2); + else + seq2 = copy; + if (seq2 == NULL) + return REG_ESPACE; + tmp = tre_ast_new_literal(mem, EMPTY, -1, -1); + if (tmp == NULL) + return REG_ESPACE; + seq2 = tre_ast_new_union(mem, tmp, seq2); + if (seq2 == NULL) + return REG_ESPACE; + } + } + + pos_add = pos_add_save; + if (seq1 == NULL) + seq1 = seq2; + else if (seq2 != NULL) + seq1 = tre_ast_new_catenation(mem, seq1, seq2); + if (seq1 == NULL) + return REG_ESPACE; + node->obj = seq1->obj; + node->type = seq1->type; + } + + iter_depth--; + pos_add_total += pos_add - pos_add_last; + if (iter_depth == 0) + pos_add = pos_add_total; + + break; + } + default: + assert(0); + break; + } + } + + *position += pos_add_total; + + /* `max_pos' should never be larger than `*position' if the above + code works, but just an extra safeguard let's make sure + `*position' is set large enough so enough memory will be + allocated for the transition table. */ + if (max_pos > *position) + *position = max_pos; + + return status; +} + +static tre_pos_and_tags_t * +tre_set_empty(tre_mem_t mem) +{ + tre_pos_and_tags_t *new_set; + + new_set = tre_mem_calloc(mem, sizeof(*new_set)); + if (new_set == NULL) + return NULL; + + new_set[0].position = -1; + new_set[0].code_min = -1; + new_set[0].code_max = -1; + + return new_set; +} + +static tre_pos_and_tags_t * +tre_set_one(tre_mem_t mem, int position, int code_min, int code_max, + tre_ctype_t class, tre_ctype_t *neg_classes, int backref) +{ + tre_pos_and_tags_t *new_set; + + new_set = tre_mem_calloc(mem, sizeof(*new_set) * 2); + if (new_set == NULL) + return NULL; + + new_set[0].position = position; + new_set[0].code_min = code_min; + new_set[0].code_max = code_max; + new_set[0].class = class; + new_set[0].neg_classes = neg_classes; + new_set[0].backref = backref; + new_set[1].position = -1; + new_set[1].code_min = -1; + new_set[1].code_max = -1; + + return new_set; +} + +static tre_pos_and_tags_t * +tre_set_union(tre_mem_t mem, tre_pos_and_tags_t *set1, tre_pos_and_tags_t *set2, + int *tags, int assertions) +{ + int s1, s2, i, j; + tre_pos_and_tags_t *new_set; + int *new_tags; + int num_tags; + + for (num_tags = 0; tags != NULL && tags[num_tags] >= 0; num_tags++); + for (s1 = 0; set1[s1].position >= 0; s1++); + for (s2 = 0; set2[s2].position >= 0; s2++); + new_set = tre_mem_calloc(mem, sizeof(*new_set) * (s1 + s2 + 1)); + if (!new_set ) + return NULL; + + for (s1 = 0; set1[s1].position >= 0; s1++) + { + new_set[s1].position = set1[s1].position; + new_set[s1].code_min = set1[s1].code_min; + new_set[s1].code_max = set1[s1].code_max; + new_set[s1].assertions = set1[s1].assertions | assertions; + new_set[s1].class = set1[s1].class; + new_set[s1].neg_classes = set1[s1].neg_classes; + new_set[s1].backref = set1[s1].backref; + if (set1[s1].tags == NULL && tags == NULL) + new_set[s1].tags = NULL; + else + { + for (i = 0; set1[s1].tags != NULL && set1[s1].tags[i] >= 0; i++); + new_tags = tre_mem_alloc(mem, (sizeof(*new_tags) + * (i + num_tags + 1))); + if (new_tags == NULL) + return NULL; + for (j = 0; j < i; j++) + new_tags[j] = set1[s1].tags[j]; + for (i = 0; i < num_tags; i++) + new_tags[j + i] = tags[i]; + new_tags[j + i] = -1; + new_set[s1].tags = new_tags; + } + } + + for (s2 = 0; set2[s2].position >= 0; s2++) + { + new_set[s1 + s2].position = set2[s2].position; + new_set[s1 + s2].code_min = set2[s2].code_min; + new_set[s1 + s2].code_max = set2[s2].code_max; + /* XXX - why not | assertions here as well? */ + new_set[s1 + s2].assertions = set2[s2].assertions; + new_set[s1 + s2].class = set2[s2].class; + new_set[s1 + s2].neg_classes = set2[s2].neg_classes; + new_set[s1 + s2].backref = set2[s2].backref; + if (set2[s2].tags == NULL) + new_set[s1 + s2].tags = NULL; + else + { + for (i = 0; set2[s2].tags[i] >= 0; i++); + new_tags = tre_mem_alloc(mem, sizeof(*new_tags) * (i + 1)); + if (new_tags == NULL) + return NULL; + for (j = 0; j < i; j++) + new_tags[j] = set2[s2].tags[j]; + new_tags[j] = -1; + new_set[s1 + s2].tags = new_tags; + } + } + new_set[s1 + s2].position = -1; + return new_set; +} + +/* Finds the empty path through `node' which is the one that should be + taken according to POSIX.2 rules, and adds the tags on that path to + `tags'. `tags' may be NULL. If `num_tags_seen' is not NULL, it is + set to the number of tags seen on the path. */ +static reg_errcode_t +tre_match_empty(tre_stack_t *stack, tre_ast_node_t *node, int *tags, + int *assertions, int *num_tags_seen) +{ + tre_literal_t *lit; + tre_union_t *uni; + tre_catenation_t *cat; + tre_iteration_t *iter; + int i; + int bottom = tre_stack_num_objects(stack); + reg_errcode_t status = REG_OK; + if (num_tags_seen) + *num_tags_seen = 0; + + status = tre_stack_push_voidptr(stack, node); + + /* Walk through the tree recursively. */ + while (status == REG_OK && tre_stack_num_objects(stack) > bottom) + { + node = tre_stack_pop_voidptr(stack); + + switch (node->type) + { + case LITERAL: + lit = (tre_literal_t *)node->obj; + switch (lit->code_min) + { + case TAG: + if (lit->code_max >= 0) + { + if (tags != NULL) + { + /* Add the tag to `tags'. */ + for (i = 0; tags[i] >= 0; i++) + if (tags[i] == lit->code_max) + break; + if (tags[i] < 0) + { + tags[i] = lit->code_max; + tags[i + 1] = -1; + } + } + if (num_tags_seen) + (*num_tags_seen)++; + } + break; + case ASSERTION: + assert(lit->code_max >= 1 + || lit->code_max <= ASSERT_LAST); + if (assertions != NULL) + *assertions |= lit->code_max; + break; + case EMPTY: + break; + default: + assert(0); + break; + } + break; + + case UNION: + /* Subexpressions starting earlier take priority over ones + starting later, so we prefer the left subexpression over the + right subexpression. */ + uni = (tre_union_t *)node->obj; + if (uni->left->nullable) + STACK_PUSHX(stack, voidptr, uni->left) + else if (uni->right->nullable) + STACK_PUSHX(stack, voidptr, uni->right) + else + assert(0); + break; + + case CATENATION: + /* The path must go through both children. */ + cat = (tre_catenation_t *)node->obj; + assert(cat->left->nullable); + assert(cat->right->nullable); + STACK_PUSHX(stack, voidptr, cat->left); + STACK_PUSHX(stack, voidptr, cat->right); + break; + + case ITERATION: + /* A match with an empty string is preferred over no match at + all, so we go through the argument if possible. */ + iter = (tre_iteration_t *)node->obj; + if (iter->arg->nullable) + STACK_PUSHX(stack, voidptr, iter->arg); + break; + + default: + assert(0); + break; + } + } + + return status; +} + + +typedef enum { + NFL_RECURSE, + NFL_POST_UNION, + NFL_POST_CATENATION, + NFL_POST_ITERATION +} tre_nfl_stack_symbol_t; + + +/* Computes and fills in the fields `nullable', `firstpos', and `lastpos' for + the nodes of the AST `tree'. */ +static reg_errcode_t +tre_compute_nfl(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree) +{ + int bottom = tre_stack_num_objects(stack); + + STACK_PUSHR(stack, voidptr, tree); + STACK_PUSHR(stack, int, NFL_RECURSE); + + while (tre_stack_num_objects(stack) > bottom) + { + tre_nfl_stack_symbol_t symbol; + tre_ast_node_t *node; + + symbol = (tre_nfl_stack_symbol_t)tre_stack_pop_int(stack); + node = tre_stack_pop_voidptr(stack); + switch (symbol) + { + case NFL_RECURSE: + switch (node->type) + { + case LITERAL: + { + tre_literal_t *lit = (tre_literal_t *)node->obj; + if (IS_BACKREF(lit)) + { + /* Back references: nullable = false, firstpos = {i}, + lastpos = {i}. */ + node->nullable = 0; + node->firstpos = tre_set_one(mem, lit->position, 0, + TRE_CHAR_MAX, 0, NULL, -1); + if (!node->firstpos) + return REG_ESPACE; + node->lastpos = tre_set_one(mem, lit->position, 0, + TRE_CHAR_MAX, 0, NULL, + (int)lit->code_max); + if (!node->lastpos) + return REG_ESPACE; + } + else if (lit->code_min < 0) + { + /* Tags, empty strings, params, and zero width assertions: + nullable = true, firstpos = {}, and lastpos = {}. */ + node->nullable = 1; + node->firstpos = tre_set_empty(mem); + if (!node->firstpos) + return REG_ESPACE; + node->lastpos = tre_set_empty(mem); + if (!node->lastpos) + return REG_ESPACE; + } + else + { + /* Literal at position i: nullable = false, firstpos = {i}, + lastpos = {i}. */ + node->nullable = 0; + node->firstpos = + tre_set_one(mem, lit->position, (int)lit->code_min, + (int)lit->code_max, 0, NULL, -1); + if (!node->firstpos) + return REG_ESPACE; + node->lastpos = tre_set_one(mem, lit->position, + (int)lit->code_min, + (int)lit->code_max, + lit->class, lit->neg_classes, + -1); + if (!node->lastpos) + return REG_ESPACE; + } + break; + } + + case UNION: + /* Compute the attributes for the two subtrees, and after that + for this node. */ + STACK_PUSHR(stack, voidptr, node); + STACK_PUSHR(stack, int, NFL_POST_UNION); + STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->right); + STACK_PUSHR(stack, int, NFL_RECURSE); + STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->left); + STACK_PUSHR(stack, int, NFL_RECURSE); + break; + + case CATENATION: + /* Compute the attributes for the two subtrees, and after that + for this node. */ + STACK_PUSHR(stack, voidptr, node); + STACK_PUSHR(stack, int, NFL_POST_CATENATION); + STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->right); + STACK_PUSHR(stack, int, NFL_RECURSE); + STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->left); + STACK_PUSHR(stack, int, NFL_RECURSE); + break; + + case ITERATION: + /* Compute the attributes for the subtree, and after that for + this node. */ + STACK_PUSHR(stack, voidptr, node); + STACK_PUSHR(stack, int, NFL_POST_ITERATION); + STACK_PUSHR(stack, voidptr, ((tre_iteration_t *)node->obj)->arg); + STACK_PUSHR(stack, int, NFL_RECURSE); + break; + } + break; /* end case: NFL_RECURSE */ + + case NFL_POST_UNION: + { + tre_union_t *uni = (tre_union_t *)node->obj; + node->nullable = uni->left->nullable || uni->right->nullable; + node->firstpos = tre_set_union(mem, uni->left->firstpos, + uni->right->firstpos, NULL, 0); + if (!node->firstpos) + return REG_ESPACE; + node->lastpos = tre_set_union(mem, uni->left->lastpos, + uni->right->lastpos, NULL, 0); + if (!node->lastpos) + return REG_ESPACE; + break; + } + + case NFL_POST_ITERATION: + { + tre_iteration_t *iter = (tre_iteration_t *)node->obj; + + if (iter->min == 0 || iter->arg->nullable) + node->nullable = 1; + else + node->nullable = 0; + node->firstpos = iter->arg->firstpos; + node->lastpos = iter->arg->lastpos; + break; + } + + case NFL_POST_CATENATION: + { + int num_tags, *tags, assertions; + reg_errcode_t status; + tre_catenation_t *cat = node->obj; + node->nullable = cat->left->nullable && cat->right->nullable; + + /* Compute firstpos. */ + if (cat->left->nullable) + { + /* The left side matches the empty string. Make a first pass + with tre_match_empty() to get the number of tags and + parameters. */ + status = tre_match_empty(stack, cat->left, + NULL, NULL, &num_tags); + if (status != REG_OK) + return status; + /* Allocate arrays for the tags and parameters. */ + tags = xmalloc(sizeof(*tags) * (num_tags + 1)); + if (!tags) + return REG_ESPACE; + tags[0] = -1; + assertions = 0; + /* Second pass with tre_mach_empty() to get the list of + tags and parameters. */ + status = tre_match_empty(stack, cat->left, tags, + &assertions, NULL); + if (status != REG_OK) + { + xfree(tags); + return status; + } + node->firstpos = + tre_set_union(mem, cat->right->firstpos, cat->left->firstpos, + tags, assertions); + xfree(tags); + if (!node->firstpos) + return REG_ESPACE; + } + else + { + node->firstpos = cat->left->firstpos; + } + + /* Compute lastpos. */ + if (cat->right->nullable) + { + /* The right side matches the empty string. Make a first pass + with tre_match_empty() to get the number of tags and + parameters. */ + status = tre_match_empty(stack, cat->right, + NULL, NULL, &num_tags); + if (status != REG_OK) + return status; + /* Allocate arrays for the tags and parameters. */ + tags = xmalloc(sizeof(int) * (num_tags + 1)); + if (!tags) + return REG_ESPACE; + tags[0] = -1; + assertions = 0; + /* Second pass with tre_mach_empty() to get the list of + tags and parameters. */ + status = tre_match_empty(stack, cat->right, tags, + &assertions, NULL); + if (status != REG_OK) + { + xfree(tags); + return status; + } + node->lastpos = + tre_set_union(mem, cat->left->lastpos, cat->right->lastpos, + tags, assertions); + xfree(tags); + if (!node->lastpos) + return REG_ESPACE; + } + else + { + node->lastpos = cat->right->lastpos; + } + break; + } + + default: + assert(0); + break; + } + } + + return REG_OK; +} + + +/* Adds a transition from each position in `p1' to each position in `p2'. */ +static reg_errcode_t +tre_make_trans(tre_pos_and_tags_t *p1, tre_pos_and_tags_t *p2, + tre_tnfa_transition_t *transitions, + int *counts, int *offs) +{ + tre_pos_and_tags_t *orig_p2 = p2; + tre_tnfa_transition_t *trans; + int i, j, k, l, dup, prev_p2_pos; + + if (transitions != NULL) + while (p1->position >= 0) + { + p2 = orig_p2; + prev_p2_pos = -1; + while (p2->position >= 0) + { + /* Optimization: if this position was already handled, skip it. */ + if (p2->position == prev_p2_pos) + { + p2++; + continue; + } + prev_p2_pos = p2->position; + /* Set `trans' to point to the next unused transition from + position `p1->position'. */ + trans = transitions + offs[p1->position]; + while (trans->state != NULL) + { +#if 0 + /* If we find a previous transition from `p1->position' to + `p2->position', it is overwritten. This can happen only + if there are nested loops in the regexp, like in "((a)*)*". + In POSIX.2 repetition using the outer loop is always + preferred over using the inner loop. Therefore the + transition for the inner loop is useless and can be thrown + away. */ + /* XXX - The same position is used for all nodes in a bracket + expression, so this optimization cannot be used (it will + break bracket expressions) unless I figure out a way to + detect it here. */ + if (trans->state_id == p2->position) + { + break; + } +#endif + trans++; + } + + if (trans->state == NULL) + (trans + 1)->state = NULL; + /* Use the character ranges, assertions, etc. from `p1' for + the transition from `p1' to `p2'. */ + trans->code_min = p1->code_min; + trans->code_max = p1->code_max; + trans->state = transitions + offs[p2->position]; + trans->state_id = p2->position; + trans->assertions = p1->assertions | p2->assertions + | (p1->class ? ASSERT_CHAR_CLASS : 0) + | (p1->neg_classes != NULL ? ASSERT_CHAR_CLASS_NEG : 0); + if (p1->backref >= 0) + { + assert((trans->assertions & ASSERT_CHAR_CLASS) == 0); + assert(p2->backref < 0); + trans->u.backref = p1->backref; + trans->assertions |= ASSERT_BACKREF; + } + else + trans->u.class = p1->class; + if (p1->neg_classes != NULL) + { + for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++); + trans->neg_classes = + xmalloc(sizeof(*trans->neg_classes) * (i + 1)); + if (trans->neg_classes == NULL) + return REG_ESPACE; + for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++) + trans->neg_classes[i] = p1->neg_classes[i]; + trans->neg_classes[i] = (tre_ctype_t)0; + } + else + trans->neg_classes = NULL; + + /* Find out how many tags this transition has. */ + i = 0; + if (p1->tags != NULL) + while(p1->tags[i] >= 0) + i++; + j = 0; + if (p2->tags != NULL) + while(p2->tags[j] >= 0) + j++; + + /* If we are overwriting a transition, free the old tag array. */ + if (trans->tags != NULL) + xfree(trans->tags); + trans->tags = NULL; + + /* If there were any tags, allocate an array and fill it. */ + if (i + j > 0) + { + trans->tags = xmalloc(sizeof(*trans->tags) * (i + j + 1)); + if (!trans->tags) + return REG_ESPACE; + i = 0; + if (p1->tags != NULL) + while(p1->tags[i] >= 0) + { + trans->tags[i] = p1->tags[i]; + i++; + } + l = i; + j = 0; + if (p2->tags != NULL) + while (p2->tags[j] >= 0) + { + /* Don't add duplicates. */ + dup = 0; + for (k = 0; k < i; k++) + if (trans->tags[k] == p2->tags[j]) + { + dup = 1; + break; + } + if (!dup) + trans->tags[l++] = p2->tags[j]; + j++; + } + trans->tags[l] = -1; + } + + p2++; + } + p1++; + } + else + /* Compute a maximum limit for the number of transitions leaving + from each state. */ + while (p1->position >= 0) + { + p2 = orig_p2; + while (p2->position >= 0) + { + counts[p1->position]++; + p2++; + } + p1++; + } + return REG_OK; +} + +/* Converts the syntax tree to a TNFA. All the transitions in the TNFA are + labelled with one character range (there are no transitions on empty + strings). The TNFA takes O(n^2) space in the worst case, `n' is size of + the regexp. */ +static reg_errcode_t +tre_ast_to_tnfa(tre_ast_node_t *node, tre_tnfa_transition_t *transitions, + int *counts, int *offs) +{ + tre_union_t *uni; + tre_catenation_t *cat; + tre_iteration_t *iter; + reg_errcode_t errcode = REG_OK; + + /* XXX - recurse using a stack!. */ + switch (node->type) + { + case LITERAL: + break; + case UNION: + uni = (tre_union_t *)node->obj; + errcode = tre_ast_to_tnfa(uni->left, transitions, counts, offs); + if (errcode != REG_OK) + return errcode; + errcode = tre_ast_to_tnfa(uni->right, transitions, counts, offs); + break; + + case CATENATION: + cat = (tre_catenation_t *)node->obj; + /* Add a transition from each position in cat->left->lastpos + to each position in cat->right->firstpos. */ + errcode = tre_make_trans(cat->left->lastpos, cat->right->firstpos, + transitions, counts, offs); + if (errcode != REG_OK) + return errcode; + errcode = tre_ast_to_tnfa(cat->left, transitions, counts, offs); + if (errcode != REG_OK) + return errcode; + errcode = tre_ast_to_tnfa(cat->right, transitions, counts, offs); + break; + + case ITERATION: + iter = (tre_iteration_t *)node->obj; + assert(iter->max == -1 || iter->max == 1); + + if (iter->max == -1) + { + assert(iter->min == 0 || iter->min == 1); + /* Add a transition from each last position in the iterated + expression to each first position. */ + errcode = tre_make_trans(iter->arg->lastpos, iter->arg->firstpos, + transitions, counts, offs); + if (errcode != REG_OK) + return errcode; + } + errcode = tre_ast_to_tnfa(iter->arg, transitions, counts, offs); + break; + } + return errcode; +} + + +#define ERROR_EXIT(err) \ + do \ + { \ + errcode = err; \ + if (/*CONSTCOND*/1) \ + goto error_exit; \ + } \ + while (/*CONSTCOND*/0) + + +int +regcomp(regex_t *restrict preg, const char *restrict regex, int cflags) +{ + tre_stack_t *stack; + tre_ast_node_t *tree, *tmp_ast_l, *tmp_ast_r; + tre_pos_and_tags_t *p; + int *counts = NULL, *offs = NULL; + int i, add = 0; + tre_tnfa_transition_t *transitions, *initial; + tre_tnfa_t *tnfa = NULL; + tre_submatch_data_t *submatch_data; + tre_tag_direction_t *tag_directions = NULL; + reg_errcode_t errcode; + tre_mem_t mem; + + /* Parse context. */ + tre_parse_ctx_t parse_ctx; + + /* Allocate a stack used throughout the compilation process for various + purposes. */ + stack = tre_stack_new(512, 1024000, 128); + if (!stack) + return REG_ESPACE; + /* Allocate a fast memory allocator. */ + mem = tre_mem_new(); + if (!mem) + { + tre_stack_destroy(stack); + return REG_ESPACE; + } + + /* Parse the regexp. */ + memset(&parse_ctx, 0, sizeof(parse_ctx)); + parse_ctx.mem = mem; + parse_ctx.stack = stack; + parse_ctx.start = regex; + parse_ctx.cflags = cflags; + parse_ctx.max_backref = -1; + errcode = tre_parse(&parse_ctx); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + preg->re_nsub = parse_ctx.submatch_id - 1; + tree = parse_ctx.n; + +#ifdef TRE_DEBUG + tre_ast_print(tree); +#endif /* TRE_DEBUG */ + + /* Referring to nonexistent subexpressions is illegal. */ + if (parse_ctx.max_backref > (int)preg->re_nsub) + ERROR_EXIT(REG_ESUBREG); + + /* Allocate the TNFA struct. */ + tnfa = xcalloc(1, sizeof(tre_tnfa_t)); + if (tnfa == NULL) + ERROR_EXIT(REG_ESPACE); + tnfa->have_backrefs = parse_ctx.max_backref >= 0; + tnfa->have_approx = 0; + tnfa->num_submatches = parse_ctx.submatch_id; + + /* Set up tags for submatch addressing. If REG_NOSUB is set and the + regexp does not have back references, this can be skipped. */ + if (tnfa->have_backrefs || !(cflags & REG_NOSUB)) + { + + /* Figure out how many tags we will need. */ + errcode = tre_add_tags(NULL, stack, tree, tnfa); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + + if (tnfa->num_tags > 0) + { + tag_directions = xmalloc(sizeof(*tag_directions) + * (tnfa->num_tags + 1)); + if (tag_directions == NULL) + ERROR_EXIT(REG_ESPACE); + tnfa->tag_directions = tag_directions; + memset(tag_directions, -1, + sizeof(*tag_directions) * (tnfa->num_tags + 1)); + } + tnfa->minimal_tags = xcalloc((unsigned)tnfa->num_tags * 2 + 1, + sizeof(*tnfa->minimal_tags)); + if (tnfa->minimal_tags == NULL) + ERROR_EXIT(REG_ESPACE); + + submatch_data = xcalloc((unsigned)parse_ctx.submatch_id, + sizeof(*submatch_data)); + if (submatch_data == NULL) + ERROR_EXIT(REG_ESPACE); + tnfa->submatch_data = submatch_data; + + errcode = tre_add_tags(mem, stack, tree, tnfa); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + + } + + /* Expand iteration nodes. */ + errcode = tre_expand_ast(mem, stack, tree, &parse_ctx.position, + tag_directions); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + + /* Add a dummy node for the final state. + XXX - For certain patterns this dummy node can be optimized away, + for example "a*" or "ab*". Figure out a simple way to detect + this possibility. */ + tmp_ast_l = tree; + tmp_ast_r = tre_ast_new_literal(mem, 0, 0, parse_ctx.position++); + if (tmp_ast_r == NULL) + ERROR_EXIT(REG_ESPACE); + + tree = tre_ast_new_catenation(mem, tmp_ast_l, tmp_ast_r); + if (tree == NULL) + ERROR_EXIT(REG_ESPACE); + + errcode = tre_compute_nfl(mem, stack, tree); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + + counts = xmalloc(sizeof(int) * parse_ctx.position); + if (counts == NULL) + ERROR_EXIT(REG_ESPACE); + + offs = xmalloc(sizeof(int) * parse_ctx.position); + if (offs == NULL) + ERROR_EXIT(REG_ESPACE); + + for (i = 0; i < parse_ctx.position; i++) + counts[i] = 0; + tre_ast_to_tnfa(tree, NULL, counts, NULL); + + add = 0; + for (i = 0; i < parse_ctx.position; i++) + { + offs[i] = add; + add += counts[i] + 1; + counts[i] = 0; + } + transitions = xcalloc((unsigned)add + 1, sizeof(*transitions)); + if (transitions == NULL) + ERROR_EXIT(REG_ESPACE); + tnfa->transitions = transitions; + tnfa->num_transitions = add; + + errcode = tre_ast_to_tnfa(tree, transitions, counts, offs); + if (errcode != REG_OK) + ERROR_EXIT(errcode); + + tnfa->firstpos_chars = NULL; + + p = tree->firstpos; + i = 0; + while (p->position >= 0) + { + i++; + p++; + } + + initial = xcalloc((unsigned)i + 1, sizeof(tre_tnfa_transition_t)); + if (initial == NULL) + ERROR_EXIT(REG_ESPACE); + tnfa->initial = initial; + + i = 0; + for (p = tree->firstpos; p->position >= 0; p++) + { + initial[i].state = transitions + offs[p->position]; + initial[i].state_id = p->position; + initial[i].tags = NULL; + /* Copy the arrays p->tags, and p->params, they are allocated + from a tre_mem object. */ + if (p->tags) + { + int j; + for (j = 0; p->tags[j] >= 0; j++); + initial[i].tags = xmalloc(sizeof(*p->tags) * (j + 1)); + if (!initial[i].tags) + ERROR_EXIT(REG_ESPACE); + memcpy(initial[i].tags, p->tags, sizeof(*p->tags) * (j + 1)); + } + initial[i].assertions = p->assertions; + i++; + } + initial[i].state = NULL; + + tnfa->num_transitions = add; + tnfa->final = transitions + offs[tree->lastpos[0].position]; + tnfa->num_states = parse_ctx.position; + tnfa->cflags = cflags; + + tre_mem_destroy(mem); + tre_stack_destroy(stack); + xfree(counts); + xfree(offs); + + preg->TRE_REGEX_T_FIELD = (void *)tnfa; + return REG_OK; + + error_exit: + /* Free everything that was allocated and return the error code. */ + tre_mem_destroy(mem); + if (stack != NULL) + tre_stack_destroy(stack); + if (counts != NULL) + xfree(counts); + if (offs != NULL) + xfree(offs); + preg->TRE_REGEX_T_FIELD = (void *)tnfa; + regfree(preg); + return errcode; +} + + + + +void +regfree(regex_t *preg) +{ + tre_tnfa_t *tnfa; + unsigned int i; + tre_tnfa_transition_t *trans; + + tnfa = (void *)preg->TRE_REGEX_T_FIELD; + if (!tnfa) + return; + + for (i = 0; i < tnfa->num_transitions; i++) + if (tnfa->transitions[i].state) + { + if (tnfa->transitions[i].tags) + xfree(tnfa->transitions[i].tags); + if (tnfa->transitions[i].neg_classes) + xfree(tnfa->transitions[i].neg_classes); + } + if (tnfa->transitions) + xfree(tnfa->transitions); + + if (tnfa->initial) + { + for (trans = tnfa->initial; trans->state; trans++) + { + if (trans->tags) + xfree(trans->tags); + } + xfree(tnfa->initial); + } + + if (tnfa->submatch_data) + { + for (i = 0; i < tnfa->num_submatches; i++) + if (tnfa->submatch_data[i].parents) + xfree(tnfa->submatch_data[i].parents); + xfree(tnfa->submatch_data); + } + + if (tnfa->tag_directions) + xfree(tnfa->tag_directions); + if (tnfa->firstpos_chars) + xfree(tnfa->firstpos_chars); + if (tnfa->minimal_tags) + xfree(tnfa->minimal_tags); + xfree(tnfa); +} diff --git a/vendor/modernc.org/libc/musl/src/regex/regerror.c b/vendor/modernc.org/libc/musl/src/regex/regerror.c new file mode 100644 index 000000000..5b347cc73 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/regerror.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include "locale_impl.h" + +/* Error message strings for error codes listed in `regex.h'. This list + needs to be in sync with the codes listed there, naturally. */ + +/* Converted to single string by Rich Felker to remove the need for + * data relocations at runtime, 27 Feb 2006. */ + +static const char messages[] = { + "No error\0" + "No match\0" + "Invalid regexp\0" + "Unknown collating element\0" + "Unknown character class name\0" + "Trailing backslash\0" + "Invalid back reference\0" + "Missing ']'\0" + "Missing ')'\0" + "Missing '}'\0" + "Invalid contents of {}\0" + "Invalid character range\0" + "Out of memory\0" + "Repetition not preceded by valid expression\0" + "\0Unknown error" +}; + +size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t size) +{ + const char *s; + for (s=messages; e && *s; e--, s+=strlen(s)+1); + if (!*s) s++; + s = LCTRANS_CUR(s); + return 1+snprintf(buf, size, "%s", s); +} diff --git a/vendor/modernc.org/libc/musl/src/regex/regexec.c b/vendor/modernc.org/libc/musl/src/regex/regexec.c new file mode 100644 index 000000000..253b0e149 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/regexec.c @@ -0,0 +1,1028 @@ +/* + regexec.c - TRE POSIX compatible matching functions (and more). + + Copyright (c) 2001-2009 Ville Laurikari + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include +#include +#include +#include +#include +#include + +#include + +#include "tre.h" + +#include + +static void +tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags, + const tre_tnfa_t *tnfa, regoff_t *tags, regoff_t match_eo); + +/*********************************************************************** + from tre-match-utils.h +***********************************************************************/ + +#define GET_NEXT_WCHAR() do { \ + prev_c = next_c; pos += pos_add_next; \ + if ((pos_add_next = mbtowc(&next_c, str_byte, MB_LEN_MAX)) <= 0) { \ + if (pos_add_next < 0) { ret = REG_NOMATCH; goto error_exit; } \ + else pos_add_next++; \ + } \ + str_byte += pos_add_next; \ + } while (0) + +#define IS_WORD_CHAR(c) ((c) == L'_' || tre_isalnum(c)) + +#define CHECK_ASSERTIONS(assertions) \ + (((assertions & ASSERT_AT_BOL) \ + && (pos > 0 || reg_notbol) \ + && (prev_c != L'\n' || !reg_newline)) \ + || ((assertions & ASSERT_AT_EOL) \ + && (next_c != L'\0' || reg_noteol) \ + && (next_c != L'\n' || !reg_newline)) \ + || ((assertions & ASSERT_AT_BOW) \ + && (IS_WORD_CHAR(prev_c) || !IS_WORD_CHAR(next_c))) \ + || ((assertions & ASSERT_AT_EOW) \ + && (!IS_WORD_CHAR(prev_c) || IS_WORD_CHAR(next_c))) \ + || ((assertions & ASSERT_AT_WB) \ + && (pos != 0 && next_c != L'\0' \ + && IS_WORD_CHAR(prev_c) == IS_WORD_CHAR(next_c))) \ + || ((assertions & ASSERT_AT_WB_NEG) \ + && (pos == 0 || next_c == L'\0' \ + || IS_WORD_CHAR(prev_c) != IS_WORD_CHAR(next_c)))) + +#define CHECK_CHAR_CLASSES(trans_i, tnfa, eflags) \ + (((trans_i->assertions & ASSERT_CHAR_CLASS) \ + && !(tnfa->cflags & REG_ICASE) \ + && !tre_isctype((tre_cint_t)prev_c, trans_i->u.class)) \ + || ((trans_i->assertions & ASSERT_CHAR_CLASS) \ + && (tnfa->cflags & REG_ICASE) \ + && !tre_isctype(tre_tolower((tre_cint_t)prev_c),trans_i->u.class) \ + && !tre_isctype(tre_toupper((tre_cint_t)prev_c),trans_i->u.class)) \ + || ((trans_i->assertions & ASSERT_CHAR_CLASS_NEG) \ + && tre_neg_char_classes_match(trans_i->neg_classes,(tre_cint_t)prev_c,\ + tnfa->cflags & REG_ICASE))) + + + + +/* Returns 1 if `t1' wins `t2', 0 otherwise. */ +static int +tre_tag_order(int num_tags, tre_tag_direction_t *tag_directions, + regoff_t *t1, regoff_t *t2) +{ + int i; + for (i = 0; i < num_tags; i++) + { + if (tag_directions[i] == TRE_TAG_MINIMIZE) + { + if (t1[i] < t2[i]) + return 1; + if (t1[i] > t2[i]) + return 0; + } + else + { + if (t1[i] > t2[i]) + return 1; + if (t1[i] < t2[i]) + return 0; + } + } + /* assert(0);*/ + return 0; +} + +static int +tre_neg_char_classes_match(tre_ctype_t *classes, tre_cint_t wc, int icase) +{ + while (*classes != (tre_ctype_t)0) + if ((!icase && tre_isctype(wc, *classes)) + || (icase && (tre_isctype(tre_toupper(wc), *classes) + || tre_isctype(tre_tolower(wc), *classes)))) + return 1; /* Match. */ + else + classes++; + return 0; /* No match. */ +} + + +/*********************************************************************** + from tre-match-parallel.c +***********************************************************************/ + +/* + This algorithm searches for matches basically by reading characters + in the searched string one by one, starting at the beginning. All + matching paths in the TNFA are traversed in parallel. When two or + more paths reach the same state, exactly one is chosen according to + tag ordering rules; if returning submatches is not required it does + not matter which path is chosen. + + The worst case time required for finding the leftmost and longest + match, or determining that there is no match, is always linearly + dependent on the length of the text being searched. + + This algorithm cannot handle TNFAs with back referencing nodes. + See `tre-match-backtrack.c'. +*/ + +typedef struct { + tre_tnfa_transition_t *state; + regoff_t *tags; +} tre_tnfa_reach_t; + +typedef struct { + regoff_t pos; + regoff_t **tags; +} tre_reach_pos_t; + + +static reg_errcode_t +tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, + regoff_t *match_tags, int eflags, + regoff_t *match_end_ofs) +{ + /* State variables required by GET_NEXT_WCHAR. */ + tre_char_t prev_c = 0, next_c = 0; + const char *str_byte = string; + regoff_t pos = -1; + regoff_t pos_add_next = 1; +#ifdef TRE_MBSTATE + mbstate_t mbstate; +#endif /* TRE_MBSTATE */ + int reg_notbol = eflags & REG_NOTBOL; + int reg_noteol = eflags & REG_NOTEOL; + int reg_newline = tnfa->cflags & REG_NEWLINE; + reg_errcode_t ret; + + char *buf; + tre_tnfa_transition_t *trans_i; + tre_tnfa_reach_t *reach, *reach_next, *reach_i, *reach_next_i; + tre_reach_pos_t *reach_pos; + int *tag_i; + int num_tags, i; + + regoff_t match_eo = -1; /* end offset of match (-1 if no match found yet) */ + int new_match = 0; + regoff_t *tmp_tags = NULL; + regoff_t *tmp_iptr; + +#ifdef TRE_MBSTATE + memset(&mbstate, '\0', sizeof(mbstate)); +#endif /* TRE_MBSTATE */ + + if (!match_tags) + num_tags = 0; + else + num_tags = tnfa->num_tags; + + /* Allocate memory for temporary data required for matching. This needs to + be done for every matching operation to be thread safe. This allocates + everything in a single large block with calloc(). */ + { + size_t tbytes, rbytes, pbytes, xbytes, total_bytes; + char *tmp_buf; + + /* Ensure that tbytes and xbytes*num_states cannot overflow, and that + * they don't contribute more than 1/8 of SIZE_MAX to total_bytes. */ + if (num_tags > SIZE_MAX/(8 * sizeof(regoff_t) * tnfa->num_states)) + return REG_ESPACE; + + /* Likewise check rbytes. */ + if (tnfa->num_states+1 > SIZE_MAX/(8 * sizeof(*reach_next))) + return REG_ESPACE; + + /* Likewise check pbytes. */ + if (tnfa->num_states > SIZE_MAX/(8 * sizeof(*reach_pos))) + return REG_ESPACE; + + /* Compute the length of the block we need. */ + tbytes = sizeof(*tmp_tags) * num_tags; + rbytes = sizeof(*reach_next) * (tnfa->num_states + 1); + pbytes = sizeof(*reach_pos) * tnfa->num_states; + xbytes = sizeof(regoff_t) * num_tags; + total_bytes = + (sizeof(long) - 1) * 4 /* for alignment paddings */ + + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes; + + /* Allocate the memory. */ + buf = calloc(total_bytes, 1); + if (buf == NULL) + return REG_ESPACE; + + /* Get the various pointers within tmp_buf (properly aligned). */ + tmp_tags = (void *)buf; + tmp_buf = buf + tbytes; + tmp_buf += ALIGN(tmp_buf, long); + reach_next = (void *)tmp_buf; + tmp_buf += rbytes; + tmp_buf += ALIGN(tmp_buf, long); + reach = (void *)tmp_buf; + tmp_buf += rbytes; + tmp_buf += ALIGN(tmp_buf, long); + reach_pos = (void *)tmp_buf; + tmp_buf += pbytes; + tmp_buf += ALIGN(tmp_buf, long); + for (i = 0; i < tnfa->num_states; i++) + { + reach[i].tags = (void *)tmp_buf; + tmp_buf += xbytes; + reach_next[i].tags = (void *)tmp_buf; + tmp_buf += xbytes; + } + } + + for (i = 0; i < tnfa->num_states; i++) + reach_pos[i].pos = -1; + + GET_NEXT_WCHAR(); + pos = 0; + + reach_next_i = reach_next; + while (1) + { + /* If no match found yet, add the initial states to `reach_next'. */ + if (match_eo < 0) + { + trans_i = tnfa->initial; + while (trans_i->state != NULL) + { + if (reach_pos[trans_i->state_id].pos < pos) + { + if (trans_i->assertions + && CHECK_ASSERTIONS(trans_i->assertions)) + { + trans_i++; + continue; + } + + reach_next_i->state = trans_i->state; + for (i = 0; i < num_tags; i++) + reach_next_i->tags[i] = -1; + tag_i = trans_i->tags; + if (tag_i) + while (*tag_i >= 0) + { + if (*tag_i < num_tags) + reach_next_i->tags[*tag_i] = pos; + tag_i++; + } + if (reach_next_i->state == tnfa->final) + { + match_eo = pos; + new_match = 1; + for (i = 0; i < num_tags; i++) + match_tags[i] = reach_next_i->tags[i]; + } + reach_pos[trans_i->state_id].pos = pos; + reach_pos[trans_i->state_id].tags = &reach_next_i->tags; + reach_next_i++; + } + trans_i++; + } + reach_next_i->state = NULL; + } + else + { + if (num_tags == 0 || reach_next_i == reach_next) + /* We have found a match. */ + break; + } + + /* Check for end of string. */ + if (!next_c) break; + + GET_NEXT_WCHAR(); + + /* Swap `reach' and `reach_next'. */ + reach_i = reach; + reach = reach_next; + reach_next = reach_i; + + /* For each state in `reach', weed out states that don't fulfill the + minimal matching conditions. */ + if (tnfa->num_minimals && new_match) + { + new_match = 0; + reach_next_i = reach_next; + for (reach_i = reach; reach_i->state; reach_i++) + { + int skip = 0; + for (i = 0; tnfa->minimal_tags[i] >= 0; i += 2) + { + int end = tnfa->minimal_tags[i]; + int start = tnfa->minimal_tags[i + 1]; + if (end >= num_tags) + { + skip = 1; + break; + } + else if (reach_i->tags[start] == match_tags[start] + && reach_i->tags[end] < match_tags[end]) + { + skip = 1; + break; + } + } + if (!skip) + { + reach_next_i->state = reach_i->state; + tmp_iptr = reach_next_i->tags; + reach_next_i->tags = reach_i->tags; + reach_i->tags = tmp_iptr; + reach_next_i++; + } + } + reach_next_i->state = NULL; + + /* Swap `reach' and `reach_next'. */ + reach_i = reach; + reach = reach_next; + reach_next = reach_i; + } + + /* For each state in `reach' see if there is a transition leaving with + the current input symbol to a state not yet in `reach_next', and + add the destination states to `reach_next'. */ + reach_next_i = reach_next; + for (reach_i = reach; reach_i->state; reach_i++) + { + for (trans_i = reach_i->state; trans_i->state; trans_i++) + { + /* Does this transition match the input symbol? */ + if (trans_i->code_min <= (tre_cint_t)prev_c && + trans_i->code_max >= (tre_cint_t)prev_c) + { + if (trans_i->assertions + && (CHECK_ASSERTIONS(trans_i->assertions) + || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags))) + { + continue; + } + + /* Compute the tags after this transition. */ + for (i = 0; i < num_tags; i++) + tmp_tags[i] = reach_i->tags[i]; + tag_i = trans_i->tags; + if (tag_i != NULL) + while (*tag_i >= 0) + { + if (*tag_i < num_tags) + tmp_tags[*tag_i] = pos; + tag_i++; + } + + if (reach_pos[trans_i->state_id].pos < pos) + { + /* Found an unvisited node. */ + reach_next_i->state = trans_i->state; + tmp_iptr = reach_next_i->tags; + reach_next_i->tags = tmp_tags; + tmp_tags = tmp_iptr; + reach_pos[trans_i->state_id].pos = pos; + reach_pos[trans_i->state_id].tags = &reach_next_i->tags; + + if (reach_next_i->state == tnfa->final + && (match_eo == -1 + || (num_tags > 0 + && reach_next_i->tags[0] <= match_tags[0]))) + { + match_eo = pos; + new_match = 1; + for (i = 0; i < num_tags; i++) + match_tags[i] = reach_next_i->tags[i]; + } + reach_next_i++; + + } + else + { + assert(reach_pos[trans_i->state_id].pos == pos); + /* Another path has also reached this state. We choose + the winner by examining the tag values for both + paths. */ + if (tre_tag_order(num_tags, tnfa->tag_directions, + tmp_tags, + *reach_pos[trans_i->state_id].tags)) + { + /* The new path wins. */ + tmp_iptr = *reach_pos[trans_i->state_id].tags; + *reach_pos[trans_i->state_id].tags = tmp_tags; + if (trans_i->state == tnfa->final) + { + match_eo = pos; + new_match = 1; + for (i = 0; i < num_tags; i++) + match_tags[i] = tmp_tags[i]; + } + tmp_tags = tmp_iptr; + } + } + } + } + } + reach_next_i->state = NULL; + } + + *match_end_ofs = match_eo; + ret = match_eo >= 0 ? REG_OK : REG_NOMATCH; +error_exit: + xfree(buf); + return ret; +} + + + +/*********************************************************************** + from tre-match-backtrack.c +***********************************************************************/ + +/* + This matcher is for regexps that use back referencing. Regexp matching + with back referencing is an NP-complete problem on the number of back + references. The easiest way to match them is to use a backtracking + routine which basically goes through all possible paths in the TNFA + and chooses the one which results in the best (leftmost and longest) + match. This can be spectacularly expensive and may run out of stack + space, but there really is no better known generic algorithm. Quoting + Henry Spencer from comp.compilers: + + + POSIX.2 REs require longest match, which is really exciting to + implement since the obsolete ("basic") variant also includes + \. I haven't found a better way of tackling this than doing + a preliminary match using a DFA (or simulation) on a modified RE + that just replicates subREs for \, and then doing a + backtracking match to determine whether the subRE matches were + right. This can be rather slow, but I console myself with the + thought that people who use \ deserve very slow execution. + (Pun unintentional but very appropriate.) + +*/ + +typedef struct { + regoff_t pos; + const char *str_byte; + tre_tnfa_transition_t *state; + int state_id; + int next_c; + regoff_t *tags; +#ifdef TRE_MBSTATE + mbstate_t mbstate; +#endif /* TRE_MBSTATE */ +} tre_backtrack_item_t; + +typedef struct tre_backtrack_struct { + tre_backtrack_item_t item; + struct tre_backtrack_struct *prev; + struct tre_backtrack_struct *next; +} *tre_backtrack_t; + +#ifdef TRE_MBSTATE +#define BT_STACK_MBSTATE_IN stack->item.mbstate = (mbstate) +#define BT_STACK_MBSTATE_OUT (mbstate) = stack->item.mbstate +#else /* !TRE_MBSTATE */ +#define BT_STACK_MBSTATE_IN +#define BT_STACK_MBSTATE_OUT +#endif /* !TRE_MBSTATE */ + +#define tre_bt_mem_new tre_mem_new +#define tre_bt_mem_alloc tre_mem_alloc +#define tre_bt_mem_destroy tre_mem_destroy + + +#define BT_STACK_PUSH(_pos, _str_byte, _str_wide, _state, _state_id, _next_c, _tags, _mbstate) \ + do \ + { \ + int i; \ + if (!stack->next) \ + { \ + tre_backtrack_t s; \ + s = tre_bt_mem_alloc(mem, sizeof(*s)); \ + if (!s) \ + { \ + tre_bt_mem_destroy(mem); \ + if (tags) \ + xfree(tags); \ + if (pmatch) \ + xfree(pmatch); \ + if (states_seen) \ + xfree(states_seen); \ + return REG_ESPACE; \ + } \ + s->prev = stack; \ + s->next = NULL; \ + s->item.tags = tre_bt_mem_alloc(mem, \ + sizeof(*tags) * tnfa->num_tags); \ + if (!s->item.tags) \ + { \ + tre_bt_mem_destroy(mem); \ + if (tags) \ + xfree(tags); \ + if (pmatch) \ + xfree(pmatch); \ + if (states_seen) \ + xfree(states_seen); \ + return REG_ESPACE; \ + } \ + stack->next = s; \ + stack = s; \ + } \ + else \ + stack = stack->next; \ + stack->item.pos = (_pos); \ + stack->item.str_byte = (_str_byte); \ + stack->item.state = (_state); \ + stack->item.state_id = (_state_id); \ + stack->item.next_c = (_next_c); \ + for (i = 0; i < tnfa->num_tags; i++) \ + stack->item.tags[i] = (_tags)[i]; \ + BT_STACK_MBSTATE_IN; \ + } \ + while (0) + +#define BT_STACK_POP() \ + do \ + { \ + int i; \ + assert(stack->prev); \ + pos = stack->item.pos; \ + str_byte = stack->item.str_byte; \ + state = stack->item.state; \ + next_c = stack->item.next_c; \ + for (i = 0; i < tnfa->num_tags; i++) \ + tags[i] = stack->item.tags[i]; \ + BT_STACK_MBSTATE_OUT; \ + stack = stack->prev; \ + } \ + while (0) + +#undef MIN +#define MIN(a, b) ((a) <= (b) ? (a) : (b)) + +static reg_errcode_t +tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string, + regoff_t *match_tags, int eflags, regoff_t *match_end_ofs) +{ + /* State variables required by GET_NEXT_WCHAR. */ + tre_char_t prev_c = 0, next_c = 0; + const char *str_byte = string; + regoff_t pos = 0; + regoff_t pos_add_next = 1; +#ifdef TRE_MBSTATE + mbstate_t mbstate; +#endif /* TRE_MBSTATE */ + int reg_notbol = eflags & REG_NOTBOL; + int reg_noteol = eflags & REG_NOTEOL; + int reg_newline = tnfa->cflags & REG_NEWLINE; + + /* These are used to remember the necessary values of the above + variables to return to the position where the current search + started from. */ + int next_c_start; + const char *str_byte_start; + regoff_t pos_start = -1; +#ifdef TRE_MBSTATE + mbstate_t mbstate_start; +#endif /* TRE_MBSTATE */ + + /* End offset of best match so far, or -1 if no match found yet. */ + regoff_t match_eo = -1; + /* Tag arrays. */ + int *next_tags; + regoff_t *tags = NULL; + /* Current TNFA state. */ + tre_tnfa_transition_t *state; + int *states_seen = NULL; + + /* Memory allocator to for allocating the backtracking stack. */ + tre_mem_t mem = tre_bt_mem_new(); + + /* The backtracking stack. */ + tre_backtrack_t stack; + + tre_tnfa_transition_t *trans_i; + regmatch_t *pmatch = NULL; + int ret; + +#ifdef TRE_MBSTATE + memset(&mbstate, '\0', sizeof(mbstate)); +#endif /* TRE_MBSTATE */ + + if (!mem) + return REG_ESPACE; + stack = tre_bt_mem_alloc(mem, sizeof(*stack)); + if (!stack) + { + ret = REG_ESPACE; + goto error_exit; + } + stack->prev = NULL; + stack->next = NULL; + + if (tnfa->num_tags) + { + tags = xmalloc(sizeof(*tags) * tnfa->num_tags); + if (!tags) + { + ret = REG_ESPACE; + goto error_exit; + } + } + if (tnfa->num_submatches) + { + pmatch = xmalloc(sizeof(*pmatch) * tnfa->num_submatches); + if (!pmatch) + { + ret = REG_ESPACE; + goto error_exit; + } + } + if (tnfa->num_states) + { + states_seen = xmalloc(sizeof(*states_seen) * tnfa->num_states); + if (!states_seen) + { + ret = REG_ESPACE; + goto error_exit; + } + } + + retry: + { + int i; + for (i = 0; i < tnfa->num_tags; i++) + { + tags[i] = -1; + if (match_tags) + match_tags[i] = -1; + } + for (i = 0; i < tnfa->num_states; i++) + states_seen[i] = 0; + } + + state = NULL; + pos = pos_start; + GET_NEXT_WCHAR(); + pos_start = pos; + next_c_start = next_c; + str_byte_start = str_byte; +#ifdef TRE_MBSTATE + mbstate_start = mbstate; +#endif /* TRE_MBSTATE */ + + /* Handle initial states. */ + next_tags = NULL; + for (trans_i = tnfa->initial; trans_i->state; trans_i++) + { + if (trans_i->assertions && CHECK_ASSERTIONS(trans_i->assertions)) + { + continue; + } + if (state == NULL) + { + /* Start from this state. */ + state = trans_i->state; + next_tags = trans_i->tags; + } + else + { + /* Backtrack to this state. */ + BT_STACK_PUSH(pos, str_byte, 0, trans_i->state, + trans_i->state_id, next_c, tags, mbstate); + { + int *tmp = trans_i->tags; + if (tmp) + while (*tmp >= 0) + stack->item.tags[*tmp++] = pos; + } + } + } + + if (next_tags) + for (; *next_tags >= 0; next_tags++) + tags[*next_tags] = pos; + + + if (state == NULL) + goto backtrack; + + while (1) + { + tre_tnfa_transition_t *next_state; + int empty_br_match; + + if (state == tnfa->final) + { + if (match_eo < pos + || (match_eo == pos + && match_tags + && tre_tag_order(tnfa->num_tags, tnfa->tag_directions, + tags, match_tags))) + { + int i; + /* This match wins the previous match. */ + match_eo = pos; + if (match_tags) + for (i = 0; i < tnfa->num_tags; i++) + match_tags[i] = tags[i]; + } + /* Our TNFAs never have transitions leaving from the final state, + so we jump right to backtracking. */ + goto backtrack; + } + + /* Go to the next character in the input string. */ + empty_br_match = 0; + trans_i = state; + if (trans_i->state && trans_i->assertions & ASSERT_BACKREF) + { + /* This is a back reference state. All transitions leaving from + this state have the same back reference "assertion". Instead + of reading the next character, we match the back reference. */ + regoff_t so, eo; + int bt = trans_i->u.backref; + regoff_t bt_len; + int result; + + /* Get the substring we need to match against. Remember to + turn off REG_NOSUB temporarily. */ + tre_fill_pmatch(bt + 1, pmatch, tnfa->cflags & ~REG_NOSUB, + tnfa, tags, pos); + so = pmatch[bt].rm_so; + eo = pmatch[bt].rm_eo; + bt_len = eo - so; + + result = strncmp((const char*)string + so, str_byte - 1, + (size_t)bt_len); + + if (result == 0) + { + /* Back reference matched. Check for infinite loop. */ + if (bt_len == 0) + empty_br_match = 1; + if (empty_br_match && states_seen[trans_i->state_id]) + { + goto backtrack; + } + + states_seen[trans_i->state_id] = empty_br_match; + + /* Advance in input string and resync `prev_c', `next_c' + and pos. */ + str_byte += bt_len - 1; + pos += bt_len - 1; + GET_NEXT_WCHAR(); + } + else + { + goto backtrack; + } + } + else + { + /* Check for end of string. */ + if (next_c == L'\0') + goto backtrack; + + /* Read the next character. */ + GET_NEXT_WCHAR(); + } + + next_state = NULL; + for (trans_i = state; trans_i->state; trans_i++) + { + if (trans_i->code_min <= (tre_cint_t)prev_c + && trans_i->code_max >= (tre_cint_t)prev_c) + { + if (trans_i->assertions + && (CHECK_ASSERTIONS(trans_i->assertions) + || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags))) + { + continue; + } + + if (next_state == NULL) + { + /* First matching transition. */ + next_state = trans_i->state; + next_tags = trans_i->tags; + } + else + { + /* Second matching transition. We may need to backtrack here + to take this transition instead of the first one, so we + push this transition in the backtracking stack so we can + jump back here if needed. */ + BT_STACK_PUSH(pos, str_byte, 0, trans_i->state, + trans_i->state_id, next_c, tags, mbstate); + { + int *tmp; + for (tmp = trans_i->tags; tmp && *tmp >= 0; tmp++) + stack->item.tags[*tmp] = pos; + } +#if 0 /* XXX - it's important not to look at all transitions here to keep + the stack small! */ + break; +#endif + } + } + } + + if (next_state != NULL) + { + /* Matching transitions were found. Take the first one. */ + state = next_state; + + /* Update the tag values. */ + if (next_tags) + while (*next_tags >= 0) + tags[*next_tags++] = pos; + } + else + { + backtrack: + /* A matching transition was not found. Try to backtrack. */ + if (stack->prev) + { + if (stack->item.state->assertions & ASSERT_BACKREF) + { + states_seen[stack->item.state_id] = 0; + } + + BT_STACK_POP(); + } + else if (match_eo < 0) + { + /* Try starting from a later position in the input string. */ + /* Check for end of string. */ + if (next_c == L'\0') + { + break; + } + next_c = next_c_start; +#ifdef TRE_MBSTATE + mbstate = mbstate_start; +#endif /* TRE_MBSTATE */ + str_byte = str_byte_start; + goto retry; + } + else + { + break; + } + } + } + + ret = match_eo >= 0 ? REG_OK : REG_NOMATCH; + *match_end_ofs = match_eo; + + error_exit: + tre_bt_mem_destroy(mem); +#ifndef TRE_USE_ALLOCA + if (tags) + xfree(tags); + if (pmatch) + xfree(pmatch); + if (states_seen) + xfree(states_seen); +#endif /* !TRE_USE_ALLOCA */ + + return ret; +} + +/*********************************************************************** + from regexec.c +***********************************************************************/ + +/* Fills the POSIX.2 regmatch_t array according to the TNFA tag and match + endpoint values. */ +static void +tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags, + const tre_tnfa_t *tnfa, regoff_t *tags, regoff_t match_eo) +{ + tre_submatch_data_t *submatch_data; + unsigned int i, j; + int *parents; + + i = 0; + if (match_eo >= 0 && !(cflags & REG_NOSUB)) + { + /* Construct submatch offsets from the tags. */ + submatch_data = tnfa->submatch_data; + while (i < tnfa->num_submatches && i < nmatch) + { + if (submatch_data[i].so_tag == tnfa->end_tag) + pmatch[i].rm_so = match_eo; + else + pmatch[i].rm_so = tags[submatch_data[i].so_tag]; + + if (submatch_data[i].eo_tag == tnfa->end_tag) + pmatch[i].rm_eo = match_eo; + else + pmatch[i].rm_eo = tags[submatch_data[i].eo_tag]; + + /* If either of the endpoints were not used, this submatch + was not part of the match. */ + if (pmatch[i].rm_so == -1 || pmatch[i].rm_eo == -1) + pmatch[i].rm_so = pmatch[i].rm_eo = -1; + + i++; + } + /* Reset all submatches that are not within all of their parent + submatches. */ + i = 0; + while (i < tnfa->num_submatches && i < nmatch) + { + if (pmatch[i].rm_eo == -1) + assert(pmatch[i].rm_so == -1); + assert(pmatch[i].rm_so <= pmatch[i].rm_eo); + + parents = submatch_data[i].parents; + if (parents != NULL) + for (j = 0; parents[j] >= 0; j++) + { + if (pmatch[i].rm_so < pmatch[parents[j]].rm_so + || pmatch[i].rm_eo > pmatch[parents[j]].rm_eo) + pmatch[i].rm_so = pmatch[i].rm_eo = -1; + } + i++; + } + } + + while (i < nmatch) + { + pmatch[i].rm_so = -1; + pmatch[i].rm_eo = -1; + i++; + } +} + + +/* + Wrapper functions for POSIX compatible regexp matching. +*/ + +int +regexec(const regex_t *restrict preg, const char *restrict string, + size_t nmatch, regmatch_t pmatch[restrict], int eflags) +{ + tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD; + reg_errcode_t status; + regoff_t *tags = NULL, eo; + if (tnfa->cflags & REG_NOSUB) nmatch = 0; + if (tnfa->num_tags > 0 && nmatch > 0) + { + tags = xmalloc(sizeof(*tags) * tnfa->num_tags); + if (tags == NULL) + return REG_ESPACE; + } + + /* Dispatch to the appropriate matcher. */ + if (tnfa->have_backrefs) + { + /* The regex has back references, use the backtracking matcher. */ + status = tre_tnfa_run_backtrack(tnfa, string, tags, eflags, &eo); + } + else + { + /* Exact matching, no back references, use the parallel matcher. */ + status = tre_tnfa_run_parallel(tnfa, string, tags, eflags, &eo); + } + + if (status == REG_OK) + /* A match was found, so fill the submatch registers. */ + tre_fill_pmatch(nmatch, pmatch, tnfa->cflags, tnfa, tags, eo); + if (tags) + xfree(tags); + return status; +} diff --git a/vendor/modernc.org/libc/musl/src/regex/tre-mem.c b/vendor/modernc.org/libc/musl/src/regex/tre-mem.c new file mode 100644 index 000000000..86f809d45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/tre-mem.c @@ -0,0 +1,158 @@ +/* + tre-mem.c - TRE memory allocator + + Copyright (c) 2001-2009 Ville Laurikari + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* + This memory allocator is for allocating small memory blocks efficiently + in terms of memory overhead and execution speed. The allocated blocks + cannot be freed individually, only all at once. There can be multiple + allocators, though. +*/ + +#include +#include + +#include "tre.h" + +/* + This memory allocator is for allocating small memory blocks efficiently + in terms of memory overhead and execution speed. The allocated blocks + cannot be freed individually, only all at once. There can be multiple + allocators, though. +*/ + +/* Returns a new memory allocator or NULL if out of memory. */ +tre_mem_t +tre_mem_new_impl(int provided, void *provided_block) +{ + tre_mem_t mem; + if (provided) + { + mem = provided_block; + memset(mem, 0, sizeof(*mem)); + } + else + mem = xcalloc(1, sizeof(*mem)); + if (mem == NULL) + return NULL; + return mem; +} + + +/* Frees the memory allocator and all memory allocated with it. */ +void +tre_mem_destroy(tre_mem_t mem) +{ + tre_list_t *tmp, *l = mem->blocks; + + while (l != NULL) + { + xfree(l->data); + tmp = l->next; + xfree(l); + l = tmp; + } + xfree(mem); +} + + +/* Allocates a block of `size' bytes from `mem'. Returns a pointer to the + allocated block or NULL if an underlying malloc() failed. */ +void * +tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block, + int zero, size_t size) +{ + void *ptr; + + if (mem->failed) + { + return NULL; + } + + if (mem->n < size) + { + /* We need more memory than is available in the current block. + Allocate a new block. */ + tre_list_t *l; + if (provided) + { + if (provided_block == NULL) + { + mem->failed = 1; + return NULL; + } + mem->ptr = provided_block; + mem->n = TRE_MEM_BLOCK_SIZE; + } + else + { + int block_size; + if (size * 8 > TRE_MEM_BLOCK_SIZE) + block_size = size * 8; + else + block_size = TRE_MEM_BLOCK_SIZE; + l = xmalloc(sizeof(*l)); + if (l == NULL) + { + mem->failed = 1; + return NULL; + } + l->data = xmalloc(block_size); + if (l->data == NULL) + { + xfree(l); + mem->failed = 1; + return NULL; + } + l->next = NULL; + if (mem->current != NULL) + mem->current->next = l; + if (mem->blocks == NULL) + mem->blocks = l; + mem->current = l; + mem->ptr = l->data; + mem->n = block_size; + } + } + + /* Make sure the next pointer will be aligned. */ + size += ALIGN(mem->ptr + size, long); + + /* Allocate from current block. */ + ptr = mem->ptr; + mem->ptr += size; + mem->n -= size; + + /* Set to zero if needed. */ + if (zero) + memset(ptr, 0, size); + + return ptr; +} diff --git a/vendor/modernc.org/libc/musl/src/regex/tre.h b/vendor/modernc.org/libc/musl/src/regex/tre.h new file mode 100644 index 000000000..9aae851f6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/regex/tre.h @@ -0,0 +1,231 @@ +/* + tre-internal.h - TRE internal definitions + + Copyright (c) 2001-2009 Ville Laurikari + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include +#include +#include + +#undef TRE_MBSTATE + +#define NDEBUG + +#define TRE_REGEX_T_FIELD __opaque +typedef int reg_errcode_t; + +typedef wchar_t tre_char_t; + +#define DPRINT(msg) do { } while(0) + +#define elementsof(x) ( sizeof(x) / sizeof(x[0]) ) + +#define tre_mbrtowc(pwc, s, n, ps) (mbtowc((pwc), (s), (n))) + +/* Wide characters. */ +typedef wint_t tre_cint_t; +#define TRE_CHAR_MAX 0x10ffff + +#define tre_isalnum iswalnum +#define tre_isalpha iswalpha +#define tre_isblank iswblank +#define tre_iscntrl iswcntrl +#define tre_isdigit iswdigit +#define tre_isgraph iswgraph +#define tre_islower iswlower +#define tre_isprint iswprint +#define tre_ispunct iswpunct +#define tre_isspace iswspace +#define tre_isupper iswupper +#define tre_isxdigit iswxdigit + +#define tre_tolower towlower +#define tre_toupper towupper +#define tre_strlen wcslen + +/* Use system provided iswctype() and wctype(). */ +typedef wctype_t tre_ctype_t; +#define tre_isctype iswctype +#define tre_ctype wctype + +/* Returns number of bytes to add to (char *)ptr to make it + properly aligned for the type. */ +#define ALIGN(ptr, type) \ + ((((long)ptr) % sizeof(type)) \ + ? (sizeof(type) - (((long)ptr) % sizeof(type))) \ + : 0) + +#undef MAX +#undef MIN +#define MAX(a, b) (((a) >= (b)) ? (a) : (b)) +#define MIN(a, b) (((a) <= (b)) ? (a) : (b)) + +/* TNFA transition type. A TNFA state is an array of transitions, + the terminator is a transition with NULL `state'. */ +typedef struct tnfa_transition tre_tnfa_transition_t; + +struct tnfa_transition { + /* Range of accepted characters. */ + tre_cint_t code_min; + tre_cint_t code_max; + /* Pointer to the destination state. */ + tre_tnfa_transition_t *state; + /* ID number of the destination state. */ + int state_id; + /* -1 terminated array of tags (or NULL). */ + int *tags; + /* Assertion bitmap. */ + int assertions; + /* Assertion parameters. */ + union { + /* Character class assertion. */ + tre_ctype_t class; + /* Back reference assertion. */ + int backref; + } u; + /* Negative character class assertions. */ + tre_ctype_t *neg_classes; +}; + + +/* Assertions. */ +#define ASSERT_AT_BOL 1 /* Beginning of line. */ +#define ASSERT_AT_EOL 2 /* End of line. */ +#define ASSERT_CHAR_CLASS 4 /* Character class in `class'. */ +#define ASSERT_CHAR_CLASS_NEG 8 /* Character classes in `neg_classes'. */ +#define ASSERT_AT_BOW 16 /* Beginning of word. */ +#define ASSERT_AT_EOW 32 /* End of word. */ +#define ASSERT_AT_WB 64 /* Word boundary. */ +#define ASSERT_AT_WB_NEG 128 /* Not a word boundary. */ +#define ASSERT_BACKREF 256 /* A back reference in `backref'. */ +#define ASSERT_LAST 256 + +/* Tag directions. */ +typedef enum { + TRE_TAG_MINIMIZE = 0, + TRE_TAG_MAXIMIZE = 1 +} tre_tag_direction_t; + +/* Instructions to compute submatch register values from tag values + after a successful match. */ +struct tre_submatch_data { + /* Tag that gives the value for rm_so (submatch start offset). */ + int so_tag; + /* Tag that gives the value for rm_eo (submatch end offset). */ + int eo_tag; + /* List of submatches this submatch is contained in. */ + int *parents; +}; + +typedef struct tre_submatch_data tre_submatch_data_t; + + +/* TNFA definition. */ +typedef struct tnfa tre_tnfa_t; + +struct tnfa { + tre_tnfa_transition_t *transitions; + unsigned int num_transitions; + tre_tnfa_transition_t *initial; + tre_tnfa_transition_t *final; + tre_submatch_data_t *submatch_data; + char *firstpos_chars; + int first_char; + unsigned int num_submatches; + tre_tag_direction_t *tag_directions; + int *minimal_tags; + int num_tags; + int num_minimals; + int end_tag; + int num_states; + int cflags; + int have_backrefs; + int have_approx; +}; + +/* from tre-mem.h: */ + +#define TRE_MEM_BLOCK_SIZE 1024 + +typedef struct tre_list { + void *data; + struct tre_list *next; +} tre_list_t; + +typedef struct tre_mem_struct { + tre_list_t *blocks; + tre_list_t *current; + char *ptr; + size_t n; + int failed; + void **provided; +} *tre_mem_t; + +#define tre_mem_new_impl __tre_mem_new_impl +#define tre_mem_alloc_impl __tre_mem_alloc_impl +#define tre_mem_destroy __tre_mem_destroy + +hidden tre_mem_t tre_mem_new_impl(int provided, void *provided_block); +hidden void *tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block, + int zero, size_t size); + +/* Returns a new memory allocator or NULL if out of memory. */ +#define tre_mem_new() tre_mem_new_impl(0, NULL) + +/* Allocates a block of `size' bytes from `mem'. Returns a pointer to the + allocated block or NULL if an underlying malloc() failed. */ +#define tre_mem_alloc(mem, size) tre_mem_alloc_impl(mem, 0, NULL, 0, size) + +/* Allocates a block of `size' bytes from `mem'. Returns a pointer to the + allocated block or NULL if an underlying malloc() failed. The memory + is set to zero. */ +#define tre_mem_calloc(mem, size) tre_mem_alloc_impl(mem, 0, NULL, 1, size) + +#ifdef TRE_USE_ALLOCA +/* alloca() versions. Like above, but memory is allocated with alloca() + instead of malloc(). */ + +#define tre_mem_newa() \ + tre_mem_new_impl(1, alloca(sizeof(struct tre_mem_struct))) + +#define tre_mem_alloca(mem, size) \ + ((mem)->n >= (size) \ + ? tre_mem_alloc_impl((mem), 1, NULL, 0, (size)) \ + : tre_mem_alloc_impl((mem), 1, alloca(TRE_MEM_BLOCK_SIZE), 0, (size))) +#endif /* TRE_USE_ALLOCA */ + + +/* Frees the memory allocator and all memory allocated with it. */ +hidden void tre_mem_destroy(tre_mem_t mem); + +#define xmalloc malloc +#define xcalloc calloc +#define xfree free +#define xrealloc realloc + diff --git a/vendor/modernc.org/libc/musl/src/sched/affinity.c b/vendor/modernc.org/libc/musl/src/sched/affinity.c new file mode 100644 index 000000000..948ece413 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/affinity.c @@ -0,0 +1,33 @@ +#define _GNU_SOURCE +#include +#include +#include "pthread_impl.h" +#include "syscall.h" + +int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set) +{ + return syscall(SYS_sched_setaffinity, tid, size, set); +} + +int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set) +{ + return -__syscall(SYS_sched_setaffinity, td->tid, size, set); +} + +static int do_getaffinity(pid_t tid, size_t size, cpu_set_t *set) +{ + long ret = __syscall(SYS_sched_getaffinity, tid, size, set); + if (ret < 0) return ret; + if (ret < size) memset((char *)set+ret, 0, size-ret); + return 0; +} + +int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set) +{ + return __syscall_ret(do_getaffinity(tid, size, set)); +} + +int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t *set) +{ + return -do_getaffinity(td->tid, size, set); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_cpucount.c b/vendor/modernc.org/libc/musl/src/sched/sched_cpucount.c new file mode 100644 index 000000000..94aa259e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_cpucount.c @@ -0,0 +1,11 @@ +#define _GNU_SOURCE +#include + +int __sched_cpucount(size_t size, const cpu_set_t *set) +{ + size_t i, j, cnt=0; + const unsigned char *p = (const void *)set; + for (i=0; i +#include "syscall.h" + +int sched_get_priority_max(int policy) +{ + return syscall(SYS_sched_get_priority_max, policy); +} + +int sched_get_priority_min(int policy) +{ + return syscall(SYS_sched_get_priority_min, policy); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_getcpu.c b/vendor/modernc.org/libc/musl/src/sched/sched_getcpu.c new file mode 100644 index 000000000..4ec5eaf67 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_getcpu.c @@ -0,0 +1,42 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" +#include "atomic.h" + +#ifdef VDSO_GETCPU_SYM + +static void *volatile vdso_func; + +typedef long (*getcpu_f)(unsigned *, unsigned *, void *); + +static long getcpu_init(unsigned *cpu, unsigned *node, void *unused) +{ + void *p = __vdsosym(VDSO_GETCPU_VER, VDSO_GETCPU_SYM); + getcpu_f f = (getcpu_f)p; + a_cas_p(&vdso_func, (void *)getcpu_init, p); + return f ? f(cpu, node, unused) : -ENOSYS; +} + +static void *volatile vdso_func = (void *)getcpu_init; + +#endif + +int sched_getcpu(void) +{ + int r; + unsigned cpu; + +#ifdef VDSO_GETCPU_SYM + getcpu_f f = (getcpu_f)vdso_func; + if (f) { + r = f(&cpu, 0, 0); + if (!r) return cpu; + if (r != -ENOSYS) return __syscall_ret(r); + } +#endif + + r = __syscall(SYS_getcpu, &cpu, 0, 0); + if (!r) return cpu; + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_getparam.c b/vendor/modernc.org/libc/musl/src/sched/sched_getparam.c new file mode 100644 index 000000000..76f10e49d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_getparam.c @@ -0,0 +1,8 @@ +#include +#include +#include "syscall.h" + +int sched_getparam(pid_t pid, struct sched_param *param) +{ + return __syscall_ret(-ENOSYS); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_getscheduler.c b/vendor/modernc.org/libc/musl/src/sched/sched_getscheduler.c new file mode 100644 index 000000000..394e508b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_getscheduler.c @@ -0,0 +1,8 @@ +#include +#include +#include "syscall.h" + +int sched_getscheduler(pid_t pid) +{ + return __syscall_ret(-ENOSYS); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_rr_get_interval.c b/vendor/modernc.org/libc/musl/src/sched/sched_rr_get_interval.c new file mode 100644 index 000000000..33a3d1aee --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_rr_get_interval.c @@ -0,0 +1,21 @@ +#include +#include "syscall.h" + +int sched_rr_get_interval(pid_t pid, struct timespec *ts) +{ +#ifdef SYS_sched_rr_get_interval_time64 + /* On a 32-bit arch, use the old syscall if it exists. */ + if (SYS_sched_rr_get_interval != SYS_sched_rr_get_interval_time64) { + long ts32[2]; + int r = __syscall(SYS_sched_rr_get_interval, pid, ts32); + if (!r) { + ts->tv_sec = ts32[0]; + ts->tv_nsec = ts32[1]; + } + return __syscall_ret(r); + } +#endif + /* If reaching this point, it's a 64-bit arch or time64-only + * 32-bit arch and we can get result directly into timespec. */ + return syscall(SYS_sched_rr_get_interval, pid, ts); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_setparam.c b/vendor/modernc.org/libc/musl/src/sched/sched_setparam.c new file mode 100644 index 000000000..18623ee49 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_setparam.c @@ -0,0 +1,8 @@ +#include +#include +#include "syscall.h" + +int sched_setparam(pid_t pid, const struct sched_param *param) +{ + return __syscall_ret(-ENOSYS); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_setscheduler.c b/vendor/modernc.org/libc/musl/src/sched/sched_setscheduler.c new file mode 100644 index 000000000..4435f2164 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_setscheduler.c @@ -0,0 +1,8 @@ +#include +#include +#include "syscall.h" + +int sched_setscheduler(pid_t pid, int sched, const struct sched_param *param) +{ + return __syscall_ret(-ENOSYS); +} diff --git a/vendor/modernc.org/libc/musl/src/sched/sched_yield.c b/vendor/modernc.org/libc/musl/src/sched/sched_yield.c new file mode 100644 index 000000000..ee6f0e7f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/sched/sched_yield.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int sched_yield() +{ + return syscall(SYS_sched_yield); +} diff --git a/vendor/modernc.org/libc/musl/src/search/hsearch.c b/vendor/modernc.org/libc/musl/src/search/hsearch.c new file mode 100644 index 000000000..b3ac8796e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/hsearch.c @@ -0,0 +1,153 @@ +#define _GNU_SOURCE +#include +#include +#include + +/* +open addressing hash table with 2^n table size +quadratic probing is used in case of hash collision +tab indices and hash are size_t +after resize fails with ENOMEM the state of tab is still usable + +with the posix api items cannot be iterated and length cannot be queried +*/ + +#define MINSIZE 8 +#define MAXSIZE ((size_t)-1/2 + 1) + +struct __tab { + ENTRY *entries; + size_t mask; + size_t used; +}; + +static struct hsearch_data htab; + +static int __hcreate_r(size_t, struct hsearch_data *); +static void __hdestroy_r(struct hsearch_data *); +static int __hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *); + +static size_t keyhash(char *k) +{ + unsigned char *p = (void *)k; + size_t h = 0; + + while (*p) + h = 31*h + *p++; + return h; +} + +static int resize(size_t nel, struct hsearch_data *htab) +{ + size_t newsize; + size_t i, j; + ENTRY *e, *newe; + ENTRY *oldtab = htab->__tab->entries; + ENTRY *oldend = htab->__tab->entries + htab->__tab->mask + 1; + + if (nel > MAXSIZE) + nel = MAXSIZE; + for (newsize = MINSIZE; newsize < nel; newsize *= 2); + htab->__tab->entries = calloc(newsize, sizeof *htab->__tab->entries); + if (!htab->__tab->entries) { + htab->__tab->entries = oldtab; + return 0; + } + htab->__tab->mask = newsize - 1; + if (!oldtab) + return 1; + for (e = oldtab; e < oldend; e++) + if (e->key) { + for (i=keyhash(e->key),j=1; ; i+=j++) { + newe = htab->__tab->entries + (i & htab->__tab->mask); + if (!newe->key) + break; + } + *newe = *e; + } + free(oldtab); + return 1; +} + +int hcreate(size_t nel) +{ + return __hcreate_r(nel, &htab); +} + +void hdestroy(void) +{ + __hdestroy_r(&htab); +} + +static ENTRY *lookup(char *key, size_t hash, struct hsearch_data *htab) +{ + size_t i, j; + ENTRY *e; + + for (i=hash,j=1; ; i+=j++) { + e = htab->__tab->entries + (i & htab->__tab->mask); + if (!e->key || strcmp(e->key, key) == 0) + break; + } + return e; +} + +ENTRY *hsearch(ENTRY item, ACTION action) +{ + ENTRY *e; + + __hsearch_r(item, action, &e, &htab); + return e; +} + +static int __hcreate_r(size_t nel, struct hsearch_data *htab) +{ + int r; + + htab->__tab = calloc(1, sizeof *htab->__tab); + if (!htab->__tab) + return 0; + r = resize(nel, htab); + if (r == 0) { + free(htab->__tab); + htab->__tab = 0; + } + return r; +} +weak_alias(__hcreate_r, hcreate_r); + +static void __hdestroy_r(struct hsearch_data *htab) +{ + if (htab->__tab) free(htab->__tab->entries); + free(htab->__tab); + htab->__tab = 0; +} +weak_alias(__hdestroy_r, hdestroy_r); + +static int __hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab) +{ + size_t hash = keyhash(item.key); + ENTRY *e = lookup(item.key, hash, htab); + + if (e->key) { + *retval = e; + return 1; + } + if (action == FIND) { + *retval = 0; + return 0; + } + *e = item; + if (++htab->__tab->used > htab->__tab->mask - htab->__tab->mask/4) { + if (!resize(2*htab->__tab->used, htab)) { + htab->__tab->used--; + e->key = 0; + *retval = 0; + return 0; + } + e = lookup(item.key, hash, htab); + } + *retval = e; + return 1; +} +weak_alias(__hsearch_r, hsearch_r); diff --git a/vendor/modernc.org/libc/musl/src/search/insque.c b/vendor/modernc.org/libc/musl/src/search/insque.c new file mode 100644 index 000000000..b7475d84f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/insque.c @@ -0,0 +1,32 @@ +#include + +struct node { + struct node *next; + struct node *prev; +}; + +void insque(void *element, void *pred) +{ + struct node *e = element; + struct node *p = pred; + + if (!p) { + e->next = e->prev = 0; + return; + } + e->next = p->next; + e->prev = p; + p->next = e; + if (e->next) + e->next->prev = e; +} + +void remque(void *element) +{ + struct node *e = element; + + if (e->next) + e->next->prev = e->prev; + if (e->prev) + e->prev->next = e->next; +} diff --git a/vendor/modernc.org/libc/musl/src/search/lsearch.c b/vendor/modernc.org/libc/musl/src/search/lsearch.c new file mode 100644 index 000000000..5eb5cc2bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/lsearch.c @@ -0,0 +1,31 @@ +#include +#include + +void *lsearch(const void *key, void *base, size_t *nelp, size_t width, + int (*compar)(const void *, const void *)) +{ + char (*p)[width] = base; + size_t n = *nelp; + size_t i; + + for (i = 0; i < n; i++) + if (compar(key, p[i]) == 0) + return p[i]; + *nelp = n+1; + return memcpy(p[n], key, width); +} + +void *lfind(const void *key, const void *base, size_t *nelp, + size_t width, int (*compar)(const void *, const void *)) +{ + char (*p)[width] = (void *)base; + size_t n = *nelp; + size_t i; + + for (i = 0; i < n; i++) + if (compar(key, p[i]) == 0) + return p[i]; + return 0; +} + + diff --git a/vendor/modernc.org/libc/musl/src/search/tdelete.c b/vendor/modernc.org/libc/musl/src/search/tdelete.c new file mode 100644 index 000000000..b8bb924b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/tdelete.c @@ -0,0 +1,49 @@ +#include +#include +#include "tsearch.h" + +void *tdelete(const void *restrict key, void **restrict rootp, + int(*cmp)(const void *, const void *)) +{ + if (!rootp) + return 0; + + void **a[MAXH+1]; + struct node *n = *rootp; + struct node *parent; + struct node *child; + int i=0; + /* *a[0] is an arbitrary non-null pointer that is returned when + the root node is deleted. */ + a[i++] = rootp; + a[i++] = rootp; + for (;;) { + if (!n) + return 0; + int c = cmp(key, n->key); + if (!c) + break; + a[i++] = &n->a[c>0]; + n = n->a[c>0]; + } + parent = *a[i-2]; + if (n->a[0]) { + /* free the preceding node instead of the deleted one. */ + struct node *deleted = n; + a[i++] = &n->a[0]; + n = n->a[0]; + while (n->a[1]) { + a[i++] = &n->a[1]; + n = n->a[1]; + } + deleted->key = n->key; + child = n->a[0]; + } else { + child = n->a[1]; + } + /* freed node has at most one child, move it up and rebalance. */ + free(n); + *a[--i] = child; + while (--i && __tsearch_balance(a[i])); + return parent; +} diff --git a/vendor/modernc.org/libc/musl/src/search/tdestroy.c b/vendor/modernc.org/libc/musl/src/search/tdestroy.c new file mode 100644 index 000000000..699a901c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/tdestroy.c @@ -0,0 +1,16 @@ +#define _GNU_SOURCE +#include +#include +#include "tsearch.h" + +void tdestroy(void *root, void (*freekey)(void *)) +{ + struct node *r = root; + + if (r == 0) + return; + tdestroy(r->a[0], freekey); + tdestroy(r->a[1], freekey); + if (freekey) freekey((void *)r->key); + free(r); +} diff --git a/vendor/modernc.org/libc/musl/src/search/tfind.c b/vendor/modernc.org/libc/musl/src/search/tfind.c new file mode 100644 index 000000000..9e1cf98f5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/tfind.c @@ -0,0 +1,20 @@ +#include +#include "tsearch.h" + +void *tfind(const void *key, void *const *rootp, + int(*cmp)(const void *, const void *)) +{ + if (!rootp) + return 0; + + struct node *n = *rootp; + for (;;) { + if (!n) + break; + int c = cmp(key, n->key); + if (!c) + break; + n = n->a[c>0]; + } + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/search/tsearch.c b/vendor/modernc.org/libc/musl/src/search/tsearch.c new file mode 100644 index 000000000..0de27d05e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/tsearch.c @@ -0,0 +1,92 @@ +#include +#include +#include "tsearch.h" + +static inline int height(struct node *n) { return n ? n->h : 0; } + +static int rot(void **p, struct node *x, int dir /* deeper side */) +{ + struct node *y = x->a[dir]; + struct node *z = y->a[!dir]; + int hx = x->h; + int hz = height(z); + if (hz > height(y->a[dir])) { + /* + * x + * / \ dir z + * A y / \ + * / \ --> x y + * z D /| |\ + * / \ A B C D + * B C + */ + x->a[dir] = z->a[!dir]; + y->a[!dir] = z->a[dir]; + z->a[!dir] = x; + z->a[dir] = y; + x->h = hz; + y->h = hz; + z->h = hz+1; + } else { + /* + * x y + * / \ / \ + * A y --> x D + * / \ / \ + * z D A z + */ + x->a[dir] = z; + y->a[!dir] = x; + x->h = hz+1; + y->h = hz+2; + z = y; + } + *p = z; + return z->h - hx; +} + +/* balance *p, return 0 if height is unchanged. */ +int __tsearch_balance(void **p) +{ + struct node *n = *p; + int h0 = height(n->a[0]); + int h1 = height(n->a[1]); + if (h0 - h1 + 1u < 3u) { + int old = n->h; + n->h = h0

h - old; + } + return rot(p, n, h0key); + if (!c) + return n; + a[i++] = &n->a[c>0]; + n = n->a[c>0]; + } + r = malloc(sizeof *r); + if (!r) + return 0; + r->key = key; + r->a[0] = r->a[1] = 0; + r->h = 1; + /* insert new node, rebalance ancestors. */ + *a[--i] = r; + while (i && __tsearch_balance(a[--i])); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/search/tsearch.h b/vendor/modernc.org/libc/musl/src/search/tsearch.h new file mode 100644 index 000000000..37d11d735 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/tsearch.h @@ -0,0 +1,13 @@ +#include +#include + +/* AVL tree height < 1.44*log2(nodes+2)-0.3, MAXH is a safe upper bound. */ +#define MAXH (sizeof(void*)*8*3/2) + +struct node { + const void *key; + void *a[2]; + int h; +}; + +hidden int __tsearch_balance(void **); diff --git a/vendor/modernc.org/libc/musl/src/search/twalk.c b/vendor/modernc.org/libc/musl/src/search/twalk.c new file mode 100644 index 000000000..53821cdaf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/search/twalk.c @@ -0,0 +1,22 @@ +#include +#include "tsearch.h" + +static void walk(const struct node *r, void (*action)(const void *, VISIT, int), int d) +{ + if (!r) + return; + if (r->h == 1) + action(r, leaf, d); + else { + action(r, preorder, d); + walk(r->a[0], action, d+1); + action(r, postorder, d); + walk(r->a[1], action, d+1); + action(r, endorder, d); + } +} + +void twalk(const void *root, void (*action)(const void *, VISIT, int)) +{ + walk(root, action, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/select/poll.c b/vendor/modernc.org/libc/musl/src/select/poll.c new file mode 100644 index 000000000..c84c8a999 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/select/poll.c @@ -0,0 +1,15 @@ +#include +#include +#include +#include "syscall.h" + +int poll(struct pollfd *fds, nfds_t n, int timeout) +{ +#ifdef SYS_poll + return syscall_cp(SYS_poll, fds, n, timeout); +#else + return syscall_cp(SYS_ppoll, fds, n, timeout>=0 ? + &((struct timespec){ .tv_sec = timeout/1000, + .tv_nsec = timeout%1000*1000000 }) : 0, 0, _NSIG/8); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/select/pselect.c b/vendor/modernc.org/libc/musl/src/select/pselect.c new file mode 100644 index 000000000..54cfb291b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/select/pselect.c @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int pselect(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, const struct timespec *restrict ts, const sigset_t *restrict mask) +{ + syscall_arg_t data[2] = { (uintptr_t)mask, _NSIG/8 }; + time_t s = ts ? ts->tv_sec : 0; + long ns = ts ? ts->tv_nsec : 0; +#ifdef SYS_pselect6_time64 + int r = -ENOSYS; + if (SYS_pselect6 == SYS_pselect6_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, + ts ? ((long long[]){s, ns}) : 0, data); + if (SYS_pselect6 == SYS_pselect6_time64 || r!=-ENOSYS) + return __syscall_ret(r); + s = CLAMP(s); +#endif + return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, + ts ? ((long[]){s, ns}) : 0, data); +} diff --git a/vendor/modernc.org/libc/musl/src/select/select.c b/vendor/modernc.org/libc/musl/src/select/select.c new file mode 100644 index 000000000..8a7868840 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/select/select.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int select(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, struct timeval *restrict tv) +{ + time_t s = tv ? tv->tv_sec : 0; + suseconds_t us = tv ? tv->tv_usec : 0; + long ns; + const time_t max_time = (1ULL<<8*sizeof(time_t)-1)-1; + + if (s<0 || us<0) return __syscall_ret(-EINVAL); + if (us/1000000 > max_time - s) { + s = max_time; + us = 999999; + ns = 999999999; + } else { + s += us/1000000; + us %= 1000000; + ns = us*1000; + } + +#ifdef SYS_pselect6_time64 + int r = -ENOSYS; + if (SYS_pselect6 == SYS_pselect6_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, + tv ? ((long long[]){s, ns}) : 0, + ((syscall_arg_t[]){ 0, _NSIG/8 })); + if (SYS_pselect6 == SYS_pselect6_time64 || r!=-ENOSYS) + return __syscall_ret(r); +#endif +#ifdef SYS_select + return syscall_cp(SYS_select, n, rfds, wfds, efds, + tv ? ((long[]){s, us}) : 0); +#else + return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, + tv ? ((long[]){s, ns}) : 0, ((syscall_arg_t[]){ 0, _NSIG/8 })); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/setjmp/longjmp.c b/vendor/modernc.org/libc/musl/src/setjmp/longjmp.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/src/setjmp/setjmp.c b/vendor/modernc.org/libc/musl/src/setjmp/setjmp.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/src/signal/block.c b/vendor/modernc.org/libc/musl/src/signal/block.c new file mode 100644 index 000000000..d7f610013 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/block.c @@ -0,0 +1,44 @@ +#include "pthread_impl.h" +#include "syscall.h" +#include + +static const unsigned long all_mask[] = { +#if ULONG_MAX == 0xffffffff && _NSIG == 129 + -1UL, -1UL, -1UL, -1UL +#elif ULONG_MAX == 0xffffffff + -1UL, -1UL +#else + -1UL +#endif +}; + +static const unsigned long app_mask[] = { +#if ULONG_MAX == 0xffffffff +#if _NSIG == 65 + 0x7fffffff, 0xfffffffc +#else + 0x7fffffff, 0xfffffffc, -1UL, -1UL +#endif +#else +#if _NSIG == 65 + 0xfffffffc7fffffff +#else + 0xfffffffc7fffffff, -1UL +#endif +#endif +}; + +void __block_all_sigs(void *set) +{ + __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8); +} + +void __block_app_sigs(void *set) +{ + __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8); +} + +void __restore_sigs(void *set) +{ + __syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/getitimer.c b/vendor/modernc.org/libc/musl/src/signal/getitimer.c new file mode 100644 index 000000000..36d1eb9dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/getitimer.c @@ -0,0 +1,18 @@ +#include +#include "syscall.h" + +int getitimer(int which, struct itimerval *old) +{ + if (sizeof(time_t) > sizeof(long)) { + long old32[4]; + int r = __syscall(SYS_getitimer, which, old32); + if (!r) { + old->it_interval.tv_sec = old32[0]; + old->it_interval.tv_usec = old32[1]; + old->it_value.tv_sec = old32[2]; + old->it_value.tv_usec = old32[3]; + } + return __syscall_ret(r); + } + return syscall(SYS_getitimer, which, old); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/kill.c b/vendor/modernc.org/libc/musl/src/signal/kill.c new file mode 100644 index 000000000..058057330 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/kill.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int kill(pid_t pid, int sig) +{ + return syscall(SYS_kill, pid, sig); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/killpg.c b/vendor/modernc.org/libc/musl/src/signal/killpg.c new file mode 100644 index 000000000..315ed4474 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/killpg.c @@ -0,0 +1,11 @@ +#include +#include + +int killpg(pid_t pgid, int sig) +{ + if (pgid < 0) { + errno = EINVAL; + return -1; + } + return kill(-pgid, sig); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/psiginfo.c b/vendor/modernc.org/libc/musl/src/signal/psiginfo.c new file mode 100644 index 000000000..2b15982be --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/psiginfo.c @@ -0,0 +1,6 @@ +#include + +void psiginfo(const siginfo_t *si, const char *msg) +{ + psignal(si->si_signo, msg); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/psignal.c b/vendor/modernc.org/libc/musl/src/signal/psignal.c new file mode 100644 index 000000000..138dbe00f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/psignal.c @@ -0,0 +1,27 @@ +#include "stdio_impl.h" +#include +#include +#include + +void psignal(int sig, const char *msg) +{ + FILE *f = stderr; + char *s = strsignal(sig); + + FLOCK(f); + + /* Save stderr's orientation and encoding rule, since psignal is not + * permitted to change them. Save errno and restore it if there is no + * error since fprintf might change it even on success but psignal is + * not permitted to do so. */ + void *old_locale = f->locale; + int old_mode = f->mode; + int old_errno = errno; + + if (fprintf(f, "%s%s%s\n", msg?msg:"", msg?": ":"", s)>=0) + errno = old_errno; + f->mode = old_mode; + f->locale = old_locale; + + FUNLOCK(f); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/raise.c b/vendor/modernc.org/libc/musl/src/signal/raise.c new file mode 100644 index 000000000..f0512019a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/raise.c @@ -0,0 +1,13 @@ +#include +#include +#include "syscall.h" +#include "pthread_impl.h" + +int raise(int sig) +{ + sigset_t set; + __block_app_sigs(&set); + int ret = syscall(SYS_tkill, __pthread_self()->tid, sig); + __restore_sigs(&set); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/restore.c b/vendor/modernc.org/libc/musl/src/signal/restore.c new file mode 100644 index 000000000..5ec4f5ddd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/restore.c @@ -0,0 +1,12 @@ +#include + +/* These functions will not work, but suffice for targets where the + * kernel sigaction structure does not actually use sa_restorer. */ + +hidden void __restore() +{ +} + +hidden void __restore_rt() +{ +} diff --git a/vendor/modernc.org/libc/musl/src/signal/setitimer.c b/vendor/modernc.org/libc/musl/src/signal/setitimer.c new file mode 100644 index 000000000..0dfbeb4db --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/setitimer.c @@ -0,0 +1,26 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) + +int setitimer(int which, const struct itimerval *restrict new, struct itimerval *restrict old) +{ + if (sizeof(time_t) > sizeof(long)) { + time_t is = new->it_interval.tv_sec, vs = new->it_value.tv_sec; + long ius = new->it_interval.tv_usec, vus = new->it_value.tv_usec; + if (!IS32BIT(is) || !IS32BIT(vs)) + return __syscall_ret(-ENOTSUP); + long old32[4]; + int r = __syscall(SYS_setitimer, which, + ((long[]){is, ius, vs, vus}), old32); + if (!r && old) { + old->it_interval.tv_sec = old32[0]; + old->it_interval.tv_usec = old32[1]; + old->it_value.tv_sec = old32[2]; + old->it_value.tv_usec = old32[3]; + } + return __syscall_ret(r); + } + return syscall(SYS_setitimer, which, new, old); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigaction.c b/vendor/modernc.org/libc/musl/src/signal/sigaction.c new file mode 100644 index 000000000..c109bea0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigaction.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include "syscall.h" +#include "pthread_impl.h" +#include "libc.h" +#include "lock.h" +#include "ksigaction.h" + +static volatile int dummy_lock[1] = { 0 }; + +extern hidden volatile int __abort_lock[1]; + +weak_alias(dummy_lock, __abort_lock); + +static int unmask_done; +static unsigned long handler_set[_NSIG/(8*sizeof(long))]; + +void __get_handler_set(sigset_t *set) +{ + memcpy(set, handler_set, sizeof handler_set); +} + +volatile int __eintr_valid_flag; + +int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old) +{ + struct k_sigaction ksa, ksa_old; + unsigned long set[_NSIG/(8*sizeof(long))]; + if (sa) { + if ((uintptr_t)sa->sa_handler > 1UL) { + a_or_l(handler_set+(sig-1)/(8*sizeof(long)), + 1UL<<(sig-1)%(8*sizeof(long))); + + /* If pthread_create has not yet been called, + * implementation-internal signals might not + * yet have been unblocked. They must be + * unblocked before any signal handler is + * installed, so that an application cannot + * receive an illegal sigset_t (with them + * blocked) as part of the ucontext_t passed + * to the signal handler. */ + if (!libc.threaded && !unmask_done) { + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, + SIGPT_SET, 0, _NSIG/8); + unmask_done = 1; + } + + if (!(sa->sa_flags & SA_RESTART)) { + a_store(&__eintr_valid_flag, 1); + } + } + /* Changing the disposition of SIGABRT to anything but + * SIG_DFL requires a lock, so that it cannot be changed + * while abort is terminating the process after simply + * calling raise(SIGABRT) failed to do so. */ + if (sa->sa_handler != SIG_DFL && sig == SIGABRT) { + __block_all_sigs(&set); + LOCK(__abort_lock); + } + ksa.handler = sa->sa_handler; + ksa.flags = sa->sa_flags | SA_RESTORER; + ksa.restorer = (sa->sa_flags & SA_SIGINFO) ? __restore_rt : __restore; + memcpy(&ksa.mask, &sa->sa_mask, _NSIG/8); + } + int r = __syscall(SYS_rt_sigaction, sig, sa?&ksa:0, old?&ksa_old:0, _NSIG/8); + if (sig == SIGABRT && sa && sa->sa_handler != SIG_DFL) { + UNLOCK(__abort_lock); + __restore_sigs(&set); + } + if (old && !r) { + old->sa_handler = ksa_old.handler; + old->sa_flags = ksa_old.flags; + memcpy(&old->sa_mask, &ksa_old.mask, _NSIG/8); + } + return __syscall_ret(r); +} + +int __sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old) +{ + if (sig-32U < 3 || sig-1U >= _NSIG-1) { + errno = EINVAL; + return -1; + } + return __libc_sigaction(sig, sa, old); +} + +weak_alias(__sigaction, sigaction); diff --git a/vendor/modernc.org/libc/musl/src/signal/sigaddset.c b/vendor/modernc.org/libc/musl/src/signal/sigaddset.c new file mode 100644 index 000000000..085d1f4ab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigaddset.c @@ -0,0 +1,13 @@ +#include +#include + +int sigaddset(sigset_t *set, int sig) +{ + unsigned s = sig-1; + if (s >= _NSIG-1 || sig-32U < 3) { + errno = EINVAL; + return -1; + } + set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigaltstack.c b/vendor/modernc.org/libc/musl/src/signal/sigaltstack.c new file mode 100644 index 000000000..d3a6e8215 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigaltstack.c @@ -0,0 +1,18 @@ +#include +#include +#include "syscall.h" + +int sigaltstack(const stack_t *restrict ss, stack_t *restrict old) +{ + if (ss) { + if (!(ss->ss_flags & SS_DISABLE) && ss->ss_size < MINSIGSTKSZ) { + errno = ENOMEM; + return -1; + } + if (ss->ss_flags & SS_ONSTACK) { + errno = EINVAL; + return -1; + } + } + return syscall(SYS_sigaltstack, ss, old); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigandset.c b/vendor/modernc.org/libc/musl/src/signal/sigandset.c new file mode 100644 index 000000000..974186f3d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigandset.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include + +#define SST_SIZE (_NSIG/8/sizeof(long)) + +int sigandset(sigset_t *dest, const sigset_t *left, const sigset_t *right) +{ + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] & r[i]; + return 0; +} + diff --git a/vendor/modernc.org/libc/musl/src/signal/sigdelset.c b/vendor/modernc.org/libc/musl/src/signal/sigdelset.c new file mode 100644 index 000000000..ce69280e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigdelset.c @@ -0,0 +1,13 @@ +#include +#include + +int sigdelset(sigset_t *set, int sig) +{ + unsigned s = sig-1; + if (s >= _NSIG-1 || sig-32U < 3) { + errno = EINVAL; + return -1; + } + set->__bits[s/8/sizeof *set->__bits] &=~(1UL<<(s&8*sizeof *set->__bits-1)); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigemptyset.c b/vendor/modernc.org/libc/musl/src/signal/sigemptyset.c new file mode 100644 index 000000000..1d07471da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigemptyset.c @@ -0,0 +1,13 @@ +#include +#include + +int sigemptyset(sigset_t *set) +{ + set->__bits[0] = 0; + if (sizeof(long)==4 || _NSIG > 65) set->__bits[1] = 0; + if (sizeof(long)==4 && _NSIG > 65) { + set->__bits[2] = 0; + set->__bits[3] = 0; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigfillset.c b/vendor/modernc.org/libc/musl/src/signal/sigfillset.c new file mode 100644 index 000000000..16e7b4f5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigfillset.c @@ -0,0 +1,18 @@ +#include +#include + +int sigfillset(sigset_t *set) +{ +#if ULONG_MAX == 0xffffffff + set->__bits[0] = 0x7ffffffful; + set->__bits[1] = 0xfffffffcul; + if (_NSIG > 65) { + set->__bits[2] = 0xfffffffful; + set->__bits[3] = 0xfffffffful; + } +#else + set->__bits[0] = 0xfffffffc7ffffffful; + if (_NSIG > 65) set->__bits[1] = 0xfffffffffffffffful; +#endif + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sighold.c b/vendor/modernc.org/libc/musl/src/signal/sighold.c new file mode 100644 index 000000000..cfa2306c1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sighold.c @@ -0,0 +1,10 @@ +#include + +int sighold(int sig) +{ + sigset_t mask; + + sigemptyset(&mask); + if (sigaddset(&mask, sig) < 0) return -1; + return sigprocmask(SIG_BLOCK, &mask, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigignore.c b/vendor/modernc.org/libc/musl/src/signal/sigignore.c new file mode 100644 index 000000000..5ba05e129 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigignore.c @@ -0,0 +1,11 @@ +#include + +int sigignore(int sig) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); + sa.sa_handler = SIG_IGN; + sa.sa_flags = 0; + return sigaction(sig, &sa, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/siginterrupt.c b/vendor/modernc.org/libc/musl/src/signal/siginterrupt.c new file mode 100644 index 000000000..700634003 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/siginterrupt.c @@ -0,0 +1,12 @@ +#include + +int siginterrupt(int sig, int flag) +{ + struct sigaction sa; + + sigaction(sig, 0, &sa); + if (flag) sa.sa_flags &= ~SA_RESTART; + else sa.sa_flags |= SA_RESTART; + + return sigaction(sig, &sa, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigisemptyset.c b/vendor/modernc.org/libc/musl/src/signal/sigisemptyset.c new file mode 100644 index 000000000..68b866246 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigisemptyset.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include +#include + +int sigisemptyset(const sigset_t *set) +{ + for (size_t i=0; i<_NSIG/8/sizeof *set->__bits; i++) + if (set->__bits[i]) return 0; + return 1; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigismember.c b/vendor/modernc.org/libc/musl/src/signal/sigismember.c new file mode 100644 index 000000000..ab87d6224 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigismember.c @@ -0,0 +1,8 @@ +#include + +int sigismember(const sigset_t *set, int sig) +{ + unsigned s = sig-1; + if (s >= _NSIG-1) return 0; + return !!(set->__bits[s/8/sizeof *set->__bits] & 1UL<<(s&8*sizeof *set->__bits-1)); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/siglongjmp.c b/vendor/modernc.org/libc/musl/src/signal/siglongjmp.c new file mode 100644 index 000000000..bc317acce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/siglongjmp.c @@ -0,0 +1,9 @@ +#include +#include +#include "syscall.h" +#include "pthread_impl.h" + +_Noreturn void siglongjmp(sigjmp_buf buf, int ret) +{ + longjmp(buf, ret); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/signal.c b/vendor/modernc.org/libc/musl/src/signal/signal.c new file mode 100644 index 000000000..7a6dd1727 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/signal.c @@ -0,0 +1,13 @@ +#include +#include "syscall.h" + +void (*signal(int sig, void (*func)(int)))(int) +{ + struct sigaction sa_old, sa = { .sa_handler = func, .sa_flags = SA_RESTART }; + if (__sigaction(sig, &sa, &sa_old) < 0) + return SIG_ERR; + return sa_old.sa_handler; +} + +weak_alias(signal, bsd_signal); +weak_alias(signal, __sysv_signal); diff --git a/vendor/modernc.org/libc/musl/src/signal/sigorset.c b/vendor/modernc.org/libc/musl/src/signal/sigorset.c new file mode 100644 index 000000000..ed488738c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigorset.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include + +#define SST_SIZE (_NSIG/8/sizeof(long)) + +int sigorset(sigset_t *dest, const sigset_t *left, const sigset_t *right) +{ + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] | r[i]; + return 0; +} + diff --git a/vendor/modernc.org/libc/musl/src/signal/sigpause.c b/vendor/modernc.org/libc/musl/src/signal/sigpause.c new file mode 100644 index 000000000..363d2fec2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigpause.c @@ -0,0 +1,9 @@ +#include + +int sigpause(int sig) +{ + sigset_t mask; + sigprocmask(0, 0, &mask); + sigdelset(&mask, sig); + return sigsuspend(&mask); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigpending.c b/vendor/modernc.org/libc/musl/src/signal/sigpending.c new file mode 100644 index 000000000..3d193df83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigpending.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int sigpending(sigset_t *set) +{ + return syscall(SYS_rt_sigpending, set, _NSIG/8); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigprocmask.c b/vendor/modernc.org/libc/musl/src/signal/sigprocmask.c new file mode 100644 index 000000000..297e20c65 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigprocmask.c @@ -0,0 +1,10 @@ +#include +#include + +int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict old) +{ + int r = pthread_sigmask(how, set, old); + if (!r) return r; + errno = r; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigqueue.c b/vendor/modernc.org/libc/musl/src/signal/sigqueue.c new file mode 100644 index 000000000..b75f0c5ce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigqueue.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include "syscall.h" +#include "pthread_impl.h" + +int sigqueue(pid_t pid, int sig, const union sigval value) +{ + siginfo_t si; + sigset_t set; + int r; + memset(&si, 0, sizeof si); + si.si_signo = sig; + si.si_code = SI_QUEUE; + si.si_value = value; + si.si_uid = getuid(); + __block_app_sigs(&set); + si.si_pid = getpid(); + r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si); + __restore_sigs(&set); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigrelse.c b/vendor/modernc.org/libc/musl/src/signal/sigrelse.c new file mode 100644 index 000000000..b4c5a00f1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigrelse.c @@ -0,0 +1,10 @@ +#include + +int sigrelse(int sig) +{ + sigset_t mask; + + sigemptyset(&mask); + if (sigaddset(&mask, sig) < 0) return -1; + return sigprocmask(SIG_UNBLOCK, &mask, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigrtmax.c b/vendor/modernc.org/libc/musl/src/signal/sigrtmax.c new file mode 100644 index 000000000..44dc88ff2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigrtmax.c @@ -0,0 +1,6 @@ +#include + +int __libc_current_sigrtmax() +{ + return _NSIG-1; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigrtmin.c b/vendor/modernc.org/libc/musl/src/signal/sigrtmin.c new file mode 100644 index 000000000..c5a1fd92d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigrtmin.c @@ -0,0 +1,6 @@ +#include + +int __libc_current_sigrtmin() +{ + return 35; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigset.c b/vendor/modernc.org/libc/musl/src/signal/sigset.c new file mode 100644 index 000000000..f3e8c4077 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigset.c @@ -0,0 +1,27 @@ +#include + +void (*sigset(int sig, void (*handler)(int)))(int) +{ + struct sigaction sa, sa_old; + sigset_t mask, mask_old; + + sigemptyset(&mask); + if (sigaddset(&mask, sig) < 0) + return SIG_ERR; + + if (handler == SIG_HOLD) { + if (sigaction(sig, 0, &sa_old) < 0) + return SIG_ERR; + if (sigprocmask(SIG_BLOCK, &mask, &mask_old) < 0) + return SIG_ERR; + } else { + sa.sa_handler = handler; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); + if (sigaction(sig, &sa, &sa_old) < 0) + return SIG_ERR; + if (sigprocmask(SIG_UNBLOCK, &mask, &mask_old) < 0) + return SIG_ERR; + } + return sigismember(&mask_old, sig) ? SIG_HOLD : sa_old.sa_handler; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigsetjmp.c b/vendor/modernc.org/libc/musl/src/signal/sigsetjmp.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/src/signal/sigsetjmp_tail.c b/vendor/modernc.org/libc/musl/src/signal/sigsetjmp_tail.c new file mode 100644 index 000000000..f2aa28878 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigsetjmp_tail.c @@ -0,0 +1,10 @@ +#include +#include +#include "syscall.h" + +hidden int __sigsetjmp_tail(sigjmp_buf jb, int ret) +{ + void *p = jb->__ss; + __syscall(SYS_rt_sigprocmask, SIG_SETMASK, ret?p:0, ret?0:p, _NSIG/8); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigsuspend.c b/vendor/modernc.org/libc/musl/src/signal/sigsuspend.c new file mode 100644 index 000000000..36e0602c6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigsuspend.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int sigsuspend(const sigset_t *mask) +{ + return syscall_cp(SYS_rt_sigsuspend, mask, _NSIG/8); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigtimedwait.c b/vendor/modernc.org/libc/musl/src/signal/sigtimedwait.c new file mode 100644 index 000000000..1287174eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigtimedwait.c @@ -0,0 +1,32 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +static int do_sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict ts) +{ +#ifdef SYS_rt_sigtimedwait_time64 + time_t s = ts ? ts->tv_sec : 0; + long ns = ts ? ts->tv_nsec : 0; + int r = -ENOSYS; + if (SYS_rt_sigtimedwait == SYS_rt_sigtimedwait_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_rt_sigtimedwait_time64, mask, si, + ts ? ((long long[]){s, ns}) : 0, _NSIG/8); + if (SYS_rt_sigtimedwait == SYS_rt_sigtimedwait_time64 || r!=-ENOSYS) + return r; + return __syscall_cp(SYS_rt_sigtimedwait, mask, si, + ts ? ((long[]){CLAMP(s), ns}) : 0, _NSIG/8);; +#else + return __syscall_cp(SYS_rt_sigtimedwait, mask, si, ts, _NSIG/8); +#endif +} + +int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict timeout) +{ + int ret; + do ret = do_sigtimedwait(mask, si, timeout); + while (ret==-EINTR); + return __syscall_ret(ret); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigwait.c b/vendor/modernc.org/libc/musl/src/signal/sigwait.c new file mode 100644 index 000000000..c8822eea4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigwait.c @@ -0,0 +1,10 @@ +#include + +int sigwait(const sigset_t *restrict mask, int *restrict sig) +{ + siginfo_t si; + if (sigtimedwait(mask, &si, 0) < 0) + return -1; + *sig = si.si_signo; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/signal/sigwaitinfo.c b/vendor/modernc.org/libc/musl/src/signal/sigwaitinfo.c new file mode 100644 index 000000000..bb51f8b52 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/sigwaitinfo.c @@ -0,0 +1,6 @@ +#include + +int sigwaitinfo(const sigset_t *restrict mask, siginfo_t *restrict si) +{ + return sigtimedwait(mask, si, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/x32/getitimer.c b/vendor/modernc.org/libc/musl/src/signal/x32/getitimer.c new file mode 100644 index 000000000..8a8046a76 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/x32/getitimer.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int getitimer(int which, struct itimerval *old) +{ + return syscall(SYS_getitimer, which, old); +} diff --git a/vendor/modernc.org/libc/musl/src/signal/x32/setitimer.c b/vendor/modernc.org/libc/musl/src/signal/x32/setitimer.c new file mode 100644 index 000000000..21b1f45da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/signal/x32/setitimer.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int setitimer(int which, const struct itimerval *restrict new, struct itimerval *restrict old) +{ + return syscall(SYS_setitimer, which, new, old); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/__xstat.c b/vendor/modernc.org/libc/musl/src/stat/__xstat.c new file mode 100644 index 000000000..630936a0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/__xstat.c @@ -0,0 +1,40 @@ +#include + +#if !_REDIR_TIME64 + +int __fxstat(int ver, int fd, struct stat *buf) +{ + return fstat(fd, buf); +} + +int __fxstatat(int ver, int fd, const char *path, struct stat *buf, int flag) +{ + return fstatat(fd, path, buf, flag); +} + +int __lxstat(int ver, const char *path, struct stat *buf) +{ + return lstat(path, buf); +} + +int __xstat(int ver, const char *path, struct stat *buf) +{ + return stat(path, buf); +} + +weak_alias(__fxstat, __fxstat64); +weak_alias(__fxstatat, __fxstatat64); +weak_alias(__lxstat, __lxstat64); +weak_alias(__xstat, __xstat64); + +#endif + +int __xmknod(int ver, const char *path, mode_t mode, dev_t *dev) +{ + return mknod(path, mode, *dev); +} + +int __xmknodat(int ver, int fd, const char *path, mode_t mode, dev_t *dev) +{ + return mknodat(fd, path, mode, *dev); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/chmod.c b/vendor/modernc.org/libc/musl/src/stat/chmod.c new file mode 100644 index 000000000..d4f53c564 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/chmod.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int chmod(const char *path, mode_t mode) +{ +#ifdef SYS_chmod + return syscall(SYS_chmod, path, mode); +#else + return syscall(SYS_fchmodat, AT_FDCWD, path, mode); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/stat/fchmod.c b/vendor/modernc.org/libc/musl/src/stat/fchmod.c new file mode 100644 index 000000000..7a503eefc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/fchmod.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include "syscall.h" + +int fchmod(int fd, mode_t mode) +{ + int ret = __syscall(SYS_fchmod, fd, mode); + if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) + return __syscall_ret(ret); + + char buf[15+3*sizeof(int)]; + __procfdname(buf, fd); +#ifdef SYS_chmod + return syscall(SYS_chmod, buf, mode); +#else + return syscall(SYS_fchmodat, AT_FDCWD, buf, mode); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/stat/fchmodat.c b/vendor/modernc.org/libc/musl/src/stat/fchmodat.c new file mode 100644 index 000000000..4ee00b0a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/fchmodat.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include "syscall.h" +#include "kstat.h" + +int fchmodat(int fd, const char *path, mode_t mode, int flag) +{ + if (!flag) return syscall(SYS_fchmodat, fd, path, mode, flag); + + if (flag != AT_SYMLINK_NOFOLLOW) + return __syscall_ret(-EINVAL); + + struct kstat st; + int ret, fd2; + char proc[15+3*sizeof(int)]; + + if ((ret = __syscall(SYS_fstatat, fd, path, &st, flag))) + return __syscall_ret(ret); + if (S_ISLNK(st.st_mode)) + return __syscall_ret(-EOPNOTSUPP); + + if ((fd2 = __syscall(SYS_openat, fd, path, O_RDONLY|O_PATH|O_NOFOLLOW|O_NOCTTY|O_CLOEXEC)) < 0) { + if (fd2 == -ELOOP) + return __syscall_ret(-EOPNOTSUPP); + return __syscall_ret(fd2); + } + + __procfdname(proc, fd2); + ret = __syscall(SYS_fstatat, AT_FDCWD, proc, &st, 0); + if (!ret) { + if (S_ISLNK(st.st_mode)) ret = -EOPNOTSUPP; + else ret = __syscall(SYS_fchmodat, AT_FDCWD, proc, mode); + } + + __syscall(SYS_close, fd2); + return __syscall_ret(ret); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/fstat.c b/vendor/modernc.org/libc/musl/src/stat/fstat.c new file mode 100644 index 000000000..9bbb46dec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/fstat.c @@ -0,0 +1,15 @@ +#define _BSD_SOURCE +#include +#include +#include +#include "syscall.h" + +int fstat(int fd, struct stat *st) +{ + if (fd<0) return __syscall_ret(-EBADF); + return fstatat(fd, "", st, AT_EMPTY_PATH); +} + +#if !_REDIR_TIME64 +weak_alias(fstat, fstat64); +#endif diff --git a/vendor/modernc.org/libc/musl/src/stat/fstatat.c b/vendor/modernc.org/libc/musl/src/stat/fstatat.c new file mode 100644 index 000000000..de165b5c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/fstatat.c @@ -0,0 +1,147 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "kstat.h" + +struct statx { + uint32_t stx_mask; + uint32_t stx_blksize; + uint64_t stx_attributes; + uint32_t stx_nlink; + uint32_t stx_uid; + uint32_t stx_gid; + uint16_t stx_mode; + uint16_t pad1; + uint64_t stx_ino; + uint64_t stx_size; + uint64_t stx_blocks; + uint64_t stx_attributes_mask; + struct { + int64_t tv_sec; + uint32_t tv_nsec; + int32_t pad; + } stx_atime, stx_btime, stx_ctime, stx_mtime; + uint32_t stx_rdev_major; + uint32_t stx_rdev_minor; + uint32_t stx_dev_major; + uint32_t stx_dev_minor; + uint64_t spare[14]; +}; + +static int fstatat_statx(int fd, const char *restrict path, struct stat *restrict st, int flag) +{ + struct statx stx; + + int ret = __syscall(SYS_statx, fd, path, flag, 0x7ff, &stx); + if (ret) return ret; + + *st = (struct stat){ + .st_dev = makedev(stx.stx_dev_major, stx.stx_dev_minor), + .st_ino = stx.stx_ino, + .st_mode = stx.stx_mode, + .st_nlink = stx.stx_nlink, + .st_uid = stx.stx_uid, + .st_gid = stx.stx_gid, + .st_rdev = makedev(stx.stx_rdev_major, stx.stx_rdev_minor), + .st_size = stx.stx_size, + .st_blksize = stx.stx_blksize, + .st_blocks = stx.stx_blocks, + .st_atim.tv_sec = stx.stx_atime.tv_sec, + .st_atim.tv_nsec = stx.stx_atime.tv_nsec, + .st_mtim.tv_sec = stx.stx_mtime.tv_sec, + .st_mtim.tv_nsec = stx.stx_mtime.tv_nsec, + .st_ctim.tv_sec = stx.stx_ctime.tv_sec, + .st_ctim.tv_nsec = stx.stx_ctime.tv_nsec, +#if _REDIR_TIME64 + .__st_atim32.tv_sec = stx.stx_atime.tv_sec, + .__st_atim32.tv_nsec = stx.stx_atime.tv_nsec, + .__st_mtim32.tv_sec = stx.stx_mtime.tv_sec, + .__st_mtim32.tv_nsec = stx.stx_mtime.tv_nsec, + .__st_ctim32.tv_sec = stx.stx_ctime.tv_sec, + .__st_ctim32.tv_nsec = stx.stx_ctime.tv_nsec, +#endif + }; + return 0; +} + +static int fstatat_kstat(int fd, const char *restrict path, struct stat *restrict st, int flag) +{ + int ret; + struct kstat kst; + + if (flag==AT_EMPTY_PATH && fd>=0 && !*path) { + ret = __syscall(SYS_fstat, fd, &kst); + if (ret==-EBADF && __syscall(SYS_fcntl, fd, F_GETFD)>=0) { + ret = __syscall(SYS_fstatat, fd, path, &kst, flag); + if (ret==-EINVAL) { + char buf[15+3*sizeof(int)]; + __procfdname(buf, fd); +#ifdef SYS_stat + ret = __syscall(SYS_stat, buf, &kst); +#else + ret = __syscall(SYS_fstatat, AT_FDCWD, buf, &kst, 0); +#endif + } + } + } +#ifdef SYS_lstat + else if ((fd == AT_FDCWD || *path=='/') && flag==AT_SYMLINK_NOFOLLOW) + ret = __syscall(SYS_lstat, path, &kst); +#endif +#ifdef SYS_stat + else if ((fd == AT_FDCWD || *path=='/') && !flag) + ret = __syscall(SYS_stat, path, &kst); +#endif + else ret = __syscall(SYS_fstatat, fd, path, &kst, flag); + + if (ret) return ret; + + *st = (struct stat){ + .st_dev = kst.st_dev, + .st_ino = kst.st_ino, + .st_mode = kst.st_mode, + .st_nlink = kst.st_nlink, + .st_uid = kst.st_uid, + .st_gid = kst.st_gid, + .st_rdev = kst.st_rdev, + .st_size = kst.st_size, + .st_blksize = kst.st_blksize, + .st_blocks = kst.st_blocks, + .st_atim.tv_sec = kst.st_atime_sec, + .st_atim.tv_nsec = kst.st_atime_nsec, + .st_mtim.tv_sec = kst.st_mtime_sec, + .st_mtim.tv_nsec = kst.st_mtime_nsec, + .st_ctim.tv_sec = kst.st_ctime_sec, + .st_ctim.tv_nsec = kst.st_ctime_nsec, +#if _REDIR_TIME64 + .__st_atim32.tv_sec = kst.st_atime_sec, + .__st_atim32.tv_nsec = kst.st_atime_nsec, + .__st_mtim32.tv_sec = kst.st_mtime_sec, + .__st_mtim32.tv_nsec = kst.st_mtime_nsec, + .__st_ctim32.tv_sec = kst.st_ctime_sec, + .__st_ctim32.tv_nsec = kst.st_ctime_nsec, +#endif + }; + + return 0; +} + +int fstatat(int fd, const char *restrict path, struct stat *restrict st, int flag) +{ + int ret; + if (sizeof((struct kstat){0}.st_atime_sec) < sizeof(time_t)) { + ret = fstatat_statx(fd, path, st, flag); + if (ret!=-ENOSYS) return __syscall_ret(ret); + } + ret = fstatat_kstat(fd, path, st, flag); + return __syscall_ret(ret); +} + +#if !_REDIR_TIME64 +weak_alias(fstatat, fstatat64); +#endif diff --git a/vendor/modernc.org/libc/musl/src/stat/futimens.c b/vendor/modernc.org/libc/musl/src/stat/futimens.c new file mode 100644 index 000000000..360225b86 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/futimens.c @@ -0,0 +1,6 @@ +#include + +int futimens(int fd, const struct timespec times[2]) +{ + return utimensat(fd, 0, times, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/futimesat.c b/vendor/modernc.org/libc/musl/src/stat/futimesat.c new file mode 100644 index 000000000..4bdb1c296 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/futimesat.c @@ -0,0 +1,22 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int __futimesat(int dirfd, const char *pathname, const struct timeval times[2]) +{ + struct timespec ts[2]; + if (times) { + int i; + for (i=0; i<2; i++) { + if (times[i].tv_usec >= 1000000ULL) + return __syscall_ret(-EINVAL); + ts[i].tv_sec = times[i].tv_sec; + ts[i].tv_nsec = times[i].tv_usec * 1000; + } + } + return utimensat(dirfd, pathname, times ? ts : 0, 0); +} + +weak_alias(__futimesat, futimesat); diff --git a/vendor/modernc.org/libc/musl/src/stat/lchmod.c b/vendor/modernc.org/libc/musl/src/stat/lchmod.c new file mode 100644 index 000000000..f324ba798 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/lchmod.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include + +int lchmod(const char *path, mode_t mode) +{ + return fchmodat(AT_FDCWD, path, mode, AT_SYMLINK_NOFOLLOW); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/lstat.c b/vendor/modernc.org/libc/musl/src/stat/lstat.c new file mode 100644 index 000000000..6fe004dec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/lstat.c @@ -0,0 +1,11 @@ +#include +#include + +int lstat(const char *restrict path, struct stat *restrict buf) +{ + return fstatat(AT_FDCWD, path, buf, AT_SYMLINK_NOFOLLOW); +} + +#if !_REDIR_TIME64 +weak_alias(lstat, lstat64); +#endif diff --git a/vendor/modernc.org/libc/musl/src/stat/mkdir.c b/vendor/modernc.org/libc/musl/src/stat/mkdir.c new file mode 100644 index 000000000..32625b7de --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mkdir.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int mkdir(const char *path, mode_t mode) +{ +#ifdef SYS_mkdir + return syscall(SYS_mkdir, path, mode); +#else + return syscall(SYS_mkdirat, AT_FDCWD, path, mode); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/stat/mkdirat.c b/vendor/modernc.org/libc/musl/src/stat/mkdirat.c new file mode 100644 index 000000000..b8bc2527d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mkdirat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mkdirat(int fd, const char *path, mode_t mode) +{ + return syscall(SYS_mkdirat, fd, path, mode); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/mkfifo.c b/vendor/modernc.org/libc/musl/src/stat/mkfifo.c new file mode 100644 index 000000000..60efcf73f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mkfifo.c @@ -0,0 +1,6 @@ +#include + +int mkfifo(const char *path, mode_t mode) +{ + return mknod(path, mode | S_IFIFO, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/mkfifoat.c b/vendor/modernc.org/libc/musl/src/stat/mkfifoat.c new file mode 100644 index 000000000..d3a1f9708 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mkfifoat.c @@ -0,0 +1,6 @@ +#include + +int mkfifoat(int fd, const char *path, mode_t mode) +{ + return mknodat(fd, path, mode | S_IFIFO, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/mknod.c b/vendor/modernc.org/libc/musl/src/stat/mknod.c new file mode 100644 index 000000000..beebd84e0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mknod.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int mknod(const char *path, mode_t mode, dev_t dev) +{ +#ifdef SYS_mknod + return syscall(SYS_mknod, path, mode, dev); +#else + return syscall(SYS_mknodat, AT_FDCWD, path, mode, dev); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/stat/mknodat.c b/vendor/modernc.org/libc/musl/src/stat/mknodat.c new file mode 100644 index 000000000..7c97c91aa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/mknodat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int mknodat(int fd, const char *path, mode_t mode, dev_t dev) +{ + return syscall(SYS_mknodat, fd, path, mode, dev); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/stat.c b/vendor/modernc.org/libc/musl/src/stat/stat.c new file mode 100644 index 000000000..ea70efc4a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/stat.c @@ -0,0 +1,11 @@ +#include +#include + +int stat(const char *restrict path, struct stat *restrict buf) +{ + return fstatat(AT_FDCWD, path, buf, 0); +} + +#if !_REDIR_TIME64 +weak_alias(stat, stat64); +#endif diff --git a/vendor/modernc.org/libc/musl/src/stat/statvfs.c b/vendor/modernc.org/libc/musl/src/stat/statvfs.c new file mode 100644 index 000000000..f65d1b548 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/statvfs.c @@ -0,0 +1,63 @@ +#include +#include +#include "syscall.h" + +static int __statfs(const char *path, struct statfs *buf) +{ + *buf = (struct statfs){0}; +#ifdef SYS_statfs64 + return syscall(SYS_statfs64, path, sizeof *buf, buf); +#else + return syscall(SYS_statfs, path, buf); +#endif +} + +static int __fstatfs(int fd, struct statfs *buf) +{ + *buf = (struct statfs){0}; +#ifdef SYS_fstatfs64 + return syscall(SYS_fstatfs64, fd, sizeof *buf, buf); +#else + return syscall(SYS_fstatfs, fd, buf); +#endif +} + +weak_alias(__statfs, statfs); +weak_alias(__fstatfs, fstatfs); + +static void fixup(struct statvfs *out, const struct statfs *in) +{ + *out = (struct statvfs){0}; + out->f_bsize = in->f_bsize; + out->f_frsize = in->f_frsize ? in->f_frsize : in->f_bsize; + out->f_blocks = in->f_blocks; + out->f_bfree = in->f_bfree; + out->f_bavail = in->f_bavail; + out->f_files = in->f_files; + out->f_ffree = in->f_ffree; + out->f_favail = in->f_ffree; + out->f_fsid = in->f_fsid.__val[0]; + out->f_flag = in->f_flags; + out->f_namemax = in->f_namelen; +} + +int statvfs(const char *restrict path, struct statvfs *restrict buf) +{ + struct statfs kbuf; + if (__statfs(path, &kbuf)<0) return -1; + fixup(buf, &kbuf); + return 0; +} + +int fstatvfs(int fd, struct statvfs *buf) +{ + struct statfs kbuf; + if (__fstatfs(fd, &kbuf)<0) return -1; + fixup(buf, &kbuf); + return 0; +} + +weak_alias(statvfs, statvfs64); +weak_alias(statfs, statfs64); +weak_alias(fstatvfs, fstatvfs64); +weak_alias(fstatfs, fstatfs64); diff --git a/vendor/modernc.org/libc/musl/src/stat/umask.c b/vendor/modernc.org/libc/musl/src/stat/umask.c new file mode 100644 index 000000000..5ee913e2d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/umask.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +mode_t umask(mode_t mode) +{ + return syscall(SYS_umask, mode); +} diff --git a/vendor/modernc.org/libc/musl/src/stat/utimensat.c b/vendor/modernc.org/libc/musl/src/stat/utimensat.c new file mode 100644 index 000000000..730723a9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stat/utimensat.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define NS_SPECIAL(ns) ((ns)==UTIME_NOW || (ns)==UTIME_OMIT) + +int utimensat(int fd, const char *path, const struct timespec times[2], int flags) +{ + int r; + if (times && times[0].tv_nsec==UTIME_NOW && times[1].tv_nsec==UTIME_NOW) + times = 0; +#ifdef SYS_utimensat_time64 + r = -ENOSYS; + time_t s0=0, s1=0; + long ns0=0, ns1=0; + if (times) { + ns0 = times[0].tv_nsec; + ns1 = times[1].tv_nsec; + if (!NS_SPECIAL(ns0)) s0 = times[0].tv_sec; + if (!NS_SPECIAL(ns1)) s1 = times[1].tv_sec; + } + if (SYS_utimensat == SYS_utimensat_time64 || !IS32BIT(s0) || !IS32BIT(s1)) + r = __syscall(SYS_utimensat_time64, fd, path, times ? + ((long long[]){s0, ns0, s1, ns1}) : 0, flags); + if (SYS_utimensat == SYS_utimensat_time64 || r!=-ENOSYS) + return __syscall_ret(r); + if (!IS32BIT(s0) || !IS32BIT(s1)) + return __syscall_ret(-ENOTSUP); + r = __syscall(SYS_utimensat, fd, path, + times ? ((long[]){s0, ns0, s1, ns1}) : 0, flags); +#else + r = __syscall(SYS_utimensat, fd, path, times, flags); +#endif + +#ifdef SYS_futimesat + if (r != -ENOSYS || flags) return __syscall_ret(r); + long *tv=0, tmp[4]; + if (times) { + int i; + tv = tmp; + for (i=0; i<2; i++) { + if (times[i].tv_nsec >= 1000000000ULL) { + if (NS_SPECIAL(times[i].tv_nsec)) + return __syscall_ret(-ENOSYS); + return __syscall_ret(-EINVAL); + } + tmp[2*i+0] = times[i].tv_sec; + tmp[2*i+1] = times[i].tv_nsec / 1000; + } + } + + r = __syscall(SYS_futimesat, fd, path, tv); + if (r != -ENOSYS || fd != AT_FDCWD) return __syscall_ret(r); + r = __syscall(SYS_utimes, path, tv); +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__fclose_ca.c b/vendor/modernc.org/libc/musl/src/stdio/__fclose_ca.c new file mode 100644 index 000000000..e0b12a15a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__fclose_ca.c @@ -0,0 +1,6 @@ +#include "stdio_impl.h" + +int __fclose_ca(FILE *f) +{ + return f->close(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__fdopen.c b/vendor/modernc.org/libc/musl/src/stdio/__fdopen.c new file mode 100644 index 000000000..116e78e56 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__fdopen.c @@ -0,0 +1,61 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include +#include "libc.h" + +FILE *__fdopen(int fd, const char *mode) +{ + FILE *f; + struct winsize wsz; + + /* Check for valid initial mode character */ + if (!strchr("rwa", *mode)) { + errno = EINVAL; + return 0; + } + + /* Allocate FILE+buffer or fail */ + if (!(f=malloc(sizeof *f + UNGET + BUFSIZ))) return 0; + + /* Zero-fill only the struct, not the buffer */ + memset(f, 0, sizeof *f); + + /* Impose mode restrictions */ + if (!strchr(mode, '+')) f->flags = (*mode == 'r') ? F_NOWR : F_NORD; + + /* Apply close-on-exec flag */ + if (strchr(mode, 'e')) __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC); + + /* Set append mode on fd if opened for append */ + if (*mode == 'a') { + int flags = __syscall(SYS_fcntl, fd, F_GETFL); + if (!(flags & O_APPEND)) + __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND); + f->flags |= F_APP; + } + + f->fd = fd; + f->buf = (unsigned char *)f + sizeof *f + UNGET; + f->buf_size = BUFSIZ; + + /* Activate line buffered mode for terminals */ + f->lbf = EOF; + if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz)) + f->lbf = '\n'; + + /* Initialize op ptrs. No problem if some are unneeded. */ + f->read = __stdio_read; + f->write = __stdio_write; + f->seek = __stdio_seek; + f->close = __stdio_close; + + if (!libc.threaded) f->lock = -1; + + /* Add new FILE to open file list */ + return __ofl_add(f); +} + +weak_alias(__fdopen, fdopen); diff --git a/vendor/modernc.org/libc/musl/src/stdio/__fmodeflags.c b/vendor/modernc.org/libc/musl/src/stdio/__fmodeflags.c new file mode 100644 index 000000000..da9f23b63 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__fmodeflags.c @@ -0,0 +1,16 @@ +#include +#include + +int __fmodeflags(const char *mode) +{ + int flags; + if (strchr(mode, '+')) flags = O_RDWR; + else if (*mode == 'r') flags = O_RDONLY; + else flags = O_WRONLY; + if (strchr(mode, 'x')) flags |= O_EXCL; + if (strchr(mode, 'e')) flags |= O_CLOEXEC; + if (*mode != 'r') flags |= O_CREAT; + if (*mode == 'w') flags |= O_TRUNC; + if (*mode == 'a') flags |= O_APPEND; + return flags; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__fopen_rb_ca.c b/vendor/modernc.org/libc/musl/src/stdio/__fopen_rb_ca.c new file mode 100644 index 000000000..183a5d553 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__fopen_rb_ca.c @@ -0,0 +1,22 @@ +#include "stdio_impl.h" +#include +#include + +FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t len) +{ + memset(f, 0, sizeof *f); + + f->fd = sys_open(filename, O_RDONLY|O_CLOEXEC); + if (f->fd < 0) return 0; + __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC); + + f->flags = F_NOWR | F_PERM; + f->buf = buf + UNGET; + f->buf_size = len - UNGET; + f->read = __stdio_read; + f->seek = __stdio_seek; + f->close = __stdio_close; + f->lock = -1; + + return f; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__lockfile.c b/vendor/modernc.org/libc/musl/src/stdio/__lockfile.c new file mode 100644 index 000000000..0f60a1499 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__lockfile.c @@ -0,0 +1,23 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" + +int __lockfile(FILE *f) +{ + int owner = f->lock, tid = __pthread_self()->tid; + if ((owner & ~MAYBE_WAITERS) == tid) + return 0; + owner = a_cas(&f->lock, 0, tid); + if (!owner) return 1; + while ((owner = a_cas(&f->lock, 0, tid|MAYBE_WAITERS))) { + if ((owner & MAYBE_WAITERS) || + a_cas(&f->lock, owner, owner|MAYBE_WAITERS)==owner) + __futexwait(&f->lock, owner|MAYBE_WAITERS, 1); + } + return 1; +} + +void __unlockfile(FILE *f) +{ + if (a_swap(&f->lock, 0) & MAYBE_WAITERS) + __wake(&f->lock, 1, 1); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__overflow.c b/vendor/modernc.org/libc/musl/src/stdio/__overflow.c new file mode 100644 index 000000000..e65a594dd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__overflow.c @@ -0,0 +1,10 @@ +#include "stdio_impl.h" + +int __overflow(FILE *f, int _c) +{ + unsigned char c = _c; + if (!f->wend && __towrite(f)) return EOF; + if (f->wpos != f->wend && c != f->lbf) return *f->wpos++ = c; + if (f->write(f, &c, 1)!=1) return EOF; + return c; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdio_close.c b/vendor/modernc.org/libc/musl/src/stdio/__stdio_close.c new file mode 100644 index 000000000..79452bdb6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdio_close.c @@ -0,0 +1,13 @@ +#include "stdio_impl.h" + +static int dummy(int fd) +{ + return fd; +} + +weak_alias(dummy, __aio_close); + +int __stdio_close(FILE *f) +{ + return syscall(SYS_close, __aio_close(f->fd)); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdio_exit.c b/vendor/modernc.org/libc/musl/src/stdio/__stdio_exit.c new file mode 100644 index 000000000..a5e42c675 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdio_exit.c @@ -0,0 +1,25 @@ +#include "stdio_impl.h" + +static FILE *volatile dummy_file = 0; +weak_alias(dummy_file, __stdin_used); +weak_alias(dummy_file, __stdout_used); +weak_alias(dummy_file, __stderr_used); + +static void close_file(FILE *f) +{ + if (!f) return; + FFINALLOCK(f); + if (f->wpos != f->wbase) f->write(f, 0, 0); + if (f->rpos != f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR); +} + +void __stdio_exit(void) +{ + FILE *f; + for (f=*__ofl_lock(); f; f=f->next) close_file(f); + close_file(__stdin_used); + close_file(__stdout_used); + close_file(__stderr_used); +} + +weak_alias(__stdio_exit, __stdio_exit_needed); diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdio_read.c b/vendor/modernc.org/libc/musl/src/stdio/__stdio_read.c new file mode 100644 index 000000000..ea675da34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdio_read.c @@ -0,0 +1,24 @@ +#include "stdio_impl.h" +#include + +size_t __stdio_read(FILE *f, unsigned char *buf, size_t len) +{ + struct iovec iov[2] = { + { .iov_base = buf, .iov_len = len - !!f->buf_size }, + { .iov_base = f->buf, .iov_len = f->buf_size } + }; + ssize_t cnt; + + cnt = iov[0].iov_len ? syscall(SYS_readv, f->fd, iov, 2) + : syscall(SYS_read, f->fd, iov[1].iov_base, iov[1].iov_len); + if (cnt <= 0) { + f->flags |= cnt ? F_ERR : F_EOF; + return 0; + } + if (cnt <= iov[0].iov_len) return cnt; + cnt -= iov[0].iov_len; + f->rpos = f->buf; + f->rend = f->buf + cnt; + if (f->buf_size) buf[len-1] = *f->rpos++; + return len; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdio_seek.c b/vendor/modernc.org/libc/musl/src/stdio/__stdio_seek.c new file mode 100644 index 000000000..326ab9bce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdio_seek.c @@ -0,0 +1,7 @@ +#include "stdio_impl.h" +#include + +off_t __stdio_seek(FILE *f, off_t off, int whence) +{ + return __lseek(f->fd, off, whence); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdio_write.c b/vendor/modernc.org/libc/musl/src/stdio/__stdio_write.c new file mode 100644 index 000000000..d2d89475b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdio_write.c @@ -0,0 +1,34 @@ +#include "stdio_impl.h" +#include + +size_t __stdio_write(FILE *f, const unsigned char *buf, size_t len) +{ + struct iovec iovs[2] = { + { .iov_base = f->wbase, .iov_len = f->wpos-f->wbase }, + { .iov_base = (void *)buf, .iov_len = len } + }; + struct iovec *iov = iovs; + size_t rem = iov[0].iov_len + iov[1].iov_len; + int iovcnt = 2; + ssize_t cnt; + for (;;) { + cnt = syscall(SYS_writev, f->fd, iov, iovcnt); + if (cnt == rem) { + f->wend = f->buf + f->buf_size; + f->wpos = f->wbase = f->buf; + return len; + } + if (cnt < 0) { + f->wpos = f->wbase = f->wend = 0; + f->flags |= F_ERR; + return iovcnt == 2 ? 0 : len-iov[0].iov_len; + } + rem -= cnt; + if (cnt > iov[0].iov_len) { + cnt -= iov[0].iov_len; + iov++; iovcnt--; + } + iov[0].iov_base = (char *)iov[0].iov_base + cnt; + iov[0].iov_len -= cnt; + } +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__stdout_write.c b/vendor/modernc.org/libc/musl/src/stdio/__stdout_write.c new file mode 100644 index 000000000..dd1ec60ff --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__stdout_write.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" +#include + +size_t __stdout_write(FILE *f, const unsigned char *buf, size_t len) +{ + struct winsize wsz; + f->write = __stdio_write; + if (!(f->flags & F_SVB) && __syscall(SYS_ioctl, f->fd, TIOCGWINSZ, &wsz)) + f->lbf = -1; + return __stdio_write(f, buf, len); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__toread.c b/vendor/modernc.org/libc/musl/src/stdio/__toread.c new file mode 100644 index 000000000..fbac92657 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__toread.c @@ -0,0 +1,20 @@ +#include + +int __toread(FILE *f) +{ + f->mode |= f->mode-1; + if (f->wpos != f->wbase) f->write(f, 0, 0); + f->wpos = f->wbase = f->wend = 0; + if (f->flags & F_NORD) { + f->flags |= F_ERR; + return EOF; + } + f->rpos = f->rend = f->buf + f->buf_size; + return (f->flags & F_EOF) ? EOF : 0; +} + +hidden void __toread_needs_stdio_exit() +{ + abort(); //TODO- + // __stdio_exit_needed(); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__towrite.c b/vendor/modernc.org/libc/musl/src/stdio/__towrite.c new file mode 100644 index 000000000..4c9c66ae7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__towrite.c @@ -0,0 +1,23 @@ +#include "stdio_impl.h" + +int __towrite(FILE *f) +{ + f->mode |= f->mode-1; + if (f->flags & F_NOWR) { + f->flags |= F_ERR; + return EOF; + } + /* Clear read buffer (easier than summoning nasal demons) */ + f->rpos = f->rend = 0; + + /* Activate write through the buffer. */ + f->wpos = f->wbase = f->buf; + f->wend = f->buf + f->buf_size; + + return 0; +} + +hidden void __towrite_needs_stdio_exit() +{ + __stdio_exit_needed(); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/__uflow.c b/vendor/modernc.org/libc/musl/src/stdio/__uflow.c new file mode 100644 index 000000000..2a88bca6b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/__uflow.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" + +/* This function assumes it will never be called if there is already + * data buffered for reading. */ + +int __uflow(FILE *f) +{ + unsigned char c; + if (!__toread(f) && f->read(f, &c, 1)==1) return c; + return EOF; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/asprintf.c b/vendor/modernc.org/libc/musl/src/stdio/asprintf.c new file mode 100644 index 000000000..4ec83534e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/asprintf.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include +#include + +int asprintf(char **s, const char *fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vasprintf(s, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/clearerr.c b/vendor/modernc.org/libc/musl/src/stdio/clearerr.c new file mode 100644 index 000000000..3bf94d307 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/clearerr.c @@ -0,0 +1,10 @@ +#include "stdio_impl.h" + +void clearerr(FILE *f) +{ + FLOCK(f); + f->flags &= ~(F_EOF|F_ERR); + FUNLOCK(f); +} + +weak_alias(clearerr, clearerr_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/dprintf.c b/vendor/modernc.org/libc/musl/src/stdio/dprintf.c new file mode 100644 index 000000000..93082ee79 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/dprintf.c @@ -0,0 +1,12 @@ +#include +#include + +int dprintf(int fd, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vdprintf(fd, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/ext.c b/vendor/modernc.org/libc/musl/src/stdio/ext.c new file mode 100644 index 000000000..1fd954901 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ext.c @@ -0,0 +1,57 @@ +#define _GNU_SOURCE +#include "stdio_impl.h" +#include + +void _flushlbf(void) +{ + fflush(0); +} + +int __fsetlocking(FILE *f, int type) +{ + return 0; +} + +int __fwriting(FILE *f) +{ + return (f->flags & F_NORD) || f->wend; +} + +int __freading(FILE *f) +{ + return (f->flags & F_NOWR) || f->rend; +} + +int __freadable(FILE *f) +{ + return !(f->flags & F_NORD); +} + +int __fwritable(FILE *f) +{ + return !(f->flags & F_NOWR); +} + +int __flbf(FILE *f) +{ + return f->lbf >= 0; +} + +size_t __fbufsize(FILE *f) +{ + return f->buf_size; +} + +size_t __fpending(FILE *f) +{ + return f->wend ? f->wpos - f->wbase : 0; +} + +int __fpurge(FILE *f) +{ + f->wpos = f->wbase = f->wend = 0; + f->rpos = f->rend = 0; + return 0; +} + +weak_alias(__fpurge, fpurge); diff --git a/vendor/modernc.org/libc/musl/src/stdio/ext2.c b/vendor/modernc.org/libc/musl/src/stdio/ext2.c new file mode 100644 index 000000000..341627801 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ext2.c @@ -0,0 +1,24 @@ +#include "stdio_impl.h" +#include + +size_t __freadahead(FILE *f) +{ + return f->rend ? f->rend - f->rpos : 0; +} + +const char *__freadptr(FILE *f, size_t *sizep) +{ + if (f->rpos == f->rend) return 0; + *sizep = f->rend - f->rpos; + return (const char *)f->rpos; +} + +void __freadptrinc(FILE *f, size_t inc) +{ + f->rpos += inc; +} + +void __fseterr(FILE *f) +{ + f->flags |= F_ERR; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fclose.c b/vendor/modernc.org/libc/musl/src/stdio/fclose.c new file mode 100644 index 000000000..d594532bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fclose.c @@ -0,0 +1,38 @@ +#include "stdio_impl.h" +#include + +static void dummy(FILE *f) { } +weak_alias(dummy, __unlist_locked_file); + +int fclose(FILE *f) +{ + int r; + + FLOCK(f); + r = fflush(f); + r |= f->close(f); + FUNLOCK(f); + + /* Past this point, f is closed and any further explict access + * to it is undefined. However, it still exists as an entry in + * the open file list and possibly in the thread's locked files + * list, if it was closed while explicitly locked. Functions + * which process these lists must tolerate dead FILE objects + * (which necessarily have inactive buffer pointers) without + * producing any side effects. */ + + if (f->flags & F_PERM) return r; + + __unlist_locked_file(f); + + FILE **head = __ofl_lock(); + if (f->prev) f->prev->next = f->next; + if (f->next) f->next->prev = f->prev; + if (*head == f) *head = f->next; + __ofl_unlock(); + + free(f->getln_buf); + free(f); + + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/feof.c b/vendor/modernc.org/libc/musl/src/stdio/feof.c new file mode 100644 index 000000000..56da6b917 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/feof.c @@ -0,0 +1,14 @@ +#include "stdio_impl.h" + +#undef feof + +int feof(FILE *f) +{ + FLOCK(f); + int ret = !!(f->flags & F_EOF); + FUNLOCK(f); + return ret; +} + +weak_alias(feof, feof_unlocked); +weak_alias(feof, _IO_feof_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/ferror.c b/vendor/modernc.org/libc/musl/src/stdio/ferror.c new file mode 100644 index 000000000..d692eed94 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ferror.c @@ -0,0 +1,14 @@ +#include "stdio_impl.h" + +#undef ferror + +int ferror(FILE *f) +{ + FLOCK(f); + int ret = !!(f->flags & F_ERR); + FUNLOCK(f); + return ret; +} + +weak_alias(ferror, ferror_unlocked); +weak_alias(ferror, _IO_ferror_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fflush.c b/vendor/modernc.org/libc/musl/src/stdio/fflush.c new file mode 100644 index 000000000..b00943764 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fflush.c @@ -0,0 +1,47 @@ +#include "stdio_impl.h" + +/* stdout.c will override this if linked */ +static FILE *volatile dummy = 0; +weak_alias(dummy, __stdout_used); +weak_alias(dummy, __stderr_used); + +int fflush(FILE *f) +{ + if (!f) { + int r = 0; + if (__stdout_used) r |= fflush(__stdout_used); + if (__stderr_used) r |= fflush(__stderr_used); + + for (f=*__ofl_lock(); f; f=f->next) { + FLOCK(f); + if (f->wpos != f->wbase) r |= fflush(f); + FUNLOCK(f); + } + __ofl_unlock(); + + return r; + } + + FLOCK(f); + + /* If writing, flush output */ + if (f->wpos != f->wbase) { + f->write(f, 0, 0); + if (!f->wpos) { + FUNLOCK(f); + return EOF; + } + } + + /* If reading, sync position, per POSIX */ + if (f->rpos != f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR); + + /* Clear read and write modes */ + f->wpos = f->wbase = f->wend = 0; + f->rpos = f->rend = 0; + + FUNLOCK(f); + return 0; +} + +weak_alias(fflush, fflush_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgetc.c b/vendor/modernc.org/libc/musl/src/stdio/fgetc.c new file mode 100644 index 000000000..2578afccd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgetc.c @@ -0,0 +1,7 @@ +#include +#include "getc.h" + +int fgetc(FILE *f) +{ + return do_getc(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgetln.c b/vendor/modernc.org/libc/musl/src/stdio/fgetln.c new file mode 100644 index 000000000..5748435d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgetln.c @@ -0,0 +1,21 @@ +#define _GNU_SOURCE +#include "stdio_impl.h" +#include + +char *fgetln(FILE *f, size_t *plen) +{ + char *ret = 0, *z; + ssize_t l; + FLOCK(f); + ungetc(getc_unlocked(f), f); + if (f->rend && (z=memchr(f->rpos, '\n', f->rend - f->rpos))) { + ret = (char *)f->rpos; + *plen = ++z - ret; + f->rpos = (void *)z; + } else if ((l = getline(&f->getln_buf, (size_t[]){0}, f)) > 0) { + *plen = l; + ret = f->getln_buf; + } + FUNLOCK(f); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgetpos.c b/vendor/modernc.org/libc/musl/src/stdio/fgetpos.c new file mode 100644 index 000000000..50813d2c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgetpos.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" + +int fgetpos(FILE *restrict f, fpos_t *restrict pos) +{ + off_t off = __ftello(f); + if (off < 0) return -1; + *(long long *)pos = off; + return 0; +} + +weak_alias(fgetpos, fgetpos64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgets.c b/vendor/modernc.org/libc/musl/src/stdio/fgets.c new file mode 100644 index 000000000..6171f398d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgets.c @@ -0,0 +1,48 @@ +#include "stdio_impl.h" +#include + +#define MIN(a,b) ((a)<(b) ? (a) : (b)) + +char *fgets(char *restrict s, int n, FILE *restrict f) +{ + char *p = s; + unsigned char *z; + size_t k; + int c; + + FLOCK(f); + + if (n--<=1) { + f->mode |= f->mode-1; + FUNLOCK(f); + if (n) return 0; + *s = 0; + return s; + } + + while (n) { + if (f->rpos != f->rend) { + z = memchr(f->rpos, '\n', f->rend - f->rpos); + k = z ? z - f->rpos + 1 : f->rend - f->rpos; + k = MIN(k, n); + memcpy(p, f->rpos, k); + f->rpos += k; + p += k; + n -= k; + if (z || !n) break; + } + if ((c = getc_unlocked(f)) < 0) { + if (p==s || !feof(f)) s = 0; + break; + } + n--; + if ((*p++ = c) == '\n') break; + } + if (s) *p = 0; + + FUNLOCK(f); + + return s; +} + +weak_alias(fgets, fgets_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgetwc.c b/vendor/modernc.org/libc/musl/src/stdio/fgetwc.c new file mode 100644 index 000000000..aa10b8185 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgetwc.c @@ -0,0 +1,68 @@ +#include "stdio_impl.h" +#include "locale_impl.h" +#include +#include + +static wint_t __fgetwc_unlocked_internal(FILE *f) +{ + wchar_t wc; + int c; + size_t l; + + /* Convert character from buffer if possible */ + if (f->rpos != f->rend) { + l = mbtowc(&wc, (void *)f->rpos, f->rend - f->rpos); + if (l+1 >= 1) { + f->rpos += l + !l; /* l==0 means 1 byte, null */ + return wc; + } + } + + /* Convert character byte-by-byte */ + mbstate_t st = { 0 }; + unsigned char b; + int first = 1; + do { + b = c = getc_unlocked(f); + if (c < 0) { + if (!first) { + f->flags |= F_ERR; + errno = EILSEQ; + } + return WEOF; + } + l = mbrtowc(&wc, (void *)&b, 1, &st); + if (l == -1) { + if (!first) { + f->flags |= F_ERR; + ungetc(b, f); + } + return WEOF; + } + first = 0; + } while (l == -2); + + return wc; +} + +wint_t __fgetwc_unlocked(FILE *f) +{ + locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; + if (f->mode <= 0) fwide(f, 1); + *ploc = f->locale; + wchar_t wc = __fgetwc_unlocked_internal(f); + *ploc = loc; + return wc; +} + +wint_t fgetwc(FILE *f) +{ + wint_t c; + FLOCK(f); + c = __fgetwc_unlocked(f); + FUNLOCK(f); + return c; +} + +weak_alias(__fgetwc_unlocked, fgetwc_unlocked); +weak_alias(__fgetwc_unlocked, getwc_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fgetws.c b/vendor/modernc.org/libc/musl/src/stdio/fgetws.c new file mode 100644 index 000000000..b08b30491 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fgetws.c @@ -0,0 +1,33 @@ +#include "stdio_impl.h" +#include +#include + +wint_t __fgetwc_unlocked(FILE *); + +wchar_t *fgetws(wchar_t *restrict s, int n, FILE *restrict f) +{ + wchar_t *p = s; + + if (!n--) return s; + + FLOCK(f); + + /* Setup a dummy errno so we can detect EILSEQ. This is + * the only way to catch encoding errors in the form of a + * partial character just before EOF. */ + errno = EAGAIN; + for (; n; n--) { + wint_t c = __fgetwc_unlocked(f); + if (c == WEOF) break; + *p++ = c; + if (c == '\n') break; + } + *p = 0; + if (ferror(f) || errno==EILSEQ) p = s; + + FUNLOCK(f); + + return (p == s) ? NULL : s; +} + +weak_alias(fgetws, fgetws_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fileno.c b/vendor/modernc.org/libc/musl/src/stdio/fileno.c new file mode 100644 index 000000000..0bd0e9889 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fileno.c @@ -0,0 +1,16 @@ +#include "stdio_impl.h" +#include + +int fileno(FILE *f) +{ + FLOCK(f); + int fd = f->fd; + FUNLOCK(f); + if (fd < 0) { + errno = EBADF; + return -1; + } + return fd; +} + +weak_alias(fileno, fileno_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/flockfile.c b/vendor/modernc.org/libc/musl/src/stdio/flockfile.c new file mode 100644 index 000000000..8e2206514 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/flockfile.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" + +void flockfile(FILE *f) +{ + if (!ftrylockfile(f)) return; + __lockfile(f); + __register_locked_file(f, __pthread_self()); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fmemopen.c b/vendor/modernc.org/libc/musl/src/stdio/fmemopen.c new file mode 100644 index 000000000..343e3e3fe --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fmemopen.c @@ -0,0 +1,127 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include +#include "libc.h" + +struct cookie { + size_t pos, len, size; + unsigned char *buf; + int mode; +}; + +struct mem_FILE { + FILE f; + struct cookie c; + unsigned char buf[UNGET+BUFSIZ], buf2[]; +}; + +static off_t mseek(FILE *f, off_t off, int whence) +{ + ssize_t base; + struct cookie *c = f->cookie; + if (whence>2U) { +fail: + errno = EINVAL; + return -1; + } + base = (size_t [3]){0, c->pos, c->len}[whence]; + if (off < -base || off > (ssize_t)c->size-base) goto fail; + return c->pos = base+off; +} + +static size_t mread(FILE *f, unsigned char *buf, size_t len) +{ + struct cookie *c = f->cookie; + size_t rem = c->len - c->pos; + if (c->pos > c->len) rem = 0; + if (len > rem) { + len = rem; + f->flags |= F_EOF; + } + memcpy(buf, c->buf+c->pos, len); + c->pos += len; + rem -= len; + if (rem > f->buf_size) rem = f->buf_size; + f->rpos = f->buf; + f->rend = f->buf + rem; + memcpy(f->rpos, c->buf+c->pos, rem); + c->pos += rem; + return len; +} + +static size_t mwrite(FILE *f, const unsigned char *buf, size_t len) +{ + struct cookie *c = f->cookie; + size_t rem; + size_t len2 = f->wpos - f->wbase; + if (len2) { + f->wpos = f->wbase; + if (mwrite(f, f->wpos, len2) < len2) return 0; + } + if (c->mode == 'a') c->pos = c->len; + rem = c->size - c->pos; + if (len > rem) len = rem; + memcpy(c->buf+c->pos, buf, len); + c->pos += len; + if (c->pos > c->len) { + c->len = c->pos; + if (c->len < c->size) c->buf[c->len] = 0; + else if ((f->flags&F_NORD) && c->size) c->buf[c->size-1] = 0; + } + return len; +} + +static int mclose(FILE *m) +{ + return 0; +} + +FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode) +{ + struct mem_FILE *f; + int plus = !!strchr(mode, '+'); + + if (!strchr("rwa", *mode)) { + errno = EINVAL; + return 0; + } + + if (!buf && size > PTRDIFF_MAX) { + errno = ENOMEM; + return 0; + } + + f = malloc(sizeof *f + (buf?0:size)); + if (!f) return 0; + memset(f, 0, offsetof(struct mem_FILE, buf)); + f->f.cookie = &f->c; + f->f.fd = -1; + f->f.lbf = EOF; + f->f.buf = f->buf + UNGET; + f->f.buf_size = sizeof f->buf - UNGET; + if (!buf) { + buf = f->buf2; + memset(buf, 0, size); + } + + f->c.buf = buf; + f->c.size = size; + f->c.mode = *mode; + + if (!plus) f->f.flags = (*mode == 'r') ? F_NOWR : F_NORD; + if (*mode == 'r') f->c.len = size; + else if (*mode == 'a') f->c.len = f->c.pos = strnlen(buf, size); + else if (plus) *f->c.buf = 0; + + f->f.read = mread; + f->f.write = mwrite; + f->f.seek = mseek; + f->f.close = mclose; + + if (!libc.threaded) f->f.lock = -1; + + return __ofl_add(&f->f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fopen.c b/vendor/modernc.org/libc/musl/src/stdio/fopen.c new file mode 100644 index 000000000..e1b91e12d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fopen.c @@ -0,0 +1,33 @@ +#include "stdio_impl.h" +#include +#include +#include + +FILE *fopen(const char *restrict filename, const char *restrict mode) +{ + FILE *f; + int fd; + int flags; + + /* Check for valid initial mode character */ + if (!strchr("rwa", *mode)) { + errno = EINVAL; + return 0; + } + + /* Compute the flags to pass to open() */ + flags = __fmodeflags(mode); + + fd = sys_open(filename, flags, 0666); + if (fd < 0) return 0; + if (flags & O_CLOEXEC) + __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC); + + f = __fdopen(fd, mode); + if (f) return f; + + __syscall(SYS_close, fd); + return 0; +} + +weak_alias(fopen, fopen64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fopencookie.c b/vendor/modernc.org/libc/musl/src/stdio/fopencookie.c new file mode 100644 index 000000000..da042fe8a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fopencookie.c @@ -0,0 +1,135 @@ +#define _GNU_SOURCE +#include "stdio_impl.h" +#include +#include +#include +#include +#include + +struct fcookie { + void *cookie; + cookie_io_functions_t iofuncs; +}; + +struct cookie_FILE { + FILE f; + struct fcookie fc; + unsigned char buf[UNGET+BUFSIZ]; +}; + +static size_t cookieread(FILE *f, unsigned char *buf, size_t len) +{ + struct fcookie *fc = f->cookie; + ssize_t ret = -1; + size_t remain = len, readlen = 0; + size_t len2 = len - !!f->buf_size; + + if (!fc->iofuncs.read) goto bail; + + if (len2) { + ret = fc->iofuncs.read(fc->cookie, (char *) buf, len2); + if (ret <= 0) goto bail; + + readlen += ret; + remain -= ret; + } + + if (!f->buf_size || remain > !!f->buf_size) return readlen; + + f->rpos = f->buf; + ret = fc->iofuncs.read(fc->cookie, (char *) f->rpos, f->buf_size); + if (ret <= 0) goto bail; + f->rend = f->rpos + ret; + + buf[readlen++] = *f->rpos++; + + return readlen; + +bail: + f->flags |= ret == 0 ? F_EOF : F_ERR; + f->rpos = f->rend = f->buf; + return readlen; +} + +static size_t cookiewrite(FILE *f, const unsigned char *buf, size_t len) +{ + struct fcookie *fc = f->cookie; + ssize_t ret; + size_t len2 = f->wpos - f->wbase; + if (!fc->iofuncs.write) return len; + if (len2) { + f->wpos = f->wbase; + if (cookiewrite(f, f->wpos, len2) < len2) return 0; + } + ret = fc->iofuncs.write(fc->cookie, (const char *) buf, len); + if (ret < 0) { + f->wpos = f->wbase = f->wend = 0; + f->flags |= F_ERR; + return 0; + } + return ret; +} + +static off_t cookieseek(FILE *f, off_t off, int whence) +{ + struct fcookie *fc = f->cookie; + int res; + if (whence > 2U) { + errno = EINVAL; + return -1; + } + if (!fc->iofuncs.seek) { + errno = ENOTSUP; + return -1; + } + res = fc->iofuncs.seek(fc->cookie, &off, whence); + if (res < 0) + return res; + return off; +} + +static int cookieclose(FILE *f) +{ + struct fcookie *fc = f->cookie; + if (fc->iofuncs.close) return fc->iofuncs.close(fc->cookie); + return 0; +} + +FILE *fopencookie(void *cookie, const char *mode, cookie_io_functions_t iofuncs) +{ + struct cookie_FILE *f; + + /* Check for valid initial mode character */ + if (!strchr("rwa", *mode)) { + errno = EINVAL; + return 0; + } + + /* Allocate FILE+fcookie+buffer or fail */ + if (!(f=malloc(sizeof *f))) return 0; + + /* Zero-fill only the struct, not the buffer */ + memset(&f->f, 0, sizeof f->f); + + /* Impose mode restrictions */ + if (!strchr(mode, '+')) f->f.flags = (*mode == 'r') ? F_NOWR : F_NORD; + + /* Set up our fcookie */ + f->fc.cookie = cookie; + f->fc.iofuncs = iofuncs; + + f->f.fd = -1; + f->f.cookie = &f->fc; + f->f.buf = f->buf + UNGET; + f->f.buf_size = sizeof f->buf - UNGET; + f->f.lbf = EOF; + + /* Initialize op ptrs. No problem if some are unneeded. */ + f->f.read = cookieread; + f->f.write = cookiewrite; + f->f.seek = cookieseek; + f->f.close = cookieclose; + + /* Add new FILE to open file list */ + return __ofl_add(&f->f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fprintf.c b/vendor/modernc.org/libc/musl/src/stdio/fprintf.c new file mode 100644 index 000000000..948743f7c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fprintf.c @@ -0,0 +1,12 @@ +#include +#include + +int fprintf(FILE *restrict f, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vfprintf(f, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fputc.c b/vendor/modernc.org/libc/musl/src/stdio/fputc.c new file mode 100644 index 000000000..f364ed38b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fputc.c @@ -0,0 +1,7 @@ +#include +#include "putc.h" + +int fputc(int c, FILE *f) +{ + return do_putc(c, f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fputs.c b/vendor/modernc.org/libc/musl/src/stdio/fputs.c new file mode 100644 index 000000000..1cf344f28 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fputs.c @@ -0,0 +1,10 @@ +#include "stdio_impl.h" +#include + +int fputs(const char *restrict s, FILE *restrict f) +{ + size_t l = strlen(s); + return (fwrite(s, 1, l, f)==l) - 1; +} + +weak_alias(fputs, fputs_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fputwc.c b/vendor/modernc.org/libc/musl/src/stdio/fputwc.c new file mode 100644 index 000000000..789fe9c90 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fputwc.c @@ -0,0 +1,40 @@ +#include "stdio_impl.h" +#include "locale_impl.h" +#include +#include +#include + +wint_t __fputwc_unlocked(wchar_t c, FILE *f) +{ + char mbc[MB_LEN_MAX]; + int l; + locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; + + if (f->mode <= 0) fwide(f, 1); + *ploc = f->locale; + + if (isascii(c)) { + c = putc_unlocked(c, f); + } else if (f->wpos + MB_LEN_MAX < f->wend) { + l = wctomb((void *)f->wpos, c); + if (l < 0) c = WEOF; + else f->wpos += l; + } else { + l = wctomb(mbc, c); + if (l < 0 || __fwritex((void *)mbc, l, f) < l) c = WEOF; + } + if (c==WEOF) f->flags |= F_ERR; + *ploc = loc; + return c; +} + +wint_t fputwc(wchar_t c, FILE *f) +{ + FLOCK(f); + c = __fputwc_unlocked(c, f); + FUNLOCK(f); + return c; +} + +weak_alias(__fputwc_unlocked, fputwc_unlocked); +weak_alias(__fputwc_unlocked, putwc_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fputws.c b/vendor/modernc.org/libc/musl/src/stdio/fputws.c new file mode 100644 index 000000000..0ed02f1c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fputws.c @@ -0,0 +1,29 @@ +#include "stdio_impl.h" +#include "locale_impl.h" +#include + +int fputws(const wchar_t *restrict ws, FILE *restrict f) +{ + unsigned char buf[BUFSIZ]; + size_t l=0; + locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; + + FLOCK(f); + + fwide(f, 1); + *ploc = f->locale; + + while (ws && (l = wcsrtombs((void *)buf, (void*)&ws, sizeof buf, 0))+1 > 1) + if (__fwritex(buf, l, f) < l) { + FUNLOCK(f); + *ploc = loc; + return -1; + } + + FUNLOCK(f); + + *ploc = loc; + return l; /* 0 or -1 */ +} + +weak_alias(fputws, fputws_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fread.c b/vendor/modernc.org/libc/musl/src/stdio/fread.c new file mode 100644 index 000000000..a2116da61 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fread.c @@ -0,0 +1,38 @@ +#include "stdio_impl.h" +#include + +#define MIN(a,b) ((a)<(b) ? (a) : (b)) + +size_t fread(void *restrict destv, size_t size, size_t nmemb, FILE *restrict f) +{ + unsigned char *dest = destv; + size_t len = size*nmemb, l = len, k; + if (!size) nmemb = 0; + + FLOCK(f); + + f->mode |= f->mode-1; + + if (f->rpos != f->rend) { + /* First exhaust the buffer. */ + k = MIN(f->rend - f->rpos, l); + memcpy(dest, f->rpos, k); + f->rpos += k; + dest += k; + l -= k; + } + + /* Read the remainder directly */ + for (; l; l-=k, dest+=k) { + k = __toread(f) ? 0 : f->read(f, dest, l); + if (!k) { + FUNLOCK(f); + return (len-l)/size; + } + } + + FUNLOCK(f); + return nmemb; +} + +weak_alias(fread, fread_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/freopen.c b/vendor/modernc.org/libc/musl/src/stdio/freopen.c new file mode 100644 index 000000000..615d4b47b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/freopen.c @@ -0,0 +1,53 @@ +#include "stdio_impl.h" +#include +#include + +/* The basic idea of this implementation is to open a new FILE, + * hack the necessary parts of the new FILE into the old one, then + * close the new FILE. */ + +/* Locking IS necessary because another thread may provably hold the + * lock, via flockfile or otherwise, when freopen is called, and in that + * case, freopen cannot act until the lock is released. */ + +FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict f) +{ + int fl = __fmodeflags(mode); + FILE *f2; + + FLOCK(f); + + fflush(f); + + if (!filename) { + if (fl&O_CLOEXEC) + __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC); + fl &= ~(O_CREAT|O_EXCL|O_CLOEXEC); + if (syscall(SYS_fcntl, f->fd, F_SETFL, fl) < 0) + goto fail; + } else { + f2 = fopen(filename, mode); + if (!f2) goto fail; + if (f2->fd == f->fd) f2->fd = -1; /* avoid closing in fclose */ + else if (__dup3(f2->fd, f->fd, fl&O_CLOEXEC)<0) goto fail2; + + f->flags = (f->flags & F_PERM) | f2->flags; + f->read = f2->read; + f->write = f2->write; + f->seek = f2->seek; + f->close = f2->close; + + fclose(f2); + } + + FUNLOCK(f); + return f; + +fail2: + fclose(f2); +fail: + fclose(f); + return NULL; +} + +weak_alias(freopen, freopen64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fscanf.c b/vendor/modernc.org/libc/musl/src/stdio/fscanf.c new file mode 100644 index 000000000..f639e118b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fscanf.c @@ -0,0 +1,14 @@ +#include +#include + +int fscanf(FILE *restrict f, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vfscanf(f, fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(fscanf, __isoc99_fscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fseek.c b/vendor/modernc.org/libc/musl/src/stdio/fseek.c new file mode 100644 index 000000000..439308f75 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fseek.c @@ -0,0 +1,43 @@ +#include "stdio_impl.h" + +int __fseeko_unlocked(FILE *f, off_t off, int whence) +{ + /* Adjust relative offset for unread data in buffer, if any. */ + if (whence == SEEK_CUR && f->rend) off -= f->rend - f->rpos; + + /* Flush write buffer, and report error on failure. */ + if (f->wpos != f->wbase) { + f->write(f, 0, 0); + if (!f->wpos) return -1; + } + + /* Leave writing mode */ + f->wpos = f->wbase = f->wend = 0; + + /* Perform the underlying seek. */ + if (f->seek(f, off, whence) < 0) return -1; + + /* If seek succeeded, file is seekable and we discard read buffer. */ + f->rpos = f->rend = 0; + f->flags &= ~F_EOF; + + return 0; +} + +int __fseeko(FILE *f, off_t off, int whence) +{ + int result; + FLOCK(f); + result = __fseeko_unlocked(f, off, whence); + FUNLOCK(f); + return result; +} + +int fseek(FILE *f, long off, int whence) +{ + return __fseeko(f, off, whence); +} + +weak_alias(__fseeko, fseeko); + +weak_alias(fseeko, fseeko64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fsetpos.c b/vendor/modernc.org/libc/musl/src/stdio/fsetpos.c new file mode 100644 index 000000000..77ab8d820 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fsetpos.c @@ -0,0 +1,8 @@ +#include "stdio_impl.h" + +int fsetpos(FILE *f, const fpos_t *pos) +{ + return __fseeko(f, *(const long long *)pos, SEEK_SET); +} + +weak_alias(fsetpos, fsetpos64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/ftell.c b/vendor/modernc.org/libc/musl/src/stdio/ftell.c new file mode 100644 index 000000000..1a2afbbce --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ftell.c @@ -0,0 +1,41 @@ +#include "stdio_impl.h" +#include +#include + +off_t __ftello_unlocked(FILE *f) +{ + off_t pos = f->seek(f, 0, + (f->flags & F_APP) && f->wpos != f->wbase + ? SEEK_END : SEEK_CUR); + if (pos < 0) return pos; + + /* Adjust for data in buffer. */ + if (f->rend) + pos += f->rpos - f->rend; + else if (f->wbase) + pos += f->wpos - f->wbase; + return pos; +} + +off_t __ftello(FILE *f) +{ + off_t pos; + FLOCK(f); + pos = __ftello_unlocked(f); + FUNLOCK(f); + return pos; +} + +long ftell(FILE *f) +{ + off_t pos = __ftello(f); + if (pos > LONG_MAX) { + errno = EOVERFLOW; + return -1; + } + return pos; +} + +weak_alias(__ftello, ftello); + +weak_alias(ftello, ftello64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/ftrylockfile.c b/vendor/modernc.org/libc/musl/src/stdio/ftrylockfile.c new file mode 100644 index 000000000..50650585b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ftrylockfile.c @@ -0,0 +1,46 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" +#include + +void __do_orphaned_stdio_locks() +{ + FILE *f; + for (f=__pthread_self()->stdio_locks; f; f=f->next_locked) + a_store(&f->lock, 0x40000000); +} + +void __unlist_locked_file(FILE *f) +{ + if (f->lockcount) { + if (f->next_locked) f->next_locked->prev_locked = f->prev_locked; + if (f->prev_locked) f->prev_locked->next_locked = f->next_locked; + else __pthread_self()->stdio_locks = f->next_locked; + } +} + +void __register_locked_file(FILE *f, pthread_t self) +{ + f->lockcount = 1; + f->prev_locked = 0; + f->next_locked = self->stdio_locks; + if (f->next_locked) f->next_locked->prev_locked = f; + self->stdio_locks = f; +} + +int ftrylockfile(FILE *f) +{ + pthread_t self = __pthread_self(); + int tid = self->tid; + int owner = f->lock; + if ((owner & ~MAYBE_WAITERS) == tid) { + if (f->lockcount == LONG_MAX) + return -1; + f->lockcount++; + return 0; + } + if (owner < 0) f->lock = owner = 0; + if (owner || a_cas(&f->lock, 0, tid)) + return -1; + __register_locked_file(f, self); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/funlockfile.c b/vendor/modernc.org/libc/musl/src/stdio/funlockfile.c new file mode 100644 index 000000000..44d8b0df5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/funlockfile.c @@ -0,0 +1,13 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" + +void funlockfile(FILE *f) +{ + if (f->lockcount == 1) { + __unlist_locked_file(f); + f->lockcount = 0; + __unlockfile(f); + } else { + f->lockcount--; + } +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fwide.c b/vendor/modernc.org/libc/musl/src/stdio/fwide.c new file mode 100644 index 000000000..8bab634ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fwide.c @@ -0,0 +1,16 @@ +#include +#include "stdio_impl.h" +#include "locale_impl.h" + +int fwide(FILE *f, int mode) +{ + FLOCK(f); + if (mode) { + if (!f->locale) f->locale = MB_CUR_MAX==1 + ? C_LOCALE : UTF8_LOCALE; + if (!f->mode) f->mode = mode>0 ? 1 : -1; + } + mode = f->mode; + FUNLOCK(f); + return mode; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fwprintf.c b/vendor/modernc.org/libc/musl/src/stdio/fwprintf.c new file mode 100644 index 000000000..9ce4f0102 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fwprintf.c @@ -0,0 +1,13 @@ +#include +#include +#include + +int fwprintf(FILE *restrict f, const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vfwprintf(f, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/fwrite.c b/vendor/modernc.org/libc/musl/src/stdio/fwrite.c new file mode 100644 index 000000000..7a567b2c5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fwrite.c @@ -0,0 +1,38 @@ +#include "stdio_impl.h" +#include + +size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict f) +{ + size_t i=0; + + if (!f->wend && __towrite(f)) return 0; + + if (l > f->wend - f->wpos) return f->write(f, s, l); + + if (f->lbf >= 0) { + /* Match /^(.*\n|)/ */ + for (i=l; i && s[i-1] != '\n'; i--); + if (i) { + size_t n = f->write(f, s, i); + if (n < i) return n; + s += i; + l -= i; + } + } + + memcpy(f->wpos, s, l); + f->wpos += l; + return l+i; +} + +size_t fwrite(const void *restrict src, size_t size, size_t nmemb, FILE *restrict f) +{ + size_t k, l = size*nmemb; + if (!size) nmemb = 0; + FLOCK(f); + k = __fwritex(src, l, f); + FUNLOCK(f); + return k==l ? nmemb : k/size; +} + +weak_alias(fwrite, fwrite_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/fwscanf.c b/vendor/modernc.org/libc/musl/src/stdio/fwscanf.c new file mode 100644 index 000000000..530bb7c7e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/fwscanf.c @@ -0,0 +1,15 @@ +#include +#include +#include + +int fwscanf(FILE *restrict f, const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vfwscanf(f, fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(fwscanf,__isoc99_fwscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/getc.c b/vendor/modernc.org/libc/musl/src/stdio/getc.c new file mode 100644 index 000000000..8409fc234 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getc.c @@ -0,0 +1,9 @@ +#include +#include "getc.h" + +int getc(FILE *f) +{ + return do_getc(f); +} + +weak_alias(getc, _IO_getc); diff --git a/vendor/modernc.org/libc/musl/src/stdio/getc.h b/vendor/modernc.org/libc/musl/src/stdio/getc.h new file mode 100644 index 000000000..e24f9905c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getc.h @@ -0,0 +1,22 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" + +#ifdef __GNUC__ +__attribute__((__noinline__)) +#endif +static int locking_getc(FILE *f) +{ + if (a_cas(&f->lock, 0, MAYBE_WAITERS-1)) __lockfile(f); + int c = getc_unlocked(f); + if (a_swap(&f->lock, 0) & MAYBE_WAITERS) + __wake(&f->lock, 1, 1); + return c; +} + +static inline int do_getc(FILE *f) +{ + int l = f->lock; + if (l < 0 || l && (l & ~MAYBE_WAITERS) == __pthread_self()->tid) + return getc_unlocked(f); + return locking_getc(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getc_unlocked.c b/vendor/modernc.org/libc/musl/src/stdio/getc_unlocked.c new file mode 100644 index 000000000..b38dad167 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getc_unlocked.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" + +int (getc_unlocked)(FILE *f) +{ + return getc_unlocked(f); +} + +weak_alias (getc_unlocked, fgetc_unlocked); +weak_alias (getc_unlocked, _IO_getc_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/getchar.c b/vendor/modernc.org/libc/musl/src/stdio/getchar.c new file mode 100644 index 000000000..df395ca95 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getchar.c @@ -0,0 +1,7 @@ +#include +#include "getc.h" + +int getchar(void) +{ + return do_getc(stdin); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getchar_unlocked.c b/vendor/modernc.org/libc/musl/src/stdio/getchar_unlocked.c new file mode 100644 index 000000000..355ac318d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getchar_unlocked.c @@ -0,0 +1,6 @@ +#include "stdio_impl.h" + +int getchar_unlocked(void) +{ + return getc_unlocked(stdin); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getdelim.c b/vendor/modernc.org/libc/musl/src/stdio/getdelim.c new file mode 100644 index 000000000..d2f5b15ab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getdelim.c @@ -0,0 +1,81 @@ +#include "stdio_impl.h" +#include +#include +#include +#include + +ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restrict f) +{ + char *tmp; + unsigned char *z; + size_t k; + size_t i=0; + int c; + + FLOCK(f); + + if (!n || !s) { + f->mode |= f->mode-1; + f->flags |= F_ERR; + FUNLOCK(f); + errno = EINVAL; + return -1; + } + + if (!*s) *n=0; + + for (;;) { + if (f->rpos != f->rend) { + z = memchr(f->rpos, delim, f->rend - f->rpos); + k = z ? z - f->rpos + 1 : f->rend - f->rpos; + } else { + z = 0; + k = 0; + } + if (i+k >= *n) { + size_t m = i+k+2; + if (!z && m < SIZE_MAX/4) m += m/2; + tmp = realloc(*s, m); + if (!tmp) { + m = i+k+2; + tmp = realloc(*s, m); + if (!tmp) { + /* Copy as much as fits and ensure no + * pushback remains in the FILE buf. */ + k = *n-i; + memcpy(*s+i, f->rpos, k); + f->rpos += k; + f->mode |= f->mode-1; + f->flags |= F_ERR; + FUNLOCK(f); + errno = ENOMEM; + return -1; + } + } + *s = tmp; + *n = m; + } + memcpy(*s+i, f->rpos, k); + f->rpos += k; + i += k; + if (z) break; + if ((c = getc_unlocked(f)) == EOF) { + if (!i || !feof(f)) { + FUNLOCK(f); + return -1; + } + break; + } + /* If the byte read by getc won't fit without growing the + * output buffer, push it back for next iteration. */ + if (i+1 >= *n) *--f->rpos = c; + else if (((*s)[i++] = c) == delim) break; + } + (*s)[i] = 0; + + FUNLOCK(f); + + return i; +} + +weak_alias(getdelim, __getdelim); diff --git a/vendor/modernc.org/libc/musl/src/stdio/getline.c b/vendor/modernc.org/libc/musl/src/stdio/getline.c new file mode 100644 index 000000000..476d0b096 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getline.c @@ -0,0 +1,6 @@ +#include + +ssize_t getline(char **restrict s, size_t *restrict n, FILE *restrict f) +{ + return getdelim(s, n, '\n', f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/gets.c b/vendor/modernc.org/libc/musl/src/stdio/gets.c new file mode 100644 index 000000000..17963b93e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/gets.c @@ -0,0 +1,15 @@ +#include "stdio_impl.h" +#include +#include + +char *gets(char *s) +{ + size_t i=0; + int c; + FLOCK(stdin); + while ((c=getc_unlocked(stdin)) != EOF && c != '\n') s[i++] = c; + s[i] = 0; + if (c != '\n' && (!feof(stdin) || !i)) s = 0; + FUNLOCK(stdin); + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getw.c b/vendor/modernc.org/libc/musl/src/stdio/getw.c new file mode 100644 index 000000000..73d2c0d5c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getw.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include + +int getw(FILE *f) +{ + int x; + return fread(&x, sizeof x, 1, f) ? x : EOF; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getwc.c b/vendor/modernc.org/libc/musl/src/stdio/getwc.c new file mode 100644 index 000000000..a5008f0e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getwc.c @@ -0,0 +1,7 @@ +#include "stdio_impl.h" +#include + +wint_t getwc(FILE *f) +{ + return fgetwc(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/getwchar.c b/vendor/modernc.org/libc/musl/src/stdio/getwchar.c new file mode 100644 index 000000000..bd89e0ec9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/getwchar.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" +#include + +wint_t getwchar(void) +{ + return fgetwc(stdin); +} + +weak_alias(getwchar, getwchar_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/ofl.c b/vendor/modernc.org/libc/musl/src/stdio/ofl.c new file mode 100644 index 000000000..f2d3215a9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ofl.c @@ -0,0 +1,16 @@ +#include "stdio_impl.h" +#include "lock.h" + +static FILE *ofl_head; +static volatile int ofl_lock[1]; + +FILE **__ofl_lock() +{ + LOCK(ofl_lock); + return &ofl_head; +} + +void __ofl_unlock() +{ + UNLOCK(ofl_lock); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/ofl_add.c b/vendor/modernc.org/libc/musl/src/stdio/ofl_add.c new file mode 100644 index 000000000..d7de9f15a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ofl_add.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" + +FILE *__ofl_add(FILE *f) +{ + FILE **head = __ofl_lock(); + f->next = *head; + if (*head) (*head)->prev = f; + *head = f; + __ofl_unlock(); + return f; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/open_memstream.c b/vendor/modernc.org/libc/musl/src/stdio/open_memstream.c new file mode 100644 index 000000000..600d27705 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/open_memstream.c @@ -0,0 +1,99 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include "libc.h" + +struct cookie { + char **bufp; + size_t *sizep; + size_t pos; + char *buf; + size_t len; + size_t space; +}; + +struct ms_FILE { + FILE f; + struct cookie c; + unsigned char buf[BUFSIZ]; +}; + +static off_t ms_seek(FILE *f, off_t off, int whence) +{ + ssize_t base; + struct cookie *c = f->cookie; + if (whence>2U) { +fail: + errno = EINVAL; + return -1; + } + base = (size_t [3]){0, c->pos, c->len}[whence]; + if (off < -base || off > SSIZE_MAX-base) goto fail; + return c->pos = base+off; +} + +static size_t ms_write(FILE *f, const unsigned char *buf, size_t len) +{ + struct cookie *c = f->cookie; + size_t len2 = f->wpos - f->wbase; + char *newbuf; + if (len2) { + f->wpos = f->wbase; + if (ms_write(f, f->wbase, len2) < len2) return 0; + } + if (len + c->pos >= c->space) { + len2 = 2*c->space+1 | c->pos+len+1; + newbuf = realloc(c->buf, len2); + if (!newbuf) return 0; + *c->bufp = c->buf = newbuf; + memset(c->buf + c->space, 0, len2 - c->space); + c->space = len2; + } + memcpy(c->buf+c->pos, buf, len); + c->pos += len; + if (c->pos >= c->len) c->len = c->pos; + *c->sizep = c->pos; + return len; +} + +static int ms_close(FILE *f) +{ + return 0; +} + +FILE *open_memstream(char **bufp, size_t *sizep) +{ + struct ms_FILE *f; + char *buf; + + if (!(f=malloc(sizeof *f))) return 0; + if (!(buf=malloc(sizeof *buf))) { + free(f); + return 0; + } + memset(&f->f, 0, sizeof f->f); + memset(&f->c, 0, sizeof f->c); + f->f.cookie = &f->c; + + f->c.bufp = bufp; + f->c.sizep = sizep; + f->c.pos = f->c.len = f->c.space = *sizep = 0; + f->c.buf = *bufp = buf; + *buf = 0; + + f->f.flags = F_NORD; + f->f.fd = -1; + f->f.buf = f->buf; + f->f.buf_size = sizeof f->buf; + f->f.lbf = EOF; + f->f.write = ms_write; + f->f.seek = ms_seek; + f->f.close = ms_close; + f->f.mode = -1; + + if (!libc.threaded) f->f.lock = -1; + + return __ofl_add(&f->f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/open_wmemstream.c b/vendor/modernc.org/libc/musl/src/stdio/open_wmemstream.c new file mode 100644 index 000000000..ed1b561d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/open_wmemstream.c @@ -0,0 +1,102 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include +#include "libc.h" + +struct cookie { + wchar_t **bufp; + size_t *sizep; + size_t pos; + wchar_t *buf; + size_t len; + size_t space; + mbstate_t mbs; +}; + +struct wms_FILE { + FILE f; + struct cookie c; + unsigned char buf[1]; +}; + +static off_t wms_seek(FILE *f, off_t off, int whence) +{ + ssize_t base; + struct cookie *c = f->cookie; + if (whence>2U) { +fail: + errno = EINVAL; + return -1; + } + base = (size_t [3]){0, c->pos, c->len}[whence]; + if (off < -base || off > SSIZE_MAX/4-base) goto fail; + memset(&c->mbs, 0, sizeof c->mbs); + return c->pos = base+off; +} + +static size_t wms_write(FILE *f, const unsigned char *buf, size_t len) +{ + struct cookie *c = f->cookie; + size_t len2; + wchar_t *newbuf; + if (len + c->pos >= c->space) { + len2 = 2*c->space+1 | c->pos+len+1; + if (len2 > SSIZE_MAX/4) return 0; + newbuf = realloc(c->buf, len2*4); + if (!newbuf) return 0; + *c->bufp = c->buf = newbuf; + memset(c->buf + c->space, 0, 4*(len2 - c->space)); + c->space = len2; + } + + len2 = mbsnrtowcs(c->buf+c->pos, (void *)&buf, len, c->space-c->pos, &c->mbs); + if (len2 == -1) return 0; + c->pos += len2; + if (c->pos >= c->len) c->len = c->pos; + *c->sizep = c->pos; + return len; +} + +static int wms_close(FILE *f) +{ + return 0; +} + +FILE *open_wmemstream(wchar_t **bufp, size_t *sizep) +{ + struct wms_FILE *f; + wchar_t *buf; + + if (!(f=malloc(sizeof *f))) return 0; + if (!(buf=malloc(sizeof *buf))) { + free(f); + return 0; + } + memset(&f->f, 0, sizeof f->f); + memset(&f->c, 0, sizeof f->c); + f->f.cookie = &f->c; + + f->c.bufp = bufp; + f->c.sizep = sizep; + f->c.pos = f->c.len = f->c.space = *sizep = 0; + f->c.buf = *bufp = buf; + *buf = 0; + + f->f.flags = F_NORD; + f->f.fd = -1; + f->f.buf = f->buf; + f->f.buf_size = 0; + f->f.lbf = EOF; + f->f.write = wms_write; + f->f.seek = wms_seek; + f->f.close = wms_close; + + if (!libc.threaded) f->f.lock = -1; + + fwide(&f->f, 1); + + return __ofl_add(&f->f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/pclose.c b/vendor/modernc.org/libc/musl/src/stdio/pclose.c new file mode 100644 index 000000000..080a42624 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/pclose.c @@ -0,0 +1,13 @@ +#include "stdio_impl.h" +#include +#include + +int pclose(FILE *f) +{ + int status, r; + pid_t pid = f->pipe_pid; + fclose(f); + while ((r=__syscall(SYS_wait4, pid, &status, 0, 0)) == -EINTR); + if (r<0) return __syscall_ret(r); + return status; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/perror.c b/vendor/modernc.org/libc/musl/src/stdio/perror.c new file mode 100644 index 000000000..d0943f26a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/perror.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include "stdio_impl.h" + +void perror(const char *msg) +{ + FILE *f = stderr; + char *errstr = strerror(errno); + + FLOCK(f); + + /* Save stderr's orientation and encoding rule, since perror is not + * permitted to change them. */ + void *old_locale = f->locale; + int old_mode = f->mode; + + if (msg && *msg) { + fwrite(msg, strlen(msg), 1, f); + fputc(':', f); + fputc(' ', f); + } + fwrite(errstr, strlen(errstr), 1, f); + fputc('\n', f); + + f->mode = old_mode; + f->locale = old_locale; + + FUNLOCK(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/popen.c b/vendor/modernc.org/libc/musl/src/stdio/popen.c new file mode 100644 index 000000000..92cb57ee9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/popen.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include +#include "stdio_impl.h" +#include "syscall.h" + +extern char **__environ; + +FILE *popen(const char *cmd, const char *mode) +{ + int p[2], op, e; + pid_t pid; + FILE *f; + posix_spawn_file_actions_t fa; + + if (*mode == 'r') { + op = 0; + } else if (*mode == 'w') { + op = 1; + } else { + errno = EINVAL; + return 0; + } + + if (pipe2(p, O_CLOEXEC)) return NULL; + f = fdopen(p[op], mode); + if (!f) { + __syscall(SYS_close, p[0]); + __syscall(SYS_close, p[1]); + return NULL; + } + FLOCK(f); + + /* If the child's end of the pipe happens to already be on the final + * fd number to which it will be assigned (either 0 or 1), it must + * be moved to a different fd. Otherwise, there is no safe way to + * remove the close-on-exec flag in the child without also creating + * a file descriptor leak race condition in the parent. */ + if (p[1-op] == 1-op) { + int tmp = fcntl(1-op, F_DUPFD_CLOEXEC, 0); + if (tmp < 0) { + e = errno; + goto fail; + } + __syscall(SYS_close, p[1-op]); + p[1-op] = tmp; + } + + e = ENOMEM; + if (!posix_spawn_file_actions_init(&fa)) { + if (!posix_spawn_file_actions_adddup2(&fa, p[1-op], 1-op)) { + if (!(e = posix_spawn(&pid, "/bin/sh", &fa, 0, + (char *[]){ "sh", "-c", (char *)cmd, 0 }, __environ))) { + posix_spawn_file_actions_destroy(&fa); + f->pipe_pid = pid; + if (!strchr(mode, 'e')) + fcntl(p[op], F_SETFD, 0); + __syscall(SYS_close, p[1-op]); + FUNLOCK(f); + return f; + } + } + posix_spawn_file_actions_destroy(&fa); + } +fail: + fclose(f); + __syscall(SYS_close, p[1-op]); + + errno = e; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/printf.c b/vendor/modernc.org/libc/musl/src/stdio/printf.c new file mode 100644 index 000000000..cebfe404f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/printf.c @@ -0,0 +1,12 @@ +#include +#include + +int printf(const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vfprintf(stdout, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putc.c b/vendor/modernc.org/libc/musl/src/stdio/putc.c new file mode 100644 index 000000000..4744d9787 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putc.c @@ -0,0 +1,9 @@ +#include +#include "putc.h" + +int putc(int c, FILE *f) +{ + return do_putc(c, f); +} + +weak_alias(putc, _IO_putc); diff --git a/vendor/modernc.org/libc/musl/src/stdio/putc.h b/vendor/modernc.org/libc/musl/src/stdio/putc.h new file mode 100644 index 000000000..2014c4ec4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putc.h @@ -0,0 +1,22 @@ +#include "stdio_impl.h" +#include "pthread_impl.h" + +#ifdef __GNUC__ +__attribute__((__noinline__)) +#endif +static int locking_putc(int c, FILE *f) +{ + if (a_cas(&f->lock, 0, MAYBE_WAITERS-1)) __lockfile(f); + c = putc_unlocked(c, f); + if (a_swap(&f->lock, 0) & MAYBE_WAITERS) + __wake(&f->lock, 1, 1); + return c; +} + +static inline int do_putc(int c, FILE *f) +{ + int l = f->lock; + if (l < 0 || l && (l & ~MAYBE_WAITERS) == __pthread_self()->tid) + return putc_unlocked(c, f); + return locking_putc(c, f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putc_unlocked.c b/vendor/modernc.org/libc/musl/src/stdio/putc_unlocked.c new file mode 100644 index 000000000..10071312e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putc_unlocked.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" + +int (putc_unlocked)(int c, FILE *f) +{ + return putc_unlocked(c, f); +} + +weak_alias(putc_unlocked, fputc_unlocked); +weak_alias(putc_unlocked, _IO_putc_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/putchar.c b/vendor/modernc.org/libc/musl/src/stdio/putchar.c new file mode 100644 index 000000000..f044f1697 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putchar.c @@ -0,0 +1,7 @@ +#include +#include "putc.h" + +int putchar(int c) +{ + return do_putc(c, stdout); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putchar_unlocked.c b/vendor/modernc.org/libc/musl/src/stdio/putchar_unlocked.c new file mode 100644 index 000000000..8b5d06034 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putchar_unlocked.c @@ -0,0 +1,6 @@ +#include "stdio_impl.h" + +int putchar_unlocked(int c) +{ + return putc_unlocked(c, stdout); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/puts.c b/vendor/modernc.org/libc/musl/src/stdio/puts.c new file mode 100644 index 000000000..5a38a49b9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/puts.c @@ -0,0 +1,10 @@ +#include "stdio_impl.h" + +int puts(const char *s) +{ + int r; + FLOCK(stdout); + r = -(fputs(s, stdout) < 0 || putc_unlocked('\n', stdout) < 0); + FUNLOCK(stdout); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putw.c b/vendor/modernc.org/libc/musl/src/stdio/putw.c new file mode 100644 index 000000000..0ff9d7fbf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putw.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +int putw(int x, FILE *f) +{ + return (int)fwrite(&x, sizeof x, 1, f)-1; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putwc.c b/vendor/modernc.org/libc/musl/src/stdio/putwc.c new file mode 100644 index 000000000..4bb747334 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putwc.c @@ -0,0 +1,7 @@ +#include "stdio_impl.h" +#include + +wint_t putwc(wchar_t c, FILE *f) +{ + return fputwc(c, f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/putwchar.c b/vendor/modernc.org/libc/musl/src/stdio/putwchar.c new file mode 100644 index 000000000..b249c4ac1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/putwchar.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" +#include + +wint_t putwchar(wchar_t c) +{ + return fputwc(c, stdout); +} + +weak_alias(putwchar, putwchar_unlocked); diff --git a/vendor/modernc.org/libc/musl/src/stdio/remove.c b/vendor/modernc.org/libc/musl/src/stdio/remove.c new file mode 100644 index 000000000..942e301a4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/remove.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include "syscall.h" + +int remove(const char *path) +{ +#ifdef SYS_unlink + int r = __syscall(SYS_unlink, path); +#else + int r = __syscall(SYS_unlinkat, AT_FDCWD, path, 0); +#endif +#ifdef SYS_rmdir + if (r==-EISDIR) r = __syscall(SYS_rmdir, path); +#else + if (r==-EISDIR) r = __syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR); +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/rename.c b/vendor/modernc.org/libc/musl/src/stdio/rename.c new file mode 100644 index 000000000..f540adb6c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/rename.c @@ -0,0 +1,14 @@ +#include +#include +#include "syscall.h" + +int rename(const char *old, const char *new) +{ +#if defined(SYS_rename) + return syscall(SYS_rename, old, new); +#elif defined(SYS_renameat) + return syscall(SYS_renameat, AT_FDCWD, old, AT_FDCWD, new); +#else + return syscall(SYS_renameat2, AT_FDCWD, old, AT_FDCWD, new, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/rewind.c b/vendor/modernc.org/libc/musl/src/stdio/rewind.c new file mode 100644 index 000000000..6f4b58b54 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/rewind.c @@ -0,0 +1,9 @@ +#include "stdio_impl.h" + +void rewind(FILE *f) +{ + FLOCK(f); + __fseeko_unlocked(f, 0, SEEK_SET); + f->flags &= ~F_ERR; + FUNLOCK(f); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/scanf.c b/vendor/modernc.org/libc/musl/src/stdio/scanf.c new file mode 100644 index 000000000..bd77699ca --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/scanf.c @@ -0,0 +1,14 @@ +#include +#include + +int scanf(const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vscanf(fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(scanf,__isoc99_scanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/setbuf.c b/vendor/modernc.org/libc/musl/src/stdio/setbuf.c new file mode 100644 index 000000000..74ad7834a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/setbuf.c @@ -0,0 +1,6 @@ +#include + +void setbuf(FILE *restrict f, char *restrict buf) +{ + setvbuf(f, buf, buf ? _IOFBF : _IONBF, BUFSIZ); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/setbuffer.c b/vendor/modernc.org/libc/musl/src/stdio/setbuffer.c new file mode 100644 index 000000000..71233d2ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/setbuffer.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +void setbuffer(FILE *f, char *buf, size_t size) +{ + setvbuf(f, buf, buf ? _IOFBF : _IONBF, size); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/setlinebuf.c b/vendor/modernc.org/libc/musl/src/stdio/setlinebuf.c new file mode 100644 index 000000000..b93c4d6a1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/setlinebuf.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +void setlinebuf(FILE *f) +{ + setvbuf(f, 0, _IOLBF, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/setvbuf.c b/vendor/modernc.org/libc/musl/src/stdio/setvbuf.c new file mode 100644 index 000000000..523dddc8b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/setvbuf.c @@ -0,0 +1,29 @@ +#include "stdio_impl.h" + +/* The behavior of this function is undefined except when it is the first + * operation on the stream, so the presence or absence of locking is not + * observable in a program whose behavior is defined. Thus no locking is + * performed here. No allocation of buffers is performed, but a buffer + * provided by the caller is used as long as it is suitably sized. */ + +int setvbuf(FILE *restrict f, char *restrict buf, int type, size_t size) +{ + f->lbf = EOF; + + if (type == _IONBF) { + f->buf_size = 0; + } else if (type == _IOLBF || type == _IOFBF) { + if (buf && size >= UNGET) { + f->buf = (void *)(buf + UNGET); + f->buf_size = size - UNGET; + } + if (type == _IOLBF && f->buf_size) + f->lbf = '\n'; + } else { + return -1; + } + + f->flags |= F_SVB; + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/snprintf.c b/vendor/modernc.org/libc/musl/src/stdio/snprintf.c new file mode 100644 index 000000000..771503b28 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/snprintf.c @@ -0,0 +1,13 @@ +#include +#include + +int snprintf(char *restrict s, size_t n, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vsnprintf(s, n, fmt, ap); + va_end(ap); + return ret; +} + diff --git a/vendor/modernc.org/libc/musl/src/stdio/sprintf.c b/vendor/modernc.org/libc/musl/src/stdio/sprintf.c new file mode 100644 index 000000000..9dff524c0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/sprintf.c @@ -0,0 +1,12 @@ +#include +#include + +int sprintf(char *restrict s, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vsprintf(s, fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/sscanf.c b/vendor/modernc.org/libc/musl/src/stdio/sscanf.c new file mode 100644 index 000000000..f2ac2f5da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/sscanf.c @@ -0,0 +1,14 @@ +#include +#include + +int sscanf(const char *restrict s, const char *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vsscanf(s, fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(sscanf,__isoc99_sscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/stderr.c b/vendor/modernc.org/libc/musl/src/stdio/stderr.c new file mode 100644 index 000000000..f2bc4648d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/stderr.c @@ -0,0 +1,18 @@ +#include "stdio_impl.h" + +#undef stderr + +static unsigned char buf[UNGET]; +hidden FILE __stderr_FILE = { + .buf = buf+UNGET, + .buf_size = 0, + .fd = 2, + .flags = F_PERM | F_NORD, + .lbf = -1, + .write = __stdio_write, + .seek = __stdio_seek, + .close = __stdio_close, + .lock = -1, +}; +FILE *const stderr = &__stderr_FILE; +FILE *volatile __stderr_used = &__stderr_FILE; diff --git a/vendor/modernc.org/libc/musl/src/stdio/stdin.c b/vendor/modernc.org/libc/musl/src/stdio/stdin.c new file mode 100644 index 000000000..5aa5262c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/stdin.c @@ -0,0 +1,17 @@ +#include "stdio_impl.h" + +#undef stdin + +static unsigned char buf[BUFSIZ+UNGET]; +hidden FILE __stdin_FILE = { + .buf = buf+UNGET, + .buf_size = sizeof buf-UNGET, + .fd = 0, + .flags = F_PERM | F_NOWR, + .read = __stdio_read, + .seek = __stdio_seek, + .close = __stdio_close, + .lock = -1, +}; +FILE *const stdin = &__stdin_FILE; +FILE *volatile __stdin_used = &__stdin_FILE; diff --git a/vendor/modernc.org/libc/musl/src/stdio/stdout.c b/vendor/modernc.org/libc/musl/src/stdio/stdout.c new file mode 100644 index 000000000..4985a417b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/stdout.c @@ -0,0 +1,18 @@ +#include "stdio_impl.h" + +#undef stdout + +static unsigned char buf[BUFSIZ+UNGET]; +hidden FILE __stdout_FILE = { + .buf = buf+UNGET, + .buf_size = sizeof buf-UNGET, + .fd = 1, + .flags = F_PERM | F_NORD, + .lbf = '\n', + .write = __stdout_write, + .seek = __stdio_seek, + .close = __stdio_close, + .lock = -1, +}; +FILE *const stdout = &__stdout_FILE; +FILE *volatile __stdout_used = &__stdout_FILE; diff --git a/vendor/modernc.org/libc/musl/src/stdio/swprintf.c b/vendor/modernc.org/libc/musl/src/stdio/swprintf.c new file mode 100644 index 000000000..f75eb112e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/swprintf.c @@ -0,0 +1,13 @@ +#include +#include + +int swprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vswprintf(s, n, fmt, ap); + va_end(ap); + return ret; +} + diff --git a/vendor/modernc.org/libc/musl/src/stdio/swscanf.c b/vendor/modernc.org/libc/musl/src/stdio/swscanf.c new file mode 100644 index 000000000..03d572da1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/swscanf.c @@ -0,0 +1,14 @@ +#include +#include + +int swscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vswscanf(s, fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(swscanf,__isoc99_swscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/tempnam.c b/vendor/modernc.org/libc/musl/src/stdio/tempnam.c new file mode 100644 index 000000000..565df6b65 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/tempnam.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "kstat.h" + +#define MAXTRIES 100 + +char *tempnam(const char *dir, const char *pfx) +{ + char s[PATH_MAX]; + size_t l, dl, pl; + int try; + int r; + + if (!dir) dir = P_tmpdir; + if (!pfx) pfx = "temp"; + + dl = strlen(dir); + pl = strlen(pfx); + l = dl + 1 + pl + 1 + 6; + + if (l >= PATH_MAX) { + errno = ENAMETOOLONG; + return 0; + } + + memcpy(s, dir, dl); + s[dl] = '/'; + memcpy(s+dl+1, pfx, pl); + s[dl+1+pl] = '_'; + s[l] = 0; + + for (try=0; try +#include +#include +#include "stdio_impl.h" + +#define MAXTRIES 100 + +FILE *tmpfile(void) +{ + char s[] = "/tmp/tmpfile_XXXXXX"; + int fd; + FILE *f; + int try; + for (try=0; try= 0) { +#ifdef SYS_unlink + __syscall(SYS_unlink, s); +#else + __syscall(SYS_unlinkat, AT_FDCWD, s, 0); +#endif + f = __fdopen(fd, "w+"); + if (!f) __syscall(SYS_close, fd); + return f; + } + } + return 0; +} + +weak_alias(tmpfile, tmpfile64); diff --git a/vendor/modernc.org/libc/musl/src/stdio/tmpnam.c b/vendor/modernc.org/libc/musl/src/stdio/tmpnam.c new file mode 100644 index 000000000..d667a8368 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/tmpnam.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include +#include +#include "syscall.h" +#include "kstat.h" + +#define MAXTRIES 100 + +char *tmpnam(char *buf) +{ + static char internal[L_tmpnam]; + char s[] = "/tmp/tmpnam_XXXXXX"; + int try; + int r; + for (try=0; tryrpos) __toread(f); + if (!f->rpos || f->rpos <= f->buf - UNGET) { + FUNLOCK(f); + return EOF; + } + + *--f->rpos = c; + f->flags &= ~F_EOF; + + FUNLOCK(f); + return (unsigned char)c; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/ungetwc.c b/vendor/modernc.org/libc/musl/src/stdio/ungetwc.c new file mode 100644 index 000000000..9edf366f9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/ungetwc.c @@ -0,0 +1,35 @@ +#include "stdio_impl.h" +#include "locale_impl.h" +#include +#include +#include +#include + +wint_t ungetwc(wint_t c, FILE *f) +{ + unsigned char mbc[MB_LEN_MAX]; + int l; + locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; + + FLOCK(f); + + if (f->mode <= 0) fwide(f, 1); + *ploc = f->locale; + + if (!f->rpos) __toread(f); + if (!f->rpos || c == WEOF || (l = wcrtomb((void *)mbc, c, 0)) < 0 || + f->rpos < f->buf - UNGET + l) { + FUNLOCK(f); + *ploc = loc; + return WEOF; + } + + if (isascii(c)) *--f->rpos = c; + else memcpy(f->rpos -= l, mbc, l); + + f->flags &= ~F_EOF; + + FUNLOCK(f); + *ploc = loc; + return c; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vasprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vasprintf.c new file mode 100644 index 000000000..08251bc20 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vasprintf.c @@ -0,0 +1,15 @@ +#define _GNU_SOURCE +#include +#include +#include + +int vasprintf(char **s, const char *fmt, va_list ap) +{ + va_list ap2; + va_copy(ap2, ap); + int l = vsnprintf(0, 0, fmt, ap2); + va_end(ap2); + + if (l<0 || !(*s=malloc(l+1U))) return -1; + return vsnprintf(*s, l+1U, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vdprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vdprintf.c new file mode 100644 index 000000000..3b9c093bd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vdprintf.c @@ -0,0 +1,11 @@ +#include "stdio_impl.h" + +int vdprintf(int fd, const char *restrict fmt, va_list ap) +{ + FILE f = { + .fd = fd, .lbf = EOF, .write = __stdio_write, + .buf = (void *)fmt, .buf_size = 0, + .lock = -1 + }; + return vfprintf(&f, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vfprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vfprintf.c new file mode 100644 index 000000000..9b961e7f7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vfprintf.c @@ -0,0 +1,696 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Some useful macros */ + +#define MAX(a,b) ((a)>(b) ? (a) : (b)) +#define MIN(a,b) ((a)<(b) ? (a) : (b)) + +/* Convenient bit representation for modifier flags, which all fall + * within 31 codepoints of the space character. */ + +#define ALT_FORM (1U<<'#'-' ') +#define ZERO_PAD (1U<<'0'-' ') +#define LEFT_ADJ (1U<<'-'-' ') +#define PAD_POS (1U<<' '-' ') +#define MARK_POS (1U<<'+'-' ') +#define GROUPED (1U<<'\''-' ') + +#define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS|GROUPED) + +/* State machine to accept length modifiers + conversion specifiers. + * Result is 0 on failure, or an argument type to pop on success. */ + +enum { + BARE, LPRE, LLPRE, HPRE, HHPRE, BIGLPRE, + ZTPRE, JPRE, + STOP, + PTR, INT, UINT, ULLONG, + LONG, ULONG, + SHORT, USHORT, CHAR, UCHAR, + LLONG, SIZET, IMAX, UMAX, PDIFF, UIPTR, + DBL, LDBL, + NOARG, + MAXSTATE +}; + +#define S(x) [(x)-'A'] + +static const unsigned char states[]['z'-'A'+1] = { + { /* 0: bare types */ + S('d') = INT, S('i') = INT, + S('o') = UINT, S('u') = UINT, S('x') = UINT, S('X') = UINT, + S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL, + S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL, + S('c') = CHAR, S('C') = INT, + S('s') = PTR, S('S') = PTR, S('p') = UIPTR, S('n') = PTR, + S('m') = NOARG, + S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE, + S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE, + }, { /* 1: l-prefixed */ + S('d') = LONG, S('i') = LONG, + S('o') = ULONG, S('u') = ULONG, S('x') = ULONG, S('X') = ULONG, + S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL, + S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL, + S('c') = INT, S('s') = PTR, S('n') = PTR, + S('l') = LLPRE, + }, { /* 2: ll-prefixed */ + S('d') = LLONG, S('i') = LLONG, + S('o') = ULLONG, S('u') = ULLONG, + S('x') = ULLONG, S('X') = ULLONG, + S('n') = PTR, + }, { /* 3: h-prefixed */ + S('d') = SHORT, S('i') = SHORT, + S('o') = USHORT, S('u') = USHORT, + S('x') = USHORT, S('X') = USHORT, + S('n') = PTR, + S('h') = HHPRE, + }, { /* 4: hh-prefixed */ + S('d') = CHAR, S('i') = CHAR, + S('o') = UCHAR, S('u') = UCHAR, + S('x') = UCHAR, S('X') = UCHAR, + S('n') = PTR, + }, { /* 5: L-prefixed */ + S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL, + S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL, + S('n') = PTR, + }, { /* 6: z- or t-prefixed (assumed to be same size) */ + S('d') = PDIFF, S('i') = PDIFF, + S('o') = SIZET, S('u') = SIZET, + S('x') = SIZET, S('X') = SIZET, + S('n') = PTR, + }, { /* 7: j-prefixed */ + S('d') = IMAX, S('i') = IMAX, + S('o') = UMAX, S('u') = UMAX, + S('x') = UMAX, S('X') = UMAX, + S('n') = PTR, + } +}; + +#define OOB(x) ((unsigned)(x)-'A' > 'z'-'A') + +union arg +{ + uintmax_t i; + long double f; + void *p; +}; + +static void pop_arg(union arg *arg, int type, va_list *ap) +{ + switch (type) { + case PTR: arg->p = va_arg(*ap, void *); + break; case INT: arg->i = va_arg(*ap, int); + break; case UINT: arg->i = va_arg(*ap, unsigned int); + break; case LONG: arg->i = va_arg(*ap, long); + break; case ULONG: arg->i = va_arg(*ap, unsigned long); + break; case ULLONG: arg->i = va_arg(*ap, unsigned long long); + break; case SHORT: arg->i = (short)va_arg(*ap, int); + break; case USHORT: arg->i = (unsigned short)va_arg(*ap, int); + break; case CHAR: arg->i = (signed char)va_arg(*ap, int); + break; case UCHAR: arg->i = (unsigned char)va_arg(*ap, int); + break; case LLONG: arg->i = va_arg(*ap, long long); + break; case SIZET: arg->i = va_arg(*ap, size_t); + break; case IMAX: arg->i = va_arg(*ap, intmax_t); + break; case UMAX: arg->i = va_arg(*ap, uintmax_t); + break; case PDIFF: arg->i = va_arg(*ap, ptrdiff_t); + break; case UIPTR: arg->i = (uintptr_t)va_arg(*ap, void *); + break; case DBL: arg->f = va_arg(*ap, double); + break; case LDBL: arg->f = va_arg(*ap, long double); + } +} + +static void out(FILE *f, const char *s, size_t l) +{ + if (!(f->flags & F_ERR)) __fwritex((void *)s, l, f); +} + +static void pad(FILE *f, char c, int w, int l, int fl) +{ + char pad[256]; + if (fl & (LEFT_ADJ | ZERO_PAD) || l >= w) return; + l = w - l; + memset(pad, c, l>sizeof pad ? sizeof pad : l); + for (; l >= sizeof pad; l -= sizeof pad) + out(f, pad, sizeof pad); + out(f, pad, l); +} + +static const char xdigits[16] = { + "0123456789ABCDEF" +}; + +static char *fmt_x(uintmax_t x, char *s, int lower) +{ + for (; x; x>>=4) *--s = xdigits[(x&15)]|lower; + return s; +} + +static char *fmt_o(uintmax_t x, char *s) +{ + for (; x; x>>=3) *--s = '0' + (x&7); + return s; +} + +static char *fmt_u(uintmax_t x, char *s) +{ + unsigned long y; + for ( ; x>ULONG_MAX; x/=10) *--s = '0' + x%10; + for (y=x; y; y/=10) *--s = '0' + y%10; + return s; +} + +/* Do not override this check. The floating point printing code below + * depends on the float.h constants being right. If they are wrong, it + * may overflow the stack. */ +#if LDBL_MANT_DIG == 53 +typedef char compiler_defines_long_double_incorrectly[9-(int)sizeof(long double)]; +#endif + +static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t) +{ + uint32_t big[(LDBL_MANT_DIG+28)/29 + 1 // mantissa expansion + + (LDBL_MAX_EXP+LDBL_MANT_DIG+28+8)/9]; // exponent expansion + uint32_t *a, *d, *r, *z; + int e2=0, e, i, j, l; + char buf[9+LDBL_MANT_DIG/4], *s; + const char *prefix="-0X+0X 0X-0x+0x 0x"; + int pl; + char ebuf0[3*sizeof(int)], *ebuf=&ebuf0[3*sizeof(int)], *estr; + + pl=1; + if (signbit(y)) { + y=-y; + } else if (fl & MARK_POS) { + prefix+=3; + } else if (fl & PAD_POS) { + prefix+=6; + } else prefix++, pl=0; + + if (!isfinite(y)) { + char *s = (t&32)?"inf":"INF"; + if (y!=y) s=(t&32)?"nan":"NAN"; + pad(f, ' ', w, 3+pl, fl&~ZERO_PAD); + out(f, prefix, pl); + out(f, s, 3); + pad(f, ' ', w, 3+pl, fl^LEFT_ADJ); + return MAX(w, 3+pl); + } + + y = frexpl(y, &e2) * 2; + if (y) e2--; + + if ((t|32)=='a') { + long double round = 8.0; + int re; + + if (t&32) prefix += 9; + pl += 2; + + if (p<0 || p>=LDBL_MANT_DIG/4-1) re=0; + else re=LDBL_MANT_DIG/4-1-p; + + if (re) { + round *= 1<<(LDBL_MANT_DIG%4); + while (re--) round*=16; + if (*prefix=='-') { + y=-y; + y-=round; + y+=round; + y=-y; + } else { + y+=round; + y-=round; + } + } + + estr=fmt_u(e2<0 ? -e2 : e2, ebuf); + if (estr==ebuf) *--estr='0'; + *--estr = (e2<0 ? '-' : '+'); + *--estr = t+('p'-'a'); + + s=buf; + do { + int x=y; + *s++=xdigits[x]|(t&32); + y=16*(y-x); + if (s-buf==1 && (y||p>0||(fl&ALT_FORM))) *s++='.'; + } while (y); + + if (p > INT_MAX-2-(ebuf-estr)-pl) + return -1; + if (p && s-buf-2 < p) + l = (p+2) + (ebuf-estr); + else + l = (s-buf) + (ebuf-estr); + + pad(f, ' ', w, pl+l, fl); + out(f, prefix, pl); + pad(f, '0', w, pl+l, fl^ZERO_PAD); + out(f, buf, s-buf); + pad(f, '0', l-(ebuf-estr)-(s-buf), 0, 0); + out(f, estr, ebuf-estr); + pad(f, ' ', w, pl+l, fl^LEFT_ADJ); + return MAX(w, pl+l); + } + if (p<0) p=6; + + if (y) y *= 0x1p28, e2-=28; + + if (e2<0) a=r=z=big; + else a=r=z=big+sizeof(big)/sizeof(*big) - LDBL_MANT_DIG - 1; + + do { + *z = y; + y = 1000000000*(y-*z++); + } while (y); + + while (e2>0) { + uint32_t carry=0; + int sh=MIN(29,e2); + for (d=z-1; d>=a; d--) { + uint64_t x = ((uint64_t)*d<a && !z[-1]) z--; + e2-=sh; + } + while (e2<0) { + uint32_t carry=0, *b; + int sh=MIN(9,-e2), need=1+(p+LDBL_MANT_DIG/3U+8)/9; + for (d=a; d>sh) + carry; + carry = (1000000000>>sh) * rm; + } + if (!*a) a++; + if (carry) *z++ = carry; + /* Avoid (slow!) computation past requested precision */ + b = (t|32)=='f' ? r : a; + if (z-b > need) z = b+need; + e2+=sh; + } + + if (a=i; i*=10, e++); + else e=0; + + /* Perform rounding: j is precision after the radix (possibly neg) */ + j = p - ((t|32)!='f')*e - ((t|32)=='g' && p); + if (j < 9*(z-r-1)) { + uint32_t x; + /* We avoid C's broken division of negative numbers */ + d = r + 1 + ((j+9*LDBL_MAX_EXP)/9 - LDBL_MAX_EXP); + j += 9*LDBL_MAX_EXP; + j %= 9; + for (i=10, j++; j<9; i*=10, j++); + x = *d % i; + /* Are there any significant digits past j? */ + if (x || d+1!=z) { + long double round = 2/LDBL_EPSILON; + long double small; + if ((*d/i & 1) || (i==1000000000 && d>a && (d[-1]&1))) + round += 2; + if (x 999999999) { + *d--=0; + if (d=i; i*=10, e++); + } + } + if (z>d+1) z=d+1; + } + for (; z>a && !z[-1]; z--); + + if ((t|32)=='g') { + if (!p) p++; + if (p>e && e>=-4) { + t--; + p-=e+1; + } else { + t-=2; + p--; + } + if (!(fl&ALT_FORM)) { + /* Count trailing zeros in last place */ + if (z>a && z[-1]) for (i=10, j=0; z[-1]%i==0; i*=10, j++); + else j=9; + if ((t|32)=='f') + p = MIN(p,MAX(0,9*(z-r-1)-j)); + else + p = MIN(p,MAX(0,9*(z-r-1)+e-j)); + } + } + if (p > INT_MAX-1-(p || (fl&ALT_FORM))) + return -1; + l = 1 + p + (p || (fl&ALT_FORM)); + if ((t|32)=='f') { + if (e > INT_MAX-l) return -1; + if (e>0) l+=e; + } else { + estr=fmt_u(e<0 ? -e : e, ebuf); + while(ebuf-estr<2) *--estr='0'; + *--estr = (e<0 ? '-' : '+'); + *--estr = t; + if (ebuf-estr > INT_MAX-l) return -1; + l += ebuf-estr; + } + + if (l > INT_MAX-pl) return -1; + pad(f, ' ', w, pl+l, fl); + out(f, prefix, pl); + pad(f, '0', w, pl+l, fl^ZERO_PAD); + + if ((t|32)=='f') { + if (a>r) a=r; + for (d=a; d<=r; d++) { + char *s = fmt_u(*d, buf+9); + if (d!=a) while (s>buf) *--s='0'; + else if (s==buf+9) *--s='0'; + out(f, s, buf+9-s); + } + if (p || (fl&ALT_FORM)) out(f, ".", 1); + for (; d0; d++, p-=9) { + char *s = fmt_u(*d, buf+9); + while (s>buf) *--s='0'; + out(f, s, MIN(9,p)); + } + pad(f, '0', p+9, 9, 0); + } else { + if (z<=a) z=a+1; + for (d=a; d=0; d++) { + char *s = fmt_u(*d, buf+9); + if (s==buf+9) *--s='0'; + if (d!=a) while (s>buf) *--s='0'; + else { + out(f, s++, 1); + if (p>0||(fl&ALT_FORM)) out(f, ".", 1); + } + out(f, s, MIN(buf+9-s, p)); + p -= buf+9-s; + } + pad(f, '0', p+18, 18, 0); + out(f, estr, ebuf-estr); + } + + pad(f, ' ', w, pl+l, fl^LEFT_ADJ); + + return MAX(w, pl+l); +} + +static int getint(char **s) { + int i; + for (i=0; isdigit(**s); (*s)++) { + if (i > INT_MAX/10U || **s-'0' > INT_MAX-10*i) i = -1; + else i = 10*i + (**s-'0'); + } + return i; +} + +static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, int *nl_type) +{ + char *a, *z, *s=(char *)fmt; + unsigned l10n=0, fl; + int w, p, xp; + union arg arg; + int argpos; + unsigned st, ps; + int cnt=0, l=0; + size_t i; + char buf[sizeof(uintmax_t)*3+3+LDBL_MANT_DIG/4]; + const char *prefix; + int t, pl; + wchar_t wc[2], *ws; + char mb[4]; + + for (;;) { + /* This error is only specified for snprintf, but since it's + * unspecified for other forms, do the same. Stop immediately + * on overflow; otherwise %n could produce wrong results. */ + if (l > INT_MAX - cnt) goto overflow; + + /* Update output count, end loop when fmt is exhausted */ + cnt += l; + if (!*s) break; + + /* Handle literal text and %% format specifiers */ + for (a=s; *s && *s!='%'; s++); + for (z=s; s[0]=='%' && s[1]=='%'; z++, s+=2); + if (z-a > INT_MAX-cnt) goto overflow; + l = z-a; + if (f) out(f, a, l); + if (l) continue; + + if (isdigit(s[1]) && s[2]=='$') { + l10n=1; + argpos = s[1]-'0'; + s+=3; + } else { + argpos = -1; + s++; + } + + /* Read modifier flags */ + for (fl=0; (unsigned)*s-' '<32 && (FLAGMASK&(1U<<*s-' ')); s++) + fl |= 1U<<*s-' '; + + /* Read field width */ + if (*s=='*') { + if (isdigit(s[1]) && s[2]=='$') { + l10n=1; + nl_type[s[1]-'0'] = INT; + w = nl_arg[s[1]-'0'].i; + s+=3; + } else if (!l10n) { + w = f ? va_arg(*ap, int) : 0; + s++; + } else goto inval; + if (w<0) fl|=LEFT_ADJ, w=-w; + } else if ((w=getint(&s))<0) goto overflow; + + /* Read precision */ + if (*s=='.' && s[1]=='*') { + if (isdigit(s[2]) && s[3]=='$') { + nl_type[s[2]-'0'] = INT; + p = nl_arg[s[2]-'0'].i; + s+=4; + } else if (!l10n) { + p = f ? va_arg(*ap, int) : 0; + s+=2; + } else goto inval; + xp = (p>=0); + } else if (*s=='.') { + s++; + p = getint(&s); + xp = 1; + } else { + p = -1; + xp = 0; + } + + /* Format specifier state machine */ + st=0; + do { + if (OOB(*s)) goto inval; + ps=st; + st=states[st]S(*s++); + } while (st-1=0) goto inval; + } else { + if (argpos>=0) nl_type[argpos]=st, arg=nl_arg[argpos]; + else if (f) pop_arg(&arg, st, ap); + else return 0; + } + + if (!f) continue; + + z = buf + sizeof(buf); + prefix = "-+ 0X0x"; + pl = 0; + t = s[-1]; + + /* Transform ls,lc -> S,C */ + if (ps && (t&15)==3) t&=~32; + + /* - and 0 flags are mutually exclusive */ + if (fl & LEFT_ADJ) fl &= ~ZERO_PAD; + + switch(t) { + case 'n': + switch(ps) { + case BARE: *(int *)arg.p = cnt; break; + case LPRE: *(long *)arg.p = cnt; break; + case LLPRE: *(long long *)arg.p = cnt; break; + case HPRE: *(unsigned short *)arg.p = cnt; break; + case HHPRE: *(unsigned char *)arg.p = cnt; break; + case ZTPRE: *(size_t *)arg.p = cnt; break; + case JPRE: *(uintmax_t *)arg.p = cnt; break; + } + continue; + case 'p': + p = MAX(p, 2*sizeof(void*)); + t = 'x'; + fl |= ALT_FORM; + case 'x': case 'X': + a = fmt_x(arg.i, z, t&32); + if (arg.i && (fl & ALT_FORM)) prefix+=(t>>4), pl=2; + if (0) { + case 'o': + a = fmt_o(arg.i, z); + if ((fl&ALT_FORM) && pINTMAX_MAX) { + arg.i=-arg.i; + } else if (fl & MARK_POS) { + prefix++; + } else if (fl & PAD_POS) { + prefix+=2; + } else pl=0; + case 'u': + a = fmt_u(arg.i, z); + } + if (xp && p<0) goto overflow; + if (xp) fl &= ~ZERO_PAD; + if (!arg.i && !p) { + a=z; + break; + } + p = MAX(p, z-a + !arg.i); + break; + case 'c': + *(a=z-(p=1))=arg.i; + fl &= ~ZERO_PAD; + break; + case 'm': + if (1) a = strerror(errno); else + case 's': + a = arg.p ? arg.p : "(null)"; + z = a + strnlen(a, p<0 ? INT_MAX : p); + if (p<0 && *z) goto overflow; + p = z-a; + fl &= ~ZERO_PAD; + break; + case 'C': + wc[0] = arg.i; + wc[1] = 0; + arg.p = wc; + p = -1; + case 'S': + ws = arg.p; + for (i=l=0; i

=0 && l<=p-i; i+=l); + if (l<0) return -1; + if (i > INT_MAX) goto overflow; + p = i; + pad(f, ' ', w, p, fl); + ws = arg.p; + for (i=0; i<0U+p && *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l) + out(f, mb, l); + pad(f, ' ', w, p, fl^LEFT_ADJ); + l = w>p ? w : p; + continue; + case 'e': case 'f': case 'g': case 'a': + case 'E': case 'F': case 'G': case 'A': + if (xp && p<0) goto overflow; + l = fmt_fp(f, arg.f, w, p, fl, t); + if (l<0) goto overflow; + continue; + } + + if (p < z-a) p = z-a; + if (p > INT_MAX-pl) goto overflow; + if (w < pl+p) w = pl+p; + if (w > INT_MAX-cnt) goto overflow; + + pad(f, ' ', w, pl+p, fl); + out(f, prefix, pl); + pad(f, '0', w, pl+p, fl^ZERO_PAD); + pad(f, '0', p, z-a, 0); + out(f, a, z-a); + pad(f, ' ', w, pl+p, fl^LEFT_ADJ); + + l = w; + } + + if (f) return cnt; + if (!l10n) return 0; + + for (i=1; i<=NL_ARGMAX && nl_type[i]; i++) + pop_arg(nl_arg+i, nl_type[i], ap); + for (; i<=NL_ARGMAX && !nl_type[i]; i++); + if (i<=NL_ARGMAX) goto inval; + return 1; + +inval: + errno = EINVAL; + return -1; +overflow: + errno = EOVERFLOW; + return -1; +} + +int vfprintf(FILE *restrict f, const char *restrict fmt, va_list ap) +{ + va_list ap2; + int nl_type[NL_ARGMAX+1] = {0}; + union arg nl_arg[NL_ARGMAX+1]; + unsigned char internal_buf[80], *saved_buf = 0; + int olderr; + int ret; + + /* the copy allows passing va_list* even if va_list is an array */ + va_copy(ap2, ap); + if (printf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) { + va_end(ap2); + return -1; + } + + FLOCK(f); + olderr = f->flags & F_ERR; + if (f->mode < 1) f->flags &= ~F_ERR; + if (!f->buf_size) { + saved_buf = f->buf; + f->buf = internal_buf; + f->buf_size = sizeof internal_buf; + f->wpos = f->wbase = f->wend = 0; + } + if (!f->wend && __towrite(f)) ret = -1; + else ret = printf_core(f, fmt, &ap2, nl_arg, nl_type); + if (saved_buf) { + f->write(f, 0, 0); + if (!f->wpos) ret = -1; + f->buf = saved_buf; + f->buf_size = 0; + f->wpos = f->wbase = f->wend = 0; + } + if (f->flags & F_ERR) ret = -1; + f->flags |= olderr; + FUNLOCK(f); + va_end(ap2); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vfscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vfscanf.c new file mode 100644 index 000000000..b78a374d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vfscanf.c @@ -0,0 +1,339 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "stdio_impl.h" +#include "shgetc.h" +#include "intscan.h" +#include "floatscan.h" + +#define SIZE_hh -2 +#define SIZE_h -1 +#define SIZE_def 0 +#define SIZE_l 1 +#define SIZE_L 2 +#define SIZE_ll 3 + +static void store_int(void *dest, int size, unsigned long long i) +{ + if (!dest) return; + switch (size) { + case SIZE_hh: + *(char *)dest = i; + break; + case SIZE_h: + *(short *)dest = i; + break; + case SIZE_def: + *(int *)dest = i; + break; + case SIZE_l: + *(long *)dest = i; + break; + case SIZE_ll: + *(long long *)dest = i; + break; + } +} + +static void *arg_n(va_list ap, unsigned int n) +{ + void *p; + unsigned int i; + va_list ap2; + va_copy(ap2, ap); + for (i=n; i>1; i--) va_arg(ap2, void *); + p = va_arg(ap2, void *); + va_end(ap2); + return p; +} + +int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap) +{ + int width; + int size; + int alloc = 0; + int base; + const unsigned char *p; + int c, t; + char *s; + wchar_t *wcs; + mbstate_t st; + void *dest=NULL; + int invert; + int matches=0; + unsigned long long x; + long double y; + off_t pos = 0; + unsigned char scanset[257]; + size_t i, k; + wchar_t wc; + + FLOCK(f); + + if (!f->rpos) __toread(f); + if (!f->rpos) goto input_fail; + + for (p=(const unsigned char *)fmt; *p; p++) { + + alloc = 0; + + if (isspace(*p)) { + while (isspace(p[1])) p++; + shlim(f, 0); + while (isspace(shgetc(f))); + shunget(f); + pos += shcnt(f); + continue; + } + if (*p != '%' || p[1] == '%') { + shlim(f, 0); + if (*p == '%') { + p++; + while (isspace((c=shgetc(f)))); + } else { + c = shgetc(f); + } + if (c!=*p) { + shunget(f); + if (c<0) goto input_fail; + goto match_fail; + } + pos += shcnt(f); + continue; + } + + p++; + if (*p=='*') { + dest = 0; p++; + } else if (isdigit(*p) && p[1]=='$') { + dest = arg_n(ap, *p-'0'); p+=2; + } else { + dest = va_arg(ap, void *); + } + + for (width=0; isdigit(*p); p++) { + width = 10*width + *p - '0'; + } + + if (*p=='m') { + wcs = 0; + s = 0; + alloc = !!dest; + p++; + } else { + alloc = 0; + } + + size = SIZE_def; + switch (*p++) { + case 'h': + if (*p == 'h') p++, size = SIZE_hh; + else size = SIZE_h; + break; + case 'l': + if (*p == 'l') p++, size = SIZE_ll; + else size = SIZE_l; + break; + case 'j': + size = SIZE_ll; + break; + case 'z': + case 't': + size = SIZE_l; + break; + case 'L': + size = SIZE_L; + break; + case 'd': case 'i': case 'o': case 'u': case 'x': + case 'a': case 'e': case 'f': case 'g': + case 'A': case 'E': case 'F': case 'G': case 'X': + case 's': case 'c': case '[': + case 'S': case 'C': + case 'p': case 'n': + p--; + break; + default: + goto fmt_fail; + } + + t = *p; + + /* C or S */ + if ((t&0x2f) == 3) { + t |= 32; + size = SIZE_l; + } + + switch (t) { + case 'c': + if (width < 1) width = 1; + case '[': + break; + case 'n': + store_int(dest, size, pos); + /* do not increment match count, etc! */ + continue; + default: + shlim(f, 0); + while (isspace(shgetc(f))); + shunget(f); + pos += shcnt(f); + } + + shlim(f, width); + if (shgetc(f) < 0) goto input_fail; + shunget(f); + + switch (t) { + case 's': + case 'c': + case '[': + if (t == 'c' || t == 's') { + memset(scanset, -1, sizeof scanset); + scanset[0] = 0; + if (t == 's') { + scanset[1+'\t'] = 0; + scanset[1+'\n'] = 0; + scanset[1+'\v'] = 0; + scanset[1+'\f'] = 0; + scanset[1+'\r'] = 0; + scanset[1+' '] = 0; + } + } else { + if (*++p == '^') p++, invert = 1; + else invert = 0; + memset(scanset, invert, sizeof scanset); + scanset[0] = 0; + if (*p == '-') p++, scanset[1+'-'] = 1-invert; + else if (*p == ']') p++, scanset[1+']'] = 1-invert; + for (; *p != ']'; p++) { + if (!*p) goto fmt_fail; + if (*p=='-' && p[1] && p[1] != ']') + for (c=p++[-1]; c<*p; c++) + scanset[1+c] = 1-invert; + scanset[1+*p] = 1-invert; + } + } + wcs = 0; + s = 0; + i = 0; + k = t=='c' ? width+1U : 31; + if (size == SIZE_l) { + if (alloc) { + wcs = malloc(k*sizeof(wchar_t)); + if (!wcs) goto alloc_fail; + } else { + wcs = dest; + } + st = (mbstate_t){0}; + while (scanset[(c=shgetc(f))+1]) { + switch (mbrtowc(&wc, &(char){c}, 1, &st)) { + case -1: + goto input_fail; + case -2: + continue; + } + if (wcs) wcs[i++] = wc; + if (alloc && i==k) { + k+=k+1; + wchar_t *tmp = realloc(wcs, k*sizeof(wchar_t)); + if (!tmp) goto alloc_fail; + wcs = tmp; + } + } + if (!mbsinit(&st)) goto input_fail; + } else if (alloc) { + s = malloc(k); + if (!s) goto alloc_fail; + while (scanset[(c=shgetc(f))+1]) { + s[i++] = c; + if (i==k) { + k+=k+1; + char *tmp = realloc(s, k); + if (!tmp) goto alloc_fail; + s = tmp; + } + } + } else if ((s = dest)) { + while (scanset[(c=shgetc(f))+1]) + s[i++] = c; + } else { + while (scanset[(c=shgetc(f))+1]); + } + shunget(f); + if (!shcnt(f)) goto match_fail; + if (t == 'c' && shcnt(f) != width) goto match_fail; + if (alloc) { + if (size == SIZE_l) *(wchar_t **)dest = wcs; + else *(char **)dest = s; + } + if (t != 'c') { + if (wcs) wcs[i] = 0; + if (s) s[i] = 0; + } + break; + case 'p': + case 'X': + case 'x': + base = 16; + goto int_common; + case 'o': + base = 8; + goto int_common; + case 'd': + case 'u': + base = 10; + goto int_common; + case 'i': + base = 0; + int_common: + x = __intscan(f, base, 0, ULLONG_MAX); + if (!shcnt(f)) goto match_fail; + if (t=='p' && dest) *(void **)dest = (void *)(uintptr_t)x; + else store_int(dest, size, x); + break; + case 'a': case 'A': + case 'e': case 'E': + case 'f': case 'F': + case 'g': case 'G': + y = __floatscan(f, size, 0); + if (!shcnt(f)) goto match_fail; + if (dest) switch (size) { + case SIZE_def: + *(float *)dest = y; + break; + case SIZE_l: + *(double *)dest = y; + break; + case SIZE_L: + *(long double *)dest = y; + break; + } + break; + } + + pos += shcnt(f); + if (dest) matches++; + } + if (0) { +fmt_fail: +alloc_fail: +input_fail: + if (!matches) matches--; +match_fail: + if (alloc) { + free(s); + free(wcs); + } + } + FUNLOCK(f); + return matches; +} + +weak_alias(vfscanf,__isoc99_vfscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/vfwprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vfwprintf.c new file mode 100644 index 000000000..85b036c3d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vfwprintf.c @@ -0,0 +1,365 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Convenient bit representation for modifier flags, which all fall + * within 31 codepoints of the space character. */ + +#define ALT_FORM (1U<<'#'-' ') +#define ZERO_PAD (1U<<'0'-' ') +#define LEFT_ADJ (1U<<'-'-' ') +#define PAD_POS (1U<<' '-' ') +#define MARK_POS (1U<<'+'-' ') +#define GROUPED (1U<<'\''-' ') + +#define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS|GROUPED) + +/* State machine to accept length modifiers + conversion specifiers. + * Result is 0 on failure, or an argument type to pop on success. */ + +enum { + BARE, LPRE, LLPRE, HPRE, HHPRE, BIGLPRE, + ZTPRE, JPRE, + STOP, + PTR, INT, UINT, ULLONG, + LONG, ULONG, + SHORT, USHORT, CHAR, UCHAR, + LLONG, SIZET, IMAX, UMAX, PDIFF, UIPTR, + DBL, LDBL, + NOARG, + MAXSTATE +}; + +#define S(x) [(x)-'A'] + +static const unsigned char states[]['z'-'A'+1] = { + { /* 0: bare types */ + S('d') = INT, S('i') = INT, + S('o') = UINT, S('u') = UINT, S('x') = UINT, S('X') = UINT, + S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL, + S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL, + S('c') = CHAR, S('C') = INT, + S('s') = PTR, S('S') = PTR, S('p') = UIPTR, S('n') = PTR, + S('m') = NOARG, + S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE, + S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE, + }, { /* 1: l-prefixed */ + S('d') = LONG, S('i') = LONG, + S('o') = ULONG, S('u') = ULONG, S('x') = ULONG, S('X') = ULONG, + S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL, + S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL, + S('c') = INT, S('s') = PTR, S('n') = PTR, + S('l') = LLPRE, + }, { /* 2: ll-prefixed */ + S('d') = LLONG, S('i') = LLONG, + S('o') = ULLONG, S('u') = ULLONG, + S('x') = ULLONG, S('X') = ULLONG, + S('n') = PTR, + }, { /* 3: h-prefixed */ + S('d') = SHORT, S('i') = SHORT, + S('o') = USHORT, S('u') = USHORT, + S('x') = USHORT, S('X') = USHORT, + S('n') = PTR, + S('h') = HHPRE, + }, { /* 4: hh-prefixed */ + S('d') = CHAR, S('i') = CHAR, + S('o') = UCHAR, S('u') = UCHAR, + S('x') = UCHAR, S('X') = UCHAR, + S('n') = PTR, + }, { /* 5: L-prefixed */ + S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL, + S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL, + S('n') = PTR, + }, { /* 6: z- or t-prefixed (assumed to be same size) */ + S('d') = PDIFF, S('i') = PDIFF, + S('o') = SIZET, S('u') = SIZET, + S('x') = SIZET, S('X') = SIZET, + S('n') = PTR, + }, { /* 7: j-prefixed */ + S('d') = IMAX, S('i') = IMAX, + S('o') = UMAX, S('u') = UMAX, + S('x') = UMAX, S('X') = UMAX, + S('n') = PTR, + } +}; + +#define OOB(x) ((unsigned)(x)-'A' > 'z'-'A') + +union arg +{ + uintmax_t i; + long double f; + void *p; +}; + +static void pop_arg(union arg *arg, int type, va_list *ap) +{ + switch (type) { + case PTR: arg->p = va_arg(*ap, void *); + break; case INT: arg->i = va_arg(*ap, int); + break; case UINT: arg->i = va_arg(*ap, unsigned int); + break; case LONG: arg->i = va_arg(*ap, long); + break; case ULONG: arg->i = va_arg(*ap, unsigned long); + break; case ULLONG: arg->i = va_arg(*ap, unsigned long long); + break; case SHORT: arg->i = (short)va_arg(*ap, int); + break; case USHORT: arg->i = (unsigned short)va_arg(*ap, int); + break; case CHAR: arg->i = (signed char)va_arg(*ap, int); + break; case UCHAR: arg->i = (unsigned char)va_arg(*ap, int); + break; case LLONG: arg->i = va_arg(*ap, long long); + break; case SIZET: arg->i = va_arg(*ap, size_t); + break; case IMAX: arg->i = va_arg(*ap, intmax_t); + break; case UMAX: arg->i = va_arg(*ap, uintmax_t); + break; case PDIFF: arg->i = va_arg(*ap, ptrdiff_t); + break; case UIPTR: arg->i = (uintptr_t)va_arg(*ap, void *); + break; case DBL: arg->f = va_arg(*ap, double); + break; case LDBL: arg->f = va_arg(*ap, long double); + } +} + +static void out(FILE *f, const wchar_t *s, size_t l) +{ + while (l-- && !(f->flags & F_ERR)) fputwc(*s++, f); +} + +static int getint(wchar_t **s) { + int i; + for (i=0; iswdigit(**s); (*s)++) { + if (i > INT_MAX/10U || **s-'0' > INT_MAX-10*i) i = -1; + else i = 10*i + (**s-'0'); + } + return i; +} + +static const char sizeprefix['y'-'a'] = { +['a'-'a']='L', ['e'-'a']='L', ['f'-'a']='L', ['g'-'a']='L', +['d'-'a']='j', ['i'-'a']='j', ['o'-'a']='j', ['u'-'a']='j', ['x'-'a']='j', +['p'-'a']='j' +}; + +static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_arg, int *nl_type) +{ + wchar_t *a, *z, *s=(wchar_t *)fmt; + unsigned l10n=0, fl; + int w, p, xp; + union arg arg; + int argpos; + unsigned st, ps; + int cnt=0, l=0; + int i; + int t; + char *bs; + char charfmt[16]; + wchar_t wc; + + for (;;) { + /* This error is only specified for snprintf, but since it's + * unspecified for other forms, do the same. Stop immediately + * on overflow; otherwise %n could produce wrong results. */ + if (l > INT_MAX - cnt) goto overflow; + + /* Update output count, end loop when fmt is exhausted */ + cnt += l; + if (!*s) break; + + /* Handle literal text and %% format specifiers */ + for (a=s; *s && *s!='%'; s++); + for (z=s; s[0]=='%' && s[1]=='%'; z++, s+=2); + if (z-a > INT_MAX-cnt) goto overflow; + l = z-a; + if (f) out(f, a, l); + if (l) continue; + + if (iswdigit(s[1]) && s[2]=='$') { + l10n=1; + argpos = s[1]-'0'; + s+=3; + } else { + argpos = -1; + s++; + } + + /* Read modifier flags */ + for (fl=0; (unsigned)*s-' '<32 && (FLAGMASK&(1U<<*s-' ')); s++) + fl |= 1U<<*s-' '; + + /* Read field width */ + if (*s=='*') { + if (iswdigit(s[1]) && s[2]=='$') { + l10n=1; + nl_type[s[1]-'0'] = INT; + w = nl_arg[s[1]-'0'].i; + s+=3; + } else if (!l10n) { + w = f ? va_arg(*ap, int) : 0; + s++; + } else goto inval; + if (w<0) fl|=LEFT_ADJ, w=-w; + } else if ((w=getint(&s))<0) goto overflow; + + /* Read precision */ + if (*s=='.' && s[1]=='*') { + if (isdigit(s[2]) && s[3]=='$') { + nl_type[s[2]-'0'] = INT; + p = nl_arg[s[2]-'0'].i; + s+=4; + } else if (!l10n) { + p = f ? va_arg(*ap, int) : 0; + s+=2; + } else goto inval; + xp = (p>=0); + } else if (*s=='.') { + s++; + p = getint(&s); + xp = 1; + } else { + p = -1; + xp = 0; + } + + /* Format specifier state machine */ + st=0; + do { + if (OOB(*s)) goto inval; + ps=st; + st=states[st]S(*s++); + } while (st-1=0) goto inval; + } else { + if (argpos>=0) nl_type[argpos]=st, arg=nl_arg[argpos]; + else if (f) pop_arg(&arg, st, ap); + else return 0; + } + + if (!f) continue; + t = s[-1]; + if (ps && (t&15)==3) t&=~32; + + switch (t) { + case 'n': + switch(ps) { + case BARE: *(int *)arg.p = cnt; break; + case LPRE: *(long *)arg.p = cnt; break; + case LLPRE: *(long long *)arg.p = cnt; break; + case HPRE: *(unsigned short *)arg.p = cnt; break; + case HHPRE: *(unsigned char *)arg.p = cnt; break; + case ZTPRE: *(size_t *)arg.p = cnt; break; + case JPRE: *(uintmax_t *)arg.p = cnt; break; + } + continue; + case 'c': + if (w<1) w=1; + if (w>1 && !(fl&LEFT_ADJ)) fprintf(f, "%*s", w-1, ""); + fputwc(btowc(arg.i), f); + if (w>1 && (fl&LEFT_ADJ)) fprintf(f, "%*s", w-1, ""); + l = w; + continue; + case 'C': + fputwc(arg.i, f); + l = 1; + continue; + case 'S': + a = arg.p; + z = a + wcsnlen(a, p<0 ? INT_MAX : p); + if (p<0 && *z) goto overflow; + p = z-a; + if (w0; bs+=i, l++); + if (i<0) return -1; + if (p<0 && *bs) goto overflow; + p=l; + if (wflags & F_ERR; + f->flags &= ~F_ERR; + ret = wprintf_core(f, fmt, &ap2, nl_arg, nl_type); + if (f->flags & F_ERR) ret = -1; + f->flags |= olderr; + FUNLOCK(f); + va_end(ap2); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vfwscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vfwscanf.c new file mode 100644 index 000000000..82f486044 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vfwscanf.c @@ -0,0 +1,332 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "stdio_impl.h" +#include "shgetc.h" +#include "intscan.h" +#include "floatscan.h" + +#define SIZE_hh -2 +#define SIZE_h -1 +#define SIZE_def 0 +#define SIZE_l 1 +#define SIZE_L 2 +#define SIZE_ll 3 + +static void store_int(void *dest, int size, unsigned long long i) +{ + if (!dest) return; + switch (size) { + case SIZE_hh: + *(char *)dest = i; + break; + case SIZE_h: + *(short *)dest = i; + break; + case SIZE_def: + *(int *)dest = i; + break; + case SIZE_l: + *(long *)dest = i; + break; + case SIZE_ll: + *(long long *)dest = i; + break; + } +} + +static void *arg_n(va_list ap, unsigned int n) +{ + void *p; + unsigned int i; + va_list ap2; + va_copy(ap2, ap); + for (i=n; i>1; i--) va_arg(ap2, void *); + p = va_arg(ap2, void *); + va_end(ap2); + return p; +} + +static int in_set(const wchar_t *set, int c) +{ + int j; + const wchar_t *p = set; + if (*p == '-') { + if (c=='-') return 1; + p++; + } else if (*p == ']') { + if (c==']') return 1; + p++; + } + for (; *p && *p != ']'; p++) { + if (*p=='-' && p[1] && p[1] != ']') + for (j=p++[-1]; j<*p; j++) + if (c==j) return 1; + if (c==*p) return 1; + } + return 0; +} + +#if 1 +#undef getwc +#define getwc(f) \ + ((f)->rpos != (f)->rend && *(f)->rpos < 128 ? *(f)->rpos++ : (getwc)(f)) + +#undef ungetwc +#define ungetwc(c,f) \ + ((f)->rend && (c)<128U ? *--(f)->rpos : ungetwc((c),(f))) +#endif + +int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap) +{ + int width; + int size; + int alloc; + const wchar_t *p; + int c, t; + char *s; + wchar_t *wcs; + void *dest=NULL; + int invert; + int matches=0; + off_t pos = 0, cnt; + static const char size_pfx[][3] = { "hh", "h", "", "l", "L", "ll" }; + char tmp[3*sizeof(int)+10]; + const wchar_t *set; + size_t i, k; + + FLOCK(f); + + fwide(f, 1); + + for (p=fmt; *p; p++) { + + alloc = 0; + + if (iswspace(*p)) { + while (iswspace(p[1])) p++; + while (iswspace((c=getwc(f)))) pos++; + ungetwc(c, f); + continue; + } + if (*p != '%' || p[1] == '%') { + if (*p == '%') { + p++; + while (iswspace((c=getwc(f)))) pos++; + } else { + c = getwc(f); + } + if (c!=*p) { + ungetwc(c, f); + if (c<0) goto input_fail; + goto match_fail; + } + pos++; + continue; + } + + p++; + if (*p=='*') { + dest = 0; p++; + } else if (iswdigit(*p) && p[1]=='$') { + dest = arg_n(ap, *p-'0'); p+=2; + } else { + dest = va_arg(ap, void *); + } + + for (width=0; iswdigit(*p); p++) { + width = 10*width + *p - '0'; + } + + if (*p=='m') { + wcs = 0; + s = 0; + alloc = !!dest; + p++; + } else { + alloc = 0; + } + + size = SIZE_def; + switch (*p++) { + case 'h': + if (*p == 'h') p++, size = SIZE_hh; + else size = SIZE_h; + break; + case 'l': + if (*p == 'l') p++, size = SIZE_ll; + else size = SIZE_l; + break; + case 'j': + size = SIZE_ll; + break; + case 'z': + case 't': + size = SIZE_l; + break; + case 'L': + size = SIZE_L; + break; + case 'd': case 'i': case 'o': case 'u': case 'x': + case 'a': case 'e': case 'f': case 'g': + case 'A': case 'E': case 'F': case 'G': case 'X': + case 's': case 'c': case '[': + case 'S': case 'C': + case 'p': case 'n': + p--; + break; + default: + goto fmt_fail; + } + + t = *p; + + /* Transform S,C -> ls,lc */ + if ((t&0x2f)==3) { + size = SIZE_l; + t |= 32; + } + + if (t != 'n') { + if (t != '[' && (t|32) != 'c') + while (iswspace((c=getwc(f)))) pos++; + else + c=getwc(f); + if (c < 0) goto input_fail; + ungetwc(c, f); + } + + switch (t) { + case 'n': + store_int(dest, size, pos); + /* do not increment match count, etc! */ + continue; + + case 's': + case 'c': + case '[': + if (t == 'c') { + if (width<1) width = 1; + invert = 1; + set = L""; + } else if (t == 's') { + invert = 1; + static const wchar_t spaces[] = { + ' ', '\t', '\n', '\r', 11, 12, 0x0085, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, + 0x2006, 0x2008, 0x2009, 0x200a, + 0x2028, 0x2029, 0x205f, 0x3000, 0 }; + set = spaces; + } else { + if (*++p == '^') p++, invert = 1; + else invert = 0; + set = p; + if (*p==']') p++; + while (*p!=']') { + if (!*p) goto fmt_fail; + p++; + } + } + + s = (size == SIZE_def) ? dest : 0; + wcs = (size == SIZE_l) ? dest : 0; + + int gotmatch = 0; + + if (width < 1) width = -1; + + i = 0; + if (alloc) { + k = t=='c' ? width+1U : 31; + if (size == SIZE_l) { + wcs = malloc(k*sizeof(wchar_t)); + if (!wcs) goto alloc_fail; + } else { + s = malloc(k); + if (!s) goto alloc_fail; + } + } + while (width) { + if ((c=getwc(f))<0) break; + if (in_set(set, c) == invert) + break; + if (wcs) { + wcs[i++] = c; + if (alloc && i==k) { + k += k+1; + wchar_t *tmp = realloc(wcs, k*sizeof(wchar_t)); + if (!tmp) goto alloc_fail; + wcs = tmp; + } + } else if (size != SIZE_l) { + int l = wctomb(s?s+i:tmp, c); + if (l<0) goto input_fail; + i += l; + if (alloc && i > k-4) { + k += k+1; + char *tmp = realloc(s, k); + if (!tmp) goto alloc_fail; + s = tmp; + } + } + pos++; + width-=(width>0); + gotmatch=1; + } + if (width) { + ungetwc(c, f); + if (t == 'c' || !gotmatch) goto match_fail; + } + + if (alloc) { + if (size == SIZE_l) *(wchar_t **)dest = wcs; + else *(char **)dest = s; + } + if (t != 'c') { + if (wcs) wcs[i] = 0; + if (s) s[i] = 0; + } + break; + + case 'd': case 'i': case 'o': case 'u': case 'x': + case 'a': case 'e': case 'f': case 'g': + case 'A': case 'E': case 'F': case 'G': case 'X': + case 'p': + if (width < 1) width = 0; + snprintf(tmp, sizeof tmp, "%.*s%.0d%s%c%%lln", + 1+!dest, "%*", width, size_pfx[size+2], t); + cnt = 0; + if (fscanf(f, tmp, dest?dest:&cnt, &cnt) == -1) + goto input_fail; + else if (!cnt) + goto match_fail; + pos += cnt; + break; + default: + goto fmt_fail; + } + + if (dest) matches++; + } + if (0) { +fmt_fail: +alloc_fail: +input_fail: + if (!matches) matches--; +match_fail: + if (alloc) { + free(s); + free(wcs); + } + } + FUNLOCK(f); + return matches; +} + +weak_alias(vfwscanf,__isoc99_vfwscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/vprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vprintf.c new file mode 100644 index 000000000..30d2bffa8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vprintf.c @@ -0,0 +1,6 @@ +#include + +int vprintf(const char *restrict fmt, va_list ap) +{ + return vfprintf(stdout, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vscanf.c new file mode 100644 index 000000000..9d46ab09d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vscanf.c @@ -0,0 +1,9 @@ +#include +#include + +int vscanf(const char *restrict fmt, va_list ap) +{ + return vfscanf(stdin, fmt, ap); +} + +weak_alias(vscanf,__isoc99_vscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/vsnprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vsnprintf.c new file mode 100644 index 000000000..b3510a634 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vsnprintf.c @@ -0,0 +1,55 @@ +#include "stdio_impl.h" +#include +#include +#include +#include + +struct cookie { + char *s; + size_t n; +}; + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static size_t sn_write(FILE *f, const unsigned char *s, size_t l) +{ + struct cookie *c = f->cookie; + size_t k = MIN(c->n, f->wpos - f->wbase); + if (k) { + memcpy(c->s, f->wbase, k); + c->s += k; + c->n -= k; + } + k = MIN(c->n, l); + if (k) { + memcpy(c->s, s, k); + c->s += k; + c->n -= k; + } + *c->s = 0; + f->wpos = f->wbase = f->buf; + /* pretend to succeed, even if we discarded extra data */ + return l; +} + +int vsnprintf(char *restrict s, size_t n, const char *restrict fmt, va_list ap) +{ + unsigned char buf[1]; + char dummy[1]; + struct cookie c = { .s = n ? s : dummy, .n = n ? n-1 : 0 }; + FILE f = { + .lbf = EOF, + .write = sn_write, + .lock = -1, + .buf = buf, + .cookie = &c, + }; + + if (n > INT_MAX) { + errno = EOVERFLOW; + return -1; + } + + *c.s = 0; + return vfprintf(&f, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vsprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vsprintf.c new file mode 100644 index 000000000..c57349d4d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vsprintf.c @@ -0,0 +1,7 @@ +#include +#include + +int vsprintf(char *restrict s, const char *restrict fmt, va_list ap) +{ + return vsnprintf(s, INT_MAX, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vsscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vsscanf.c new file mode 100644 index 000000000..4d6d259b8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vsscanf.c @@ -0,0 +1,27 @@ +#include "stdio_impl.h" +#include + +static size_t string_read(FILE *f, unsigned char *buf, size_t len) +{ + char *src = f->cookie; + size_t k = len+256; + char *end = memchr(src, 0, k); + if (end) k = end-src; + if (k < len) len = k; + memcpy(buf, src, len); + f->rpos = (void *)(src+len); + f->rend = (void *)(src+k); + f->cookie = src+k; + return len; +} + +int vsscanf(const char *restrict s, const char *restrict fmt, va_list ap) +{ + FILE f = { + .buf = (void *)s, .cookie = (void *)s, + .read = string_read, .lock = -1 + }; + return vfscanf(&f, fmt, ap); +} + +weak_alias(vsscanf,__isoc99_vsscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/vswprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vswprintf.c new file mode 100644 index 000000000..7f98c5c96 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vswprintf.c @@ -0,0 +1,60 @@ +#include "stdio_impl.h" +#include +#include +#include +#include +#include + +struct cookie { + wchar_t *ws; + size_t l; +}; + +static size_t sw_write(FILE *f, const unsigned char *s, size_t l) +{ + size_t l0 = l; + int i = 0; + struct cookie *c = f->cookie; + if (s!=f->wbase && sw_write(f, f->wbase, f->wpos-f->wbase)==-1) + return -1; + while (c->l && l && (i=mbtowc(c->ws, (void *)s, l))>=0) { + s+=i; + l-=i; + c->l--; + c->ws++; + } + *c->ws = 0; + if (i < 0) { + f->wpos = f->wbase = f->wend = 0; + f->flags |= F_ERR; + return i; + } + f->wend = f->buf + f->buf_size; + f->wpos = f->wbase = f->buf; + return l0; +} + +int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap) +{ + int r; + unsigned char buf[256]; + struct cookie c = { s, n-1 }; + FILE f = { + .lbf = EOF, + .write = sw_write, + .lock = -1, + .buf = buf, + .buf_size = sizeof buf, + .cookie = &c, + }; + + if (!n) { + return -1; + } else if (n > INT_MAX) { + errno = EOVERFLOW; + return -1; + } + r = vfwprintf(&f, fmt, ap); + sw_write(&f, 0, 0); + return r>=n ? -1 : r; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vswscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vswscanf.c new file mode 100644 index 000000000..00b614bc2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vswscanf.c @@ -0,0 +1,38 @@ +#include "stdio_impl.h" +#include + +static size_t wstring_read(FILE *f, unsigned char *buf, size_t len) +{ + const wchar_t *src = f->cookie; + size_t k; + + if (!src) return 0; + + k = wcsrtombs((void *)f->buf, &src, f->buf_size, 0); + if (k==(size_t)-1) { + f->rpos = f->rend = 0; + return 0; + } + + f->rpos = f->buf; + f->rend = f->buf + k; + f->cookie = (void *)src; + + if (!len || !k) return 0; + + *buf = *f->rpos++; + return 1; +} + +int vswscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, va_list ap) +{ + unsigned char buf[256]; + FILE f = { + .buf = buf, .buf_size = sizeof buf, + .cookie = (void *)s, + .read = wstring_read, .lock = -1 + }; + return vfwscanf(&f, fmt, ap); +} + +weak_alias(vswscanf,__isoc99_vswscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/vwprintf.c b/vendor/modernc.org/libc/musl/src/stdio/vwprintf.c new file mode 100644 index 000000000..eeeecdc7c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vwprintf.c @@ -0,0 +1,7 @@ +#include +#include + +int vwprintf(const wchar_t *restrict fmt, va_list ap) +{ + return vfwprintf(stdout, fmt, ap); +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/vwscanf.c b/vendor/modernc.org/libc/musl/src/stdio/vwscanf.c new file mode 100644 index 000000000..5a3931e19 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/vwscanf.c @@ -0,0 +1,10 @@ +#include +#include +#include + +int vwscanf(const wchar_t *restrict fmt, va_list ap) +{ + return vfwscanf(stdin, fmt, ap); +} + +weak_alias(vwscanf,__isoc99_vwscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdio/wprintf.c b/vendor/modernc.org/libc/musl/src/stdio/wprintf.c new file mode 100644 index 000000000..342cd9791 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/wprintf.c @@ -0,0 +1,13 @@ +#include +#include +#include + +int wprintf(const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vwprintf(fmt, ap); + va_end(ap); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/stdio/wscanf.c b/vendor/modernc.org/libc/musl/src/stdio/wscanf.c new file mode 100644 index 000000000..4dfec25dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdio/wscanf.c @@ -0,0 +1,15 @@ +#include +#include +#include + +int wscanf(const wchar_t *restrict fmt, ...) +{ + int ret; + va_list ap; + va_start(ap, fmt); + ret = vwscanf(fmt, ap); + va_end(ap); + return ret; +} + +weak_alias(wscanf,__isoc99_wscanf); diff --git a/vendor/modernc.org/libc/musl/src/stdlib/abs.c b/vendor/modernc.org/libc/musl/src/stdlib/abs.c new file mode 100644 index 000000000..e721fdc2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/abs.c @@ -0,0 +1,6 @@ +#include + +int abs(int a) +{ + return a>0 ? a : -a; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/atof.c b/vendor/modernc.org/libc/musl/src/stdlib/atof.c new file mode 100644 index 000000000..f7fcd8266 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/atof.c @@ -0,0 +1,6 @@ +#include + +double atof(const char *s) +{ + return strtod(s, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/atoi.c b/vendor/modernc.org/libc/musl/src/stdlib/atoi.c new file mode 100644 index 000000000..9baca7b89 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/atoi.c @@ -0,0 +1,16 @@ +#include +#include + +int atoi(const char *s) +{ + int n=0, neg=0; + while (isspace(*s)) s++; + switch (*s) { + case '-': neg=1; + case '+': s++; + } + /* Compute n as a negative number to avoid overflow on INT_MIN */ + while (isdigit(*s)) + n = 10*n - (*s++ - '0'); + return neg ? n : -n; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/atol.c b/vendor/modernc.org/libc/musl/src/stdlib/atol.c new file mode 100644 index 000000000..140ea3ea3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/atol.c @@ -0,0 +1,17 @@ +#include +#include + +long atol(const char *s) +{ + long n=0; + int neg=0; + while (isspace(*s)) s++; + switch (*s) { + case '-': neg=1; + case '+': s++; + } + /* Compute n as a negative number to avoid overflow on LONG_MIN */ + while (isdigit(*s)) + n = 10*n - (*s++ - '0'); + return neg ? n : -n; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/atoll.c b/vendor/modernc.org/libc/musl/src/stdlib/atoll.c new file mode 100644 index 000000000..b69304895 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/atoll.c @@ -0,0 +1,17 @@ +#include +#include + +long long atoll(const char *s) +{ + long long n=0; + int neg=0; + while (isspace(*s)) s++; + switch (*s) { + case '-': neg=1; + case '+': s++; + } + /* Compute n as a negative number to avoid overflow on LLONG_MIN */ + while (isdigit(*s)) + n = 10*n - (*s++ - '0'); + return neg ? n : -n; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/bsearch.c b/vendor/modernc.org/libc/musl/src/stdlib/bsearch.c new file mode 100644 index 000000000..fe050ea30 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/bsearch.c @@ -0,0 +1,20 @@ +#include + +void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*cmp)(const void *, const void *)) +{ + void *try; + int sign; + while (nel > 0) { + try = (char *)base + width*(nel/2); + sign = cmp(key, try); + if (sign < 0) { + nel /= 2; + } else if (sign > 0) { + base = (char *)try + width; + nel -= nel/2+1; + } else { + return try; + } + } + return NULL; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/div.c b/vendor/modernc.org/libc/musl/src/stdlib/div.c new file mode 100644 index 000000000..e42c1f14f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/div.c @@ -0,0 +1,6 @@ +#include + +div_t div(int num, int den) +{ + return (div_t){ num/den, num%den }; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/ecvt.c b/vendor/modernc.org/libc/musl/src/stdlib/ecvt.c new file mode 100644 index 000000000..797b664ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/ecvt.c @@ -0,0 +1,20 @@ +#define _GNU_SOURCE +#include +#include + +char *ecvt(double x, int n, int *dp, int *sign) +{ + static char buf[16]; + char tmp[32]; + int i, j; + + if (n-1U > 15) n = 15; + sprintf(tmp, "%.*e", n-1, x); + i = *sign = (tmp[0]=='-'); + for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.')) + buf[j] = tmp[i]; + buf[j] = 0; + *dp = atoi(tmp+i+1)+1; + + return buf; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/fcvt.c b/vendor/modernc.org/libc/musl/src/stdlib/fcvt.c new file mode 100644 index 000000000..f90928fe1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/fcvt.c @@ -0,0 +1,25 @@ +#define _GNU_SOURCE +#include +#include +#include + +char *fcvt(double x, int n, int *dp, int *sign) +{ + char tmp[1500]; + int i, lz; + + if (n > 1400U) n = 1400; + sprintf(tmp, "%.*f", n, x); + i = (tmp[0] == '-'); + if (tmp[i] == '0') lz = strspn(tmp+i+2, "0"); + else lz = -(int)strcspn(tmp+i, "."); + + if (n<=lz) { + *sign = i; + *dp = 1; + if (n>14U) n = 14; + return "000000000000000"+14-n; + } + + return ecvt(x, n-lz, dp, sign); +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/gcvt.c b/vendor/modernc.org/libc/musl/src/stdlib/gcvt.c new file mode 100644 index 000000000..f29bc304e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/gcvt.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include + +char *gcvt(double x, int n, char *b) +{ + sprintf(b, "%.*g", n, x); + return b; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/imaxabs.c b/vendor/modernc.org/libc/musl/src/stdlib/imaxabs.c new file mode 100644 index 000000000..810018193 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/imaxabs.c @@ -0,0 +1,6 @@ +#include + +intmax_t imaxabs(intmax_t a) +{ + return a>0 ? a : -a; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/imaxdiv.c b/vendor/modernc.org/libc/musl/src/stdlib/imaxdiv.c new file mode 100644 index 000000000..b2ce821f5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/imaxdiv.c @@ -0,0 +1,6 @@ +#include + +imaxdiv_t imaxdiv(intmax_t num, intmax_t den) +{ + return (imaxdiv_t){ num/den, num%den }; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/labs.c b/vendor/modernc.org/libc/musl/src/stdlib/labs.c new file mode 100644 index 000000000..83ddb1475 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/labs.c @@ -0,0 +1,6 @@ +#include + +long labs(long a) +{ + return a>0 ? a : -a; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/ldiv.c b/vendor/modernc.org/libc/musl/src/stdlib/ldiv.c new file mode 100644 index 000000000..36eb960b0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/ldiv.c @@ -0,0 +1,6 @@ +#include + +ldiv_t ldiv(long num, long den) +{ + return (ldiv_t){ num/den, num%den }; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/llabs.c b/vendor/modernc.org/libc/musl/src/stdlib/llabs.c new file mode 100644 index 000000000..9dfaf5cf7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/llabs.c @@ -0,0 +1,6 @@ +#include + +long long llabs(long long a) +{ + return a>0 ? a : -a; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/lldiv.c b/vendor/modernc.org/libc/musl/src/stdlib/lldiv.c new file mode 100644 index 000000000..7aaf7a0e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/lldiv.c @@ -0,0 +1,6 @@ +#include + +lldiv_t lldiv(long long num, long long den) +{ + return (lldiv_t){ num/den, num%den }; +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/qsort.c b/vendor/modernc.org/libc/musl/src/stdlib/qsort.c new file mode 100644 index 000000000..da58fd317 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/qsort.c @@ -0,0 +1,218 @@ +/* Copyright (C) 2011 by Valentin Ochs + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* Minor changes by Rich Felker for integration in musl, 2011-04-27. */ + +/* Smoothsort, an adaptive variant of Heapsort. Memory usage: O(1). + Run time: Worst case O(n log n), close to O(n) in the mostly-sorted case. */ + +#include +#include +#include + +#include "atomic.h" +#define ntz(x) a_ctz_l((x)) + +typedef int (*cmpfun)(const void *, const void *); + +static inline int pntz(size_t p[2]) { + int r = ntz(p[0] - 1); + if(r != 0 || (r = 8*sizeof(size_t) + ntz(p[1])) != 8*sizeof(size_t)) { + return r; + } + return 0; +} + +static void cycle(size_t width, unsigned char* ar[], int n) +{ + unsigned char tmp[256]; + size_t l; + int i; + + if(n < 2) { + return; + } + + ar[n] = tmp; + while(width) { + l = sizeof(tmp) < width ? sizeof(tmp) : width; + memcpy(ar[n], ar[0], l); + for(i = 0; i < n; i++) { + memcpy(ar[i], ar[i + 1], l); + ar[i] += l; + } + width -= l; + } +} + +/* shl() and shr() need n > 0 */ +static inline void shl(size_t p[2], int n) +{ + if(n >= 8 * sizeof(size_t)) { + n -= 8 * sizeof(size_t); + p[1] = p[0]; + p[0] = 0; + } + p[1] <<= n; + p[1] |= p[0] >> (sizeof(size_t) * 8 - n); + p[0] <<= n; +} + +static inline void shr(size_t p[2], int n) +{ + if(n >= 8 * sizeof(size_t)) { + n -= 8 * sizeof(size_t); + p[0] = p[1]; + p[1] = 0; + } + p[0] >>= n; + p[0] |= p[1] << (sizeof(size_t) * 8 - n); + p[1] >>= n; +} + +static void sift(unsigned char *head, size_t width, cmpfun cmp, int pshift, size_t lp[]) +{ + unsigned char *rt, *lf; + unsigned char *ar[14 * sizeof(size_t) + 1]; + int i = 1; + + ar[0] = head; + while(pshift > 1) { + rt = head - width; + lf = head - width - lp[pshift - 2]; + + if((*cmp)(ar[0], lf) >= 0 && (*cmp)(ar[0], rt) >= 0) { + break; + } + if((*cmp)(lf, rt) >= 0) { + ar[i++] = lf; + head = lf; + pshift -= 1; + } else { + ar[i++] = rt; + head = rt; + pshift -= 2; + } + } + cycle(width, ar, i); +} + +static void trinkle(unsigned char *head, size_t width, cmpfun cmp, size_t pp[2], int pshift, int trusty, size_t lp[]) +{ + unsigned char *stepson, + *rt, *lf; + size_t p[2]; + unsigned char *ar[14 * sizeof(size_t) + 1]; + int i = 1; + int trail; + + p[0] = pp[0]; + p[1] = pp[1]; + + ar[0] = head; + while(p[0] != 1 || p[1] != 0) { + stepson = head - lp[pshift]; + if((*cmp)(stepson, ar[0]) <= 0) { + break; + } + if(!trusty && pshift > 1) { + rt = head - width; + lf = head - width - lp[pshift - 2]; + if((*cmp)(rt, stepson) >= 0 || (*cmp)(lf, stepson) >= 0) { + break; + } + } + + ar[i++] = stepson; + head = stepson; + trail = pntz(p); + shr(p, trail); + pshift += trail; + trusty = 0; + } + if(!trusty) { + cycle(width, ar, i); + sift(head, width, cmp, pshift, lp); + } +} + +void qsort(void *base, size_t nel, size_t width, cmpfun cmp) +{ + size_t lp[12*sizeof(size_t)]; + size_t i, size = width * nel; + unsigned char *head, *high; + size_t p[2] = {1, 0}; + int pshift = 1; + int trail; + + if (!size) return; + + head = base; + high = head + size - width; + + /* Precompute Leonardo numbers, scaled by element width */ + for(lp[0]=lp[1]=width, i=2; (lp[i]=lp[i-2]+lp[i-1]+width) < size; i++); + + while(head < high) { + if((p[0] & 3) == 3) { + sift(head, width, cmp, pshift, lp); + shr(p, 2); + pshift += 2; + } else { + if(lp[pshift - 1] >= high - head) { + trinkle(head, width, cmp, p, pshift, 0, lp); + } else { + sift(head, width, cmp, pshift, lp); + } + + if(pshift == 1) { + shl(p, 1); + pshift = 0; + } else { + shl(p, pshift - 1); + pshift = 1; + } + } + + p[0] |= 1; + head += width; + } + + trinkle(head, width, cmp, p, pshift, 0, lp); + + while(pshift != 1 || p[0] != 1 || p[1] != 0) { + if(pshift <= 1) { + trail = pntz(p); + shr(p, trail); + pshift += trail; + } else { + shl(p, 2); + pshift -= 2; + p[0] ^= 7; + shr(p, 1); + trinkle(head - lp[pshift] - width, width, cmp, p, pshift + 1, 1, lp); + shl(p, 1); + p[0] |= 1; + trinkle(head - width, width, cmp, p, pshift, 1, lp); + } + head -= width; + } +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/strtod.c b/vendor/modernc.org/libc/musl/src/stdlib/strtod.c new file mode 100644 index 000000000..a5d0118a2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/strtod.c @@ -0,0 +1,37 @@ +#include +#include "shgetc.h" +#include "floatscan.h" +#include "stdio_impl.h" + +static long double strtox(const char *s, char **p, int prec) +{ + FILE f; + sh_fromstring(&f, s); + shlim(&f, 0); + long double y = __floatscan(&f, prec, 1); + off_t cnt = shcnt(&f); + if (p) *p = cnt ? (char *)s + cnt : (char *)s; + return y; +} + +float strtof(const char *restrict s, char **restrict p) +{ + return strtox(s, p, 0); +} + +double strtod(const char *restrict s, char **restrict p) +{ + return strtox(s, p, 1); +} + +long double strtold(const char *restrict s, char **restrict p) +{ + return strtox(s, p, 2); +} + +weak_alias(strtof, strtof_l); +weak_alias(strtod, strtod_l); +weak_alias(strtold, strtold_l); +weak_alias(strtof, __strtof_l); +weak_alias(strtod, __strtod_l); +weak_alias(strtold, __strtold_l); diff --git a/vendor/modernc.org/libc/musl/src/stdlib/strtol.c b/vendor/modernc.org/libc/musl/src/stdlib/strtol.c new file mode 100644 index 000000000..bfefea69d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/strtol.c @@ -0,0 +1,56 @@ +#include "stdio_impl.h" +#include "intscan.h" +#include "shgetc.h" +#include +#include +#include + +static unsigned long long strtox(const char *s, char **p, int base, unsigned long long lim) +{ + FILE f; + sh_fromstring(&f, s); + shlim(&f, 0); + unsigned long long y = __intscan(&f, base, 1, lim); + if (p) { + size_t cnt = shcnt(&f); + *p = (char *)s + cnt; + } + return y; +} + +unsigned long long strtoull(const char *restrict s, char **restrict p, int base) +{ + return strtox(s, p, base, ULLONG_MAX); +} + +long long strtoll(const char *restrict s, char **restrict p, int base) +{ + return strtox(s, p, base, LLONG_MIN); +} + +unsigned long strtoul(const char *restrict s, char **restrict p, int base) +{ + return strtox(s, p, base, ULONG_MAX); +} + +long strtol(const char *restrict s, char **restrict p, int base) +{ + return strtox(s, p, base, 0UL+LONG_MIN); +} + +intmax_t strtoimax(const char *restrict s, char **restrict p, int base) +{ + return strtoll(s, p, base); +} + +uintmax_t strtoumax(const char *restrict s, char **restrict p, int base) +{ + return strtoull(s, p, base); +} + +weak_alias(strtol, __strtol_internal); +weak_alias(strtoul, __strtoul_internal); +weak_alias(strtoll, __strtoll_internal); +weak_alias(strtoull, __strtoull_internal); +weak_alias(strtoimax, __strtoimax_internal); +weak_alias(strtoumax, __strtoumax_internal); diff --git a/vendor/modernc.org/libc/musl/src/stdlib/wcstod.c b/vendor/modernc.org/libc/musl/src/stdlib/wcstod.c new file mode 100644 index 000000000..0deb7010b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/wcstod.c @@ -0,0 +1,64 @@ +#include "shgetc.h" +#include "floatscan.h" +#include "stdio_impl.h" +#include +#include + +/* This read function heavily cheats. It knows: + * (1) len will always be 1 + * (2) non-ascii characters don't matter */ + +static size_t do_read(FILE *f, unsigned char *buf, size_t len) +{ + size_t i; + const wchar_t *wcs = f->cookie; + + if (!wcs[0]) wcs=L"@"; + for (i=0; ibuf_size && wcs[i]; i++) + f->buf[i] = wcs[i] < 128 ? wcs[i] : '@'; + f->rpos = f->buf; + f->rend = f->buf + i; + f->cookie = (void *)(wcs+i); + + if (i && len) { + *buf = *f->rpos++; + return 1; + } + return 0; +} + +static long double wcstox(const wchar_t *s, wchar_t **p, int prec) +{ + wchar_t *t = (wchar_t *)s; + unsigned char buf[64]; + FILE f = {0}; + f.flags = 0; + f.rpos = f.rend = f.buf = buf + 4; + f.buf_size = sizeof buf - 4; + f.lock = -1; + f.read = do_read; + while (iswspace(*t)) t++; + f.cookie = (void *)t; + shlim(&f, 0); + long double y = __floatscan(&f, prec, 1); + if (p) { + size_t cnt = shcnt(&f); + *p = cnt ? t + cnt : (wchar_t *)s; + } + return y; +} + +float wcstof(const wchar_t *restrict s, wchar_t **restrict p) +{ + return wcstox(s, p, 0); +} + +double wcstod(const wchar_t *restrict s, wchar_t **restrict p) +{ + return wcstox(s, p, 1); +} + +long double wcstold(const wchar_t *restrict s, wchar_t **restrict p) +{ + return wcstox(s, p, 2); +} diff --git a/vendor/modernc.org/libc/musl/src/stdlib/wcstol.c b/vendor/modernc.org/libc/musl/src/stdlib/wcstol.c new file mode 100644 index 000000000..1eeb495fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/stdlib/wcstol.c @@ -0,0 +1,81 @@ +#include "stdio_impl.h" +#include "intscan.h" +#include "shgetc.h" +#include +#include +#include +#include + +/* This read function heavily cheats. It knows: + * (1) len will always be 1 + * (2) non-ascii characters don't matter */ + +static size_t do_read(FILE *f, unsigned char *buf, size_t len) +{ + size_t i; + const wchar_t *wcs = f->cookie; + + if (!wcs[0]) wcs=L"@"; + for (i=0; ibuf_size && wcs[i]; i++) + f->buf[i] = wcs[i] < 128 ? wcs[i] : '@'; + f->rpos = f->buf; + f->rend = f->buf + i; + f->cookie = (void *)(wcs+i); + + if (i && len) { + *buf = *f->rpos++; + return 1; + } + return 0; +} + +static unsigned long long wcstox(const wchar_t *s, wchar_t **p, int base, unsigned long long lim) +{ + wchar_t *t = (wchar_t *)s; + unsigned char buf[64]; + FILE f = {0}; + f.flags = 0; + f.rpos = f.rend = f.buf = buf + 4; + f.buf_size = sizeof buf - 4; + f.lock = -1; + f.read = do_read; + while (iswspace(*t)) t++; + f.cookie = (void *)t; + shlim(&f, 0); + unsigned long long y = __intscan(&f, base, 1, lim); + if (p) { + size_t cnt = shcnt(&f); + *p = cnt ? t + cnt : (wchar_t *)s; + } + return y; +} + +unsigned long long wcstoull(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstox(s, p, base, ULLONG_MAX); +} + +long long wcstoll(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstox(s, p, base, LLONG_MIN); +} + +unsigned long wcstoul(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstox(s, p, base, ULONG_MAX); +} + +long wcstol(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstox(s, p, base, 0UL+LONG_MIN); +} + +intmax_t wcstoimax(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstoll(s, p, base); +} + +uintmax_t wcstoumax(const wchar_t *restrict s, wchar_t **restrict p, int base) +{ + return wcstoull(s, p, base); +} diff --git a/vendor/modernc.org/libc/musl/src/string/bcmp.c b/vendor/modernc.org/libc/musl/src/string/bcmp.c new file mode 100644 index 000000000..87c6007ee --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/bcmp.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include + +int bcmp(const void *s1, const void *s2, size_t n) +{ + return memcmp(s1, s2, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/bcopy.c b/vendor/modernc.org/libc/musl/src/string/bcopy.c new file mode 100644 index 000000000..a07129f50 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/bcopy.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include + +void bcopy(const void *s1, void *s2, size_t n) +{ + memmove(s2, s1, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/bzero.c b/vendor/modernc.org/libc/musl/src/string/bzero.c new file mode 100644 index 000000000..ba536b07e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/bzero.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include + +void bzero(void *s, size_t n) +{ + memset(s, 0, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/explicit_bzero.c b/vendor/modernc.org/libc/musl/src/string/explicit_bzero.c new file mode 100644 index 000000000..f2e12f237 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/explicit_bzero.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include + +void explicit_bzero(void *d, size_t n) +{ + d = memset(d, 0, n); + __asm__ __volatile__ ("" : : "r"(d) : "memory"); +} diff --git a/vendor/modernc.org/libc/musl/src/string/index.c b/vendor/modernc.org/libc/musl/src/string/index.c new file mode 100644 index 000000000..252948f9f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/index.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include + +char *index(const char *s, int c) +{ + return strchr(s, c); +} diff --git a/vendor/modernc.org/libc/musl/src/string/memccpy.c b/vendor/modernc.org/libc/musl/src/string/memccpy.c new file mode 100644 index 000000000..3b0a37002 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memccpy.c @@ -0,0 +1,34 @@ +#include +#include +#include + +#define ALIGN (sizeof(size_t)-1) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +void *memccpy(void *restrict dest, const void *restrict src, int c, size_t n) +{ + unsigned char *d = dest; + const unsigned char *s = src; + + c = (unsigned char)c; +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + word *wd; + const word *ws; + if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) { + for (; ((uintptr_t)s & ALIGN) && n && (*d=*s)!=c; n--, s++, d++); + if ((uintptr_t)s & ALIGN) goto tail; + size_t k = ONES * c; + wd=(void *)d; ws=(const void *)s; + for (; n>=sizeof(size_t) && !HASZERO(*ws^k); + n-=sizeof(size_t), ws++, wd++) *wd = *ws; + d=(void *)wd; s=(const void *)ws; + } +#endif + for (; n && (*d=*s)!=c; n--, s++, d++); +tail: + if (n) return d+1; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/memchr.c b/vendor/modernc.org/libc/musl/src/string/memchr.c new file mode 100644 index 000000000..65f0d789b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memchr.c @@ -0,0 +1,27 @@ +#include +#include +#include + +#define SS (sizeof(size_t)) +#define ALIGN (sizeof(size_t)-1) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +void *memchr(const void *src, int c, size_t n) +{ + const unsigned char *s = src; + c = (unsigned char)c; +#ifdef __GNUC__ + for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--); + if (n && *s != c) { + typedef size_t __attribute__((__may_alias__)) word; + const word *w; + size_t k = ONES * c; + for (w = (const void *)s; n>=SS && !HASZERO(*w^k); w++, n-=SS); + s = (const void *)w; + } +#endif + for (; n && *s != c; s++, n--); + return n ? (void *)s : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/memcmp.c b/vendor/modernc.org/libc/musl/src/string/memcmp.c new file mode 100644 index 000000000..bdbce9f0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memcmp.c @@ -0,0 +1,8 @@ +#include + +int memcmp(const void *vl, const void *vr, size_t n) +{ + const unsigned char *l=vl, *r=vr; + for (; n && *l == *r; n--, l++, r++); + return n ? *l-*r : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/memcpy.c b/vendor/modernc.org/libc/musl/src/string/memcpy.c new file mode 100644 index 000000000..06e88742b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memcpy.c @@ -0,0 +1,124 @@ +#include +#include +#include + +void *memcpy(void *restrict dest, const void *restrict src, size_t n) +{ + unsigned char *d = dest; + const unsigned char *s = src; + +#ifdef __GNUC__ + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define LS >> +#define RS << +#else +#define LS << +#define RS >> +#endif + + typedef uint32_t __attribute__((__may_alias__)) u32; + uint32_t w, x; + + for (; (uintptr_t)s % 4 && n; n--) *d++ = *s++; + + if ((uintptr_t)d % 4 == 0) { + for (; n>=16; s+=16, d+=16, n-=16) { + *(u32 *)(d+0) = *(u32 *)(s+0); + *(u32 *)(d+4) = *(u32 *)(s+4); + *(u32 *)(d+8) = *(u32 *)(s+8); + *(u32 *)(d+12) = *(u32 *)(s+12); + } + if (n&8) { + *(u32 *)(d+0) = *(u32 *)(s+0); + *(u32 *)(d+4) = *(u32 *)(s+4); + d += 8; s += 8; + } + if (n&4) { + *(u32 *)(d+0) = *(u32 *)(s+0); + d += 4; s += 4; + } + if (n&2) { + *d++ = *s++; *d++ = *s++; + } + if (n&1) { + *d = *s; + } + return dest; + } + + if (n >= 32) switch ((uintptr_t)d % 4) { + case 1: + w = *(u32 *)s; + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + n -= 3; + for (; n>=17; s+=16, d+=16, n-=16) { + x = *(u32 *)(s+1); + *(u32 *)(d+0) = (w LS 24) | (x RS 8); + w = *(u32 *)(s+5); + *(u32 *)(d+4) = (x LS 24) | (w RS 8); + x = *(u32 *)(s+9); + *(u32 *)(d+8) = (w LS 24) | (x RS 8); + w = *(u32 *)(s+13); + *(u32 *)(d+12) = (x LS 24) | (w RS 8); + } + break; + case 2: + w = *(u32 *)s; + *d++ = *s++; + *d++ = *s++; + n -= 2; + for (; n>=18; s+=16, d+=16, n-=16) { + x = *(u32 *)(s+2); + *(u32 *)(d+0) = (w LS 16) | (x RS 16); + w = *(u32 *)(s+6); + *(u32 *)(d+4) = (x LS 16) | (w RS 16); + x = *(u32 *)(s+10); + *(u32 *)(d+8) = (w LS 16) | (x RS 16); + w = *(u32 *)(s+14); + *(u32 *)(d+12) = (x LS 16) | (w RS 16); + } + break; + case 3: + w = *(u32 *)s; + *d++ = *s++; + n -= 1; + for (; n>=19; s+=16, d+=16, n-=16) { + x = *(u32 *)(s+3); + *(u32 *)(d+0) = (w LS 8) | (x RS 24); + w = *(u32 *)(s+7); + *(u32 *)(d+4) = (x LS 8) | (w RS 24); + x = *(u32 *)(s+11); + *(u32 *)(d+8) = (w LS 8) | (x RS 24); + w = *(u32 *)(s+15); + *(u32 *)(d+12) = (x LS 8) | (w RS 24); + } + break; + } + if (n&16) { + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + } + if (n&8) { + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + } + if (n&4) { + *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; + } + if (n&2) { + *d++ = *s++; *d++ = *s++; + } + if (n&1) { + *d = *s; + } + return dest; +#endif + + for (; n; n--) *d++ = *s++; + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/memmem.c b/vendor/modernc.org/libc/musl/src/string/memmem.c new file mode 100644 index 000000000..11eff86e4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memmem.c @@ -0,0 +1,149 @@ +#define _GNU_SOURCE +#include +#include + +static char *twobyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1]; + for (h+=2, k-=2; k; k--, hw = hw<<8 | *h++) + if (hw == nw) return (char *)h-2; + return hw == nw ? (char *)h-2 : 0; +} + +static char *threebyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8; + uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8; + for (h+=3, k-=3; k; k--, hw = (hw|*h++)<<8) + if (hw == nw) return (char *)h-3; + return hw == nw ? (char *)h-3 : 0; +} + +static char *fourbyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3]; + uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3]; + for (h+=4, k-=4; k; k--, hw = hw<<8 | *h++) + if (hw == nw) return (char *)h-4; + return hw == nw ? (char *)h-4 : 0; +} + +#define MAX(a,b) ((a)>(b)?(a):(b)) +#define MIN(a,b) ((a)<(b)?(a):(b)) + +#define BITOP(a,b,op) \ + ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a)))) + +static char *twoway_memmem(const unsigned char *h, const unsigned char *z, const unsigned char *n, size_t l) +{ + size_t i, ip, jp, k, p, ms, p0, mem, mem0; + size_t byteset[32 / sizeof(size_t)] = { 0 }; + size_t shift[256]; + + /* Computing length of needle and fill shift table */ + for (i=0; i n[jp+k]) { + jp += k; + k = 1; + p = jp - ip; + } else { + ip = jp++; + k = p = 1; + } + } + ms = ip; + p0 = p; + + /* And with the opposite comparison */ + ip = -1; jp = 0; k = p = 1; + while (jp+k ms+1) ms = ip; + else p = p0; + + /* Periodic needle? */ + if (memcmp(n, n+p, ms+1)) { + mem0 = 0; + p = MAX(ms, l-ms-1) + 1; + } else mem0 = l-p; + mem = 0; + + /* Search loop */ + for (;;) { + /* If remainder of haystack is shorter than needle, done */ + if (z-h < l) return 0; + + /* Check last byte first; advance by shift on mismatch */ + if (BITOP(byteset, h[l-1], &)) { + k = l-shift[h[l-1]]; + if (k) { + if (k < mem) k = mem; + h += k; + mem = 0; + continue; + } + } else { + h += l; + mem = 0; + continue; + } + + /* Compare right half */ + for (k=MAX(ms+1,mem); kmem && n[k-1] == h[k-1]; k--); + if (k <= mem) return (char *)h; + h += p; + mem = mem0; + } +} + +void *memmem(const void *h0, size_t k, const void *n0, size_t l) +{ + const unsigned char *h = h0, *n = n0; + + /* Return immediately on empty needle */ + if (!l) return (void *)h; + + /* Return immediately when needle is longer than haystack */ + if (k +#include + +#ifdef __GNUC__ +typedef __attribute__((__may_alias__)) size_t WT; +#define WS (sizeof(WT)) +#endif + +void *memmove(void *dest, const void *src, size_t n) +{ + char *d = dest; + const char *s = src; + + if (d==s) return d; + if ((uintptr_t)s-(uintptr_t)d-n <= -2*n) return memcpy(d, s, n); + + if (d=WS; n-=WS, d+=WS, s+=WS) *(WT *)d = *(WT *)s; + } +#endif + for (; n; n--) *d++ = *s++; + } else { +#ifdef __GNUC__ + if ((uintptr_t)s % WS == (uintptr_t)d % WS) { + while ((uintptr_t)(d+n) % WS) { + if (!n--) return dest; + d[n] = s[n]; + } + while (n>=WS) n-=WS, *(WT *)(d+n) = *(WT *)(s+n); + } +#endif + while (n) n--, d[n] = s[n]; + } + + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/mempcpy.c b/vendor/modernc.org/libc/musl/src/string/mempcpy.c new file mode 100644 index 000000000..a297985e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/mempcpy.c @@ -0,0 +1,7 @@ +#define _GNU_SOURCE +#include + +void *mempcpy(void *dest, const void *src, size_t n) +{ + return (char *)memcpy(dest, src, n) + n; +} diff --git a/vendor/modernc.org/libc/musl/src/string/memrchr.c b/vendor/modernc.org/libc/musl/src/string/memrchr.c new file mode 100644 index 000000000..e51748b80 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memrchr.c @@ -0,0 +1,11 @@ +#include + +void *__memrchr(const void *m, int c, size_t n) +{ + const unsigned char *s = m; + c = (unsigned char)c; + while (n--) if (s[n]==c) return (void *)(s+n); + return 0; +} + +weak_alias(__memrchr, memrchr); diff --git a/vendor/modernc.org/libc/musl/src/string/memset.c b/vendor/modernc.org/libc/musl/src/string/memset.c new file mode 100644 index 000000000..5613a1486 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/memset.c @@ -0,0 +1,90 @@ +#include +#include + +void *memset(void *dest, int c, size_t n) +{ + unsigned char *s = dest; + size_t k; + + /* Fill head and tail with minimal branching. Each + * conditional ensures that all the subsequently used + * offsets are well-defined and in the dest region. */ + + if (!n) return dest; + s[0] = c; + s[n-1] = c; + if (n <= 2) return dest; + s[1] = c; + s[2] = c; + s[n-2] = c; + s[n-3] = c; + if (n <= 6) return dest; + s[3] = c; + s[n-4] = c; + if (n <= 8) return dest; + + /* Advance pointer to align it at a 4-byte boundary, + * and truncate n to a multiple of 4. The previous code + * already took care of any head/tail that get cut off + * by the alignment. */ + + k = -(uintptr_t)s & 3; + s += k; + n -= k; + n &= -4; + +#ifdef __GNUC__ + typedef uint32_t __attribute__((__may_alias__)) u32; + typedef uint64_t __attribute__((__may_alias__)) u64; + + u32 c32 = ((u32)-1)/255 * (unsigned char)c; + + /* In preparation to copy 32 bytes at a time, aligned on + * an 8-byte bounary, fill head/tail up to 28 bytes each. + * As in the initial byte-based head/tail fill, each + * conditional below ensures that the subsequent offsets + * are valid (e.g. !(n<=24) implies n>=28). */ + + *(u32 *)(s+0) = c32; + *(u32 *)(s+n-4) = c32; + if (n <= 8) return dest; + *(u32 *)(s+4) = c32; + *(u32 *)(s+8) = c32; + *(u32 *)(s+n-12) = c32; + *(u32 *)(s+n-8) = c32; + if (n <= 24) return dest; + *(u32 *)(s+12) = c32; + *(u32 *)(s+16) = c32; + *(u32 *)(s+20) = c32; + *(u32 *)(s+24) = c32; + *(u32 *)(s+n-28) = c32; + *(u32 *)(s+n-24) = c32; + *(u32 *)(s+n-20) = c32; + *(u32 *)(s+n-16) = c32; + + /* Align to a multiple of 8 so we can fill 64 bits at a time, + * and avoid writing the same bytes twice as much as is + * practical without introducing additional branching. */ + + k = 24 + ((uintptr_t)s & 4); + s += k; + n -= k; + + /* If this loop is reached, 28 tail bytes have already been + * filled, so any remainder when n drops below 32 can be + * safely ignored. */ + + u64 c64 = c32 | ((u64)c32 << 32); + for (; n >= 32; n-=32, s+=32) { + *(u64 *)(s+0) = c64; + *(u64 *)(s+8) = c64; + *(u64 *)(s+16) = c64; + *(u64 *)(s+24) = c64; + } +#else + /* Pure C fallback with no aliasing violations. */ + for (; n; n--, s++) *s = c; +#endif + + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/rindex.c b/vendor/modernc.org/libc/musl/src/string/rindex.c new file mode 100644 index 000000000..693c750b6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/rindex.c @@ -0,0 +1,8 @@ +#define _BSD_SOURCE +#include +#include + +char *rindex(const char *s, int c) +{ + return strrchr(s, c); +} diff --git a/vendor/modernc.org/libc/musl/src/string/stpcpy.c b/vendor/modernc.org/libc/musl/src/string/stpcpy.c new file mode 100644 index 000000000..4db46a9e5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/stpcpy.c @@ -0,0 +1,29 @@ +#include +#include +#include + +#define ALIGN (sizeof(size_t)) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +char *__stpcpy(char *restrict d, const char *restrict s) +{ +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + word *wd; + const word *ws; + if ((uintptr_t)s % ALIGN == (uintptr_t)d % ALIGN) { + for (; (uintptr_t)s % ALIGN; s++, d++) + if (!(*d=*s)) return d; + wd=(void *)d; ws=(const void *)s; + for (; !HASZERO(*ws); *wd++ = *ws++); + d=(void *)wd; s=(const void *)ws; + } +#endif + for (; (*d=*s); s++, d++); + + return d; +} + +weak_alias(__stpcpy, stpcpy); diff --git a/vendor/modernc.org/libc/musl/src/string/stpncpy.c b/vendor/modernc.org/libc/musl/src/string/stpncpy.c new file mode 100644 index 000000000..f57fa6b71 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/stpncpy.c @@ -0,0 +1,32 @@ +#include +#include +#include + +#define ALIGN (sizeof(size_t)-1) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +char *__stpncpy(char *restrict d, const char *restrict s, size_t n) +{ +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + word *wd; + const word *ws; + if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) { + for (; ((uintptr_t)s & ALIGN) && n && (*d=*s); n--, s++, d++); + if (!n || !*s) goto tail; + wd=(void *)d; ws=(const void *)s; + for (; n>=sizeof(size_t) && !HASZERO(*ws); + n-=sizeof(size_t), ws++, wd++) *wd = *ws; + d=(void *)wd; s=(const void *)ws; + } +#endif + for (; n && (*d=*s); n--, s++, d++); +tail: + memset(d, 0, n); + return d; +} + +weak_alias(__stpncpy, stpncpy); + diff --git a/vendor/modernc.org/libc/musl/src/string/strcasecmp.c b/vendor/modernc.org/libc/musl/src/string/strcasecmp.c new file mode 100644 index 000000000..002c6aa15 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcasecmp.c @@ -0,0 +1,16 @@ +#include +#include + +int strcasecmp(const char *_l, const char *_r) +{ + const unsigned char *l=(void *)_l, *r=(void *)_r; + for (; *l && *r && (*l == *r || tolower(*l) == tolower(*r)); l++, r++); + return tolower(*l) - tolower(*r); +} + +int __strcasecmp_l(const char *l, const char *r, locale_t loc) +{ + return strcasecmp(l, r); +} + +weak_alias(__strcasecmp_l, strcasecmp_l); diff --git a/vendor/modernc.org/libc/musl/src/string/strcasestr.c b/vendor/modernc.org/libc/musl/src/string/strcasestr.c new file mode 100644 index 000000000..af109f361 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcasestr.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include + +char *strcasestr(const char *h, const char *n) +{ + size_t l = strlen(n); + for (; *h; h++) if (!strncasecmp(h, n, l)) return (char *)h; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strcat.c b/vendor/modernc.org/libc/musl/src/string/strcat.c new file mode 100644 index 000000000..33f749b1d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcat.c @@ -0,0 +1,7 @@ +#include + +char *strcat(char *restrict dest, const char *restrict src) +{ + strcpy(dest + strlen(dest), src); + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strchr.c b/vendor/modernc.org/libc/musl/src/string/strchr.c new file mode 100644 index 000000000..3cbc828be --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strchr.c @@ -0,0 +1,7 @@ +#include + +char *strchr(const char *s, int c) +{ + char *r = __strchrnul(s, c); + return *(unsigned char *)r == (unsigned char)c ? r : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strchrnul.c b/vendor/modernc.org/libc/musl/src/string/strchrnul.c new file mode 100644 index 000000000..39e2635b3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strchrnul.c @@ -0,0 +1,28 @@ +#include +#include +#include + +#define ALIGN (sizeof(size_t)) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +char *__strchrnul(const char *s, int c) +{ + c = (unsigned char)c; + if (!c) return (char *)s + strlen(s); + +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + const word *w; + for (; (uintptr_t)s % ALIGN; s++) + if (!*s || *(unsigned char *)s == c) return (char *)s; + size_t k = ONES * c; + for (w = (void *)s; !HASZERO(*w) && !HASZERO(*w^k); w++); + s = (void *)w; +#endif + for (; *s && *(unsigned char *)s != c; s++); + return (char *)s; +} + +weak_alias(__strchrnul, strchrnul); diff --git a/vendor/modernc.org/libc/musl/src/string/strcmp.c b/vendor/modernc.org/libc/musl/src/string/strcmp.c new file mode 100644 index 000000000..808bd8370 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcmp.c @@ -0,0 +1,7 @@ +#include + +int strcmp(const char *l, const char *r) +{ + for (; *l==*r && *l; l++, r++); + return *(unsigned char *)l - *(unsigned char *)r; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strcpy.c b/vendor/modernc.org/libc/musl/src/string/strcpy.c new file mode 100644 index 000000000..6668a1295 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcpy.c @@ -0,0 +1,7 @@ +#include + +char *strcpy(char *restrict dest, const char *restrict src) +{ + __stpcpy(dest, src); + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strcspn.c b/vendor/modernc.org/libc/musl/src/string/strcspn.c new file mode 100644 index 000000000..a0c617bd7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strcspn.c @@ -0,0 +1,17 @@ +#include + +#define BITOP(a,b,op) \ + ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a)))) + +size_t strcspn(const char *s, const char *c) +{ + const char *a = s; + size_t byteset[32/sizeof(size_t)]; + + if (!c[0] || !c[1]) return __strchrnul(s, *c)-a; + + memset(byteset, 0, sizeof byteset); + for (; *c && BITOP(byteset, *(unsigned char *)c, |=); c++); + for (; *s && !BITOP(byteset, *(unsigned char *)s, &); s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strdup.c b/vendor/modernc.org/libc/musl/src/string/strdup.c new file mode 100644 index 000000000..d4c274494 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strdup.c @@ -0,0 +1,10 @@ +#include +#include + +char *strdup(const char *s) +{ + size_t l = strlen(s); + char *d = malloc(l+1); + if (!d) return NULL; + return memcpy(d, s, l+1); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strerror_r.c b/vendor/modernc.org/libc/musl/src/string/strerror_r.c new file mode 100644 index 000000000..1dc88bb16 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strerror_r.c @@ -0,0 +1,19 @@ +#include +#include + +int strerror_r(int err, char *buf, size_t buflen) +{ + char *msg = strerror(err); + size_t l = strlen(msg); + if (l >= buflen) { + if (buflen) { + memcpy(buf, msg, buflen-1); + buf[buflen-1] = 0; + } + return ERANGE; + } + memcpy(buf, msg, l+1); + return 0; +} + +weak_alias(strerror_r, __xpg_strerror_r); diff --git a/vendor/modernc.org/libc/musl/src/string/strlcat.c b/vendor/modernc.org/libc/musl/src/string/strlcat.c new file mode 100644 index 000000000..ef81209e3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strlcat.c @@ -0,0 +1,9 @@ +#define _BSD_SOURCE +#include + +size_t strlcat(char *d, const char *s, size_t n) +{ + size_t l = strnlen(d, n); + if (l == n) return l + strlen(s); + return l + strlcpy(d+l, s, n-l); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strlcpy.c b/vendor/modernc.org/libc/musl/src/string/strlcpy.c new file mode 100644 index 000000000..ffa0b0b01 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strlcpy.c @@ -0,0 +1,34 @@ +#define _BSD_SOURCE +#include +#include +#include + +#define ALIGN (sizeof(size_t)-1) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +size_t strlcpy(char *d, const char *s, size_t n) +{ + char *d0 = d; + size_t *wd; + + if (!n--) goto finish; +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + const word *ws; + if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) { + for (; ((uintptr_t)s & ALIGN) && n && (*d=*s); n--, s++, d++); + if (n && *s) { + wd=(void *)d; ws=(const void *)s; + for (; n>=sizeof(size_t) && !HASZERO(*ws); + n-=sizeof(size_t), ws++, wd++) *wd = *ws; + d=(void *)wd; s=(const void *)ws; + } + } +#endif + for (; n && (*d=*s); n--, s++, d++); + *d = 0; +finish: + return d-d0 + strlen(s); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strlen.c b/vendor/modernc.org/libc/musl/src/string/strlen.c new file mode 100644 index 000000000..309990f02 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strlen.c @@ -0,0 +1,22 @@ +#include +#include +#include + +#define ALIGN (sizeof(size_t)) +#define ONES ((size_t)-1/UCHAR_MAX) +#define HIGHS (ONES * (UCHAR_MAX/2+1)) +#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) + +size_t strlen(const char *s) +{ + const char *a = s; +#ifdef __GNUC__ + typedef size_t __attribute__((__may_alias__)) word; + const word *w; + for (; (uintptr_t)s % ALIGN; s++) if (!*s) return s-a; + for (w = (const void *)s; !HASZERO(*w); w++); + s = (const void *)w; +#endif + for (; *s; s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strncasecmp.c b/vendor/modernc.org/libc/musl/src/string/strncasecmp.c new file mode 100644 index 000000000..e0ef93c20 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strncasecmp.c @@ -0,0 +1,17 @@ +#include +#include + +int strncasecmp(const char *_l, const char *_r, size_t n) +{ + const unsigned char *l=(void *)_l, *r=(void *)_r; + if (!n--) return 0; + for (; *l && *r && n && (*l == *r || tolower(*l) == tolower(*r)); l++, r++, n--); + return tolower(*l) - tolower(*r); +} + +int __strncasecmp_l(const char *l, const char *r, size_t n, locale_t loc) +{ + return strncasecmp(l, r, n); +} + +weak_alias(__strncasecmp_l, strncasecmp_l); diff --git a/vendor/modernc.org/libc/musl/src/string/strncat.c b/vendor/modernc.org/libc/musl/src/string/strncat.c new file mode 100644 index 000000000..01ca2a231 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strncat.c @@ -0,0 +1,10 @@ +#include + +char *strncat(char *restrict d, const char *restrict s, size_t n) +{ + char *a = d; + d += strlen(d); + while (n && *s) n--, *d++ = *s++; + *d++ = 0; + return a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strncmp.c b/vendor/modernc.org/libc/musl/src/string/strncmp.c new file mode 100644 index 000000000..e228843f0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strncmp.c @@ -0,0 +1,9 @@ +#include + +int strncmp(const char *_l, const char *_r, size_t n) +{ + const unsigned char *l=(void *)_l, *r=(void *)_r; + if (!n--) return 0; + for (; *l && *r && n && *l == *r ; l++, r++, n--); + return *l - *r; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strncpy.c b/vendor/modernc.org/libc/musl/src/string/strncpy.c new file mode 100644 index 000000000..545892e6e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strncpy.c @@ -0,0 +1,7 @@ +#include + +char *strncpy(char *restrict d, const char *restrict s, size_t n) +{ + __stpncpy(d, s, n); + return d; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strndup.c b/vendor/modernc.org/libc/musl/src/string/strndup.c new file mode 100644 index 000000000..617d27ba9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strndup.c @@ -0,0 +1,12 @@ +#include +#include + +char *strndup(const char *s, size_t n) +{ + size_t l = strnlen(s, n); + char *d = malloc(l+1); + if (!d) return NULL; + memcpy(d, s, l); + d[l] = 0; + return d; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strnlen.c b/vendor/modernc.org/libc/musl/src/string/strnlen.c new file mode 100644 index 000000000..6442eb793 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strnlen.c @@ -0,0 +1,7 @@ +#include + +size_t strnlen(const char *s, size_t n) +{ + const char *p = memchr(s, 0, n); + return p ? p-s : n; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strpbrk.c b/vendor/modernc.org/libc/musl/src/string/strpbrk.c new file mode 100644 index 000000000..55947c641 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strpbrk.c @@ -0,0 +1,7 @@ +#include + +char *strpbrk(const char *s, const char *b) +{ + s += strcspn(s, b); + return *s ? (char *)s : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strrchr.c b/vendor/modernc.org/libc/musl/src/string/strrchr.c new file mode 100644 index 000000000..98ad1b045 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strrchr.c @@ -0,0 +1,6 @@ +#include + +char *strrchr(const char *s, int c) +{ + return __memrchr(s, c, strlen(s) + 1); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strsep.c b/vendor/modernc.org/libc/musl/src/string/strsep.c new file mode 100644 index 000000000..cb37c32eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strsep.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include + +char *strsep(char **str, const char *sep) +{ + char *s = *str, *end; + if (!s) return NULL; + end = s + strcspn(s, sep); + if (*end) *end++ = 0; + else end = 0; + *str = end; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strsignal.c b/vendor/modernc.org/libc/musl/src/string/strsignal.c new file mode 100644 index 000000000..5156366e6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strsignal.c @@ -0,0 +1,126 @@ +#include +#include +#include "locale_impl.h" + +#if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) \ + && (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) \ + && (SIGKILL == 9) && (SIGUSR1 == 10) && (SIGSEGV == 11) && (SIGUSR2 == 12) \ + && (SIGPIPE == 13) && (SIGALRM == 14) && (SIGTERM == 15) && (SIGSTKFLT == 16) \ + && (SIGCHLD == 17) && (SIGCONT == 18) && (SIGSTOP == 19) && (SIGTSTP == 20) \ + && (SIGTTIN == 21) && (SIGTTOU == 22) && (SIGURG == 23) && (SIGXCPU == 24) \ + && (SIGXFSZ == 25) && (SIGVTALRM == 26) && (SIGPROF == 27) && (SIGWINCH == 28) \ + && (SIGPOLL == 29) && (SIGPWR == 30) && (SIGSYS == 31) + +#define sigmap(x) x + +#else + +static const char map[] = { + [SIGHUP] = 1, + [SIGINT] = 2, + [SIGQUIT] = 3, + [SIGILL] = 4, + [SIGTRAP] = 5, + [SIGABRT] = 6, + [SIGBUS] = 7, + [SIGFPE] = 8, + [SIGKILL] = 9, + [SIGUSR1] = 10, + [SIGSEGV] = 11, + [SIGUSR2] = 12, + [SIGPIPE] = 13, + [SIGALRM] = 14, + [SIGTERM] = 15, +#if defined(SIGSTKFLT) + [SIGSTKFLT] = 16, +#elif defined(SIGEMT) + [SIGEMT] = 16, +#endif + [SIGCHLD] = 17, + [SIGCONT] = 18, + [SIGSTOP] = 19, + [SIGTSTP] = 20, + [SIGTTIN] = 21, + [SIGTTOU] = 22, + [SIGURG] = 23, + [SIGXCPU] = 24, + [SIGXFSZ] = 25, + [SIGVTALRM] = 26, + [SIGPROF] = 27, + [SIGWINCH] = 28, + [SIGPOLL] = 29, + [SIGPWR] = 30, + [SIGSYS] = 31 +}; + +#define sigmap(x) ((x) >= sizeof map ? (x) : map[(x)]) + +#endif + +static const char strings[] = + "Unknown signal\0" + "Hangup\0" + "Interrupt\0" + "Quit\0" + "Illegal instruction\0" + "Trace/breakpoint trap\0" + "Aborted\0" + "Bus error\0" + "Arithmetic exception\0" + "Killed\0" + "User defined signal 1\0" + "Segmentation fault\0" + "User defined signal 2\0" + "Broken pipe\0" + "Alarm clock\0" + "Terminated\0" +#if defined(SIGSTKFLT) + "Stack fault\0" +#elif defined(SIGEMT) + "Emulator trap\0" +#else + "Unknown signal\0" +#endif + "Child process status\0" + "Continued\0" + "Stopped (signal)\0" + "Stopped\0" + "Stopped (tty input)\0" + "Stopped (tty output)\0" + "Urgent I/O condition\0" + "CPU time limit exceeded\0" + "File size limit exceeded\0" + "Virtual timer expired\0" + "Profiling timer expired\0" + "Window changed\0" + "I/O possible\0" + "Power failure\0" + "Bad system call\0" + "RT32" + "\0RT33\0RT34\0RT35\0RT36\0RT37\0RT38\0RT39\0RT40" + "\0RT41\0RT42\0RT43\0RT44\0RT45\0RT46\0RT47\0RT48" + "\0RT49\0RT50\0RT51\0RT52\0RT53\0RT54\0RT55\0RT56" + "\0RT57\0RT58\0RT59\0RT60\0RT61\0RT62\0RT63\0RT64" +#if _NSIG > 65 + "\0RT65\0RT66\0RT67\0RT68\0RT69\0RT70\0RT71\0RT72" + "\0RT73\0RT74\0RT75\0RT76\0RT77\0RT78\0RT79\0RT80" + "\0RT81\0RT82\0RT83\0RT84\0RT85\0RT86\0RT87\0RT88" + "\0RT89\0RT90\0RT91\0RT92\0RT93\0RT94\0RT95\0RT96" + "\0RT97\0RT98\0RT99\0RT100\0RT101\0RT102\0RT103\0RT104" + "\0RT105\0RT106\0RT107\0RT108\0RT109\0RT110\0RT111\0RT112" + "\0RT113\0RT114\0RT115\0RT116\0RT117\0RT118\0RT119\0RT120" + "\0RT121\0RT122\0RT123\0RT124\0RT125\0RT126\0RT127\0RT128" +#endif + ""; + +char *strsignal(int signum) +{ + const char *s = strings; + + signum = sigmap(signum); + if (signum - 1U >= _NSIG-1) signum = 0; + + for (; signum--; s++) for (; *s; s++); + + return (char *)LCTRANS_CUR(s); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strspn.c b/vendor/modernc.org/libc/musl/src/string/strspn.c new file mode 100644 index 000000000..9543dad09 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strspn.c @@ -0,0 +1,20 @@ +#include + +#define BITOP(a,b,op) \ + ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a)))) + +size_t strspn(const char *s, const char *c) +{ + const char *a = s; + size_t byteset[32/sizeof(size_t)] = { 0 }; + + if (!c[0]) return 0; + if (!c[1]) { + for (; *s == *c; s++); + return s-a; + } + + for (; *c && BITOP(byteset, *(unsigned char *)c, |=); c++); + for (; *s && BITOP(byteset, *(unsigned char *)s, &); s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strstr.c b/vendor/modernc.org/libc/musl/src/string/strstr.c new file mode 100644 index 000000000..43a0207a7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strstr.c @@ -0,0 +1,154 @@ +#include +#include + +static char *twobyte_strstr(const unsigned char *h, const unsigned char *n) +{ + uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1]; + for (h++; *h && hw != nw; hw = hw<<8 | *++h); + return *h ? (char *)h-1 : 0; +} + +static char *threebyte_strstr(const unsigned char *h, const unsigned char *n) +{ + uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8; + uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8; + for (h+=2; *h && hw != nw; hw = (hw|*++h)<<8); + return *h ? (char *)h-2 : 0; +} + +static char *fourbyte_strstr(const unsigned char *h, const unsigned char *n) +{ + uint32_t nw = (uint32_t)n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3]; + uint32_t hw = (uint32_t)h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3]; + for (h+=3; *h && hw != nw; hw = hw<<8 | *++h); + return *h ? (char *)h-3 : 0; +} + +#define MAX(a,b) ((a)>(b)?(a):(b)) +#define MIN(a,b) ((a)<(b)?(a):(b)) + +#define BITOP(a,b,op) \ + ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a)))) + +static char *twoway_strstr(const unsigned char *h, const unsigned char *n) +{ + const unsigned char *z; + size_t l, ip, jp, k, p, ms, p0, mem, mem0; + size_t byteset[32 / sizeof(size_t)] = { 0 }; + size_t shift[256]; + + /* Computing length of needle and fill shift table */ + for (l=0; n[l] && h[l]; l++) + BITOP(byteset, n[l], |=), shift[n[l]] = l+1; + if (n[l]) return 0; /* hit the end of h */ + + /* Compute maximal suffix */ + ip = -1; jp = 0; k = p = 1; + while (jp+k n[jp+k]) { + jp += k; + k = 1; + p = jp - ip; + } else { + ip = jp++; + k = p = 1; + } + } + ms = ip; + p0 = p; + + /* And with the opposite comparison */ + ip = -1; jp = 0; k = p = 1; + while (jp+k ms+1) ms = ip; + else p = p0; + + /* Periodic needle? */ + if (memcmp(n, n+p, ms+1)) { + mem0 = 0; + p = MAX(ms, l-ms-1) + 1; + } else mem0 = l-p; + mem = 0; + + /* Initialize incremental end-of-haystack pointer */ + z = h; + + /* Search loop */ + for (;;) { + /* Update incremental end-of-haystack pointer */ + if (z-h < l) { + /* Fast estimate for MIN(l,63) */ + size_t grow = l | 63; + const unsigned char *z2 = memchr(z, 0, grow); + if (z2) { + z = z2; + if (z-h < l) return 0; + } else z += grow; + } + + /* Check last byte first; advance by shift on mismatch */ + if (BITOP(byteset, h[l-1], &)) { + k = l-shift[h[l-1]]; + if (k) { + if (k < mem) k = mem; + h += k; + mem = 0; + continue; + } + } else { + h += l; + mem = 0; + continue; + } + + /* Compare right half */ + for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++); + if (n[k]) { + h += k-ms; + mem = 0; + continue; + } + /* Compare left half */ + for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--); + if (k <= mem) return (char *)h; + h += p; + mem = mem0; + } +} + +char *strstr(const char *h, const char *n) +{ + /* Return immediately on empty needle */ + if (!n[0]) return (char *)h; + + /* Use faster algorithms for short needles */ + h = strchr(h, *n); + if (!h || !n[1]) return (char *)h; + if (!h[1]) return 0; + if (!n[2]) return twobyte_strstr((void *)h, (void *)n); + if (!h[2]) return 0; + if (!n[3]) return threebyte_strstr((void *)h, (void *)n); + if (!h[3]) return 0; + if (!n[4]) return fourbyte_strstr((void *)h, (void *)n); + + return twoway_strstr((void *)h, (void *)n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/strtok.c b/vendor/modernc.org/libc/musl/src/string/strtok.c new file mode 100644 index 000000000..35087902d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strtok.c @@ -0,0 +1,13 @@ +#include + +char *strtok(char *restrict s, const char *restrict sep) +{ + static char *p; + if (!s && !(s = p)) return NULL; + s += strspn(s, sep); + if (!*s) return p = 0; + p = s + strcspn(s, sep); + if (*p) *p++ = 0; + else p = 0; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strtok_r.c b/vendor/modernc.org/libc/musl/src/string/strtok_r.c new file mode 100644 index 000000000..862d4fe48 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strtok_r.c @@ -0,0 +1,12 @@ +#include + +char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p) +{ + if (!s && !(s = *p)) return NULL; + s += strspn(s, sep); + if (!*s) return *p = 0; + *p = s + strcspn(s, sep); + if (**p) *(*p)++ = 0; + else *p = 0; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/string/strverscmp.c b/vendor/modernc.org/libc/musl/src/string/strverscmp.c new file mode 100644 index 000000000..4daf276d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/strverscmp.c @@ -0,0 +1,34 @@ +#define _GNU_SOURCE +#include +#include + +int strverscmp(const char *l0, const char *r0) +{ + const unsigned char *l = (const void *)l0; + const unsigned char *r = (const void *)r0; + size_t i, dp, j; + int z = 1; + + /* Find maximal matching prefix and track its maximal digit + * suffix and whether those digits are all zeros. */ + for (dp=i=0; l[i]==r[i]; i++) { + int c = l[i]; + if (!c) return 0; + if (!isdigit(c)) dp=i+1, z=1; + else if (c!='0') z=0; + } + + if (l[dp]!='0' && r[dp]!='0') { + /* If we're not looking at a digit sequence that began + * with a zero, longest digit string is greater. */ + for (j=i; isdigit(l[j]); j++) + if (!isdigit(r[j])) return 1; + if (isdigit(r[j])) return -1; + } else if (z && dp + +void swab(const void *restrict _src, void *restrict _dest, ssize_t n) +{ + const char *src = _src; + char *dest = _dest; + for (; n>1; n-=2) { + dest[0] = src[1]; + dest[1] = src[0]; + dest += 2; + src += 2; + } +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcpcpy.c b/vendor/modernc.org/libc/musl/src/string/wcpcpy.c new file mode 100644 index 000000000..ef4013433 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcpcpy.c @@ -0,0 +1,6 @@ +#include + +wchar_t *wcpcpy(wchar_t *restrict d, const wchar_t *restrict s) +{ + return wcscpy(d, s) + wcslen(s); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcpncpy.c b/vendor/modernc.org/libc/musl/src/string/wcpncpy.c new file mode 100644 index 000000000..b667f6d6a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcpncpy.c @@ -0,0 +1,6 @@ +#include + +wchar_t *wcpncpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n) +{ + return wcsncpy(d, s, n) + wcsnlen(s, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscasecmp.c b/vendor/modernc.org/libc/musl/src/string/wcscasecmp.c new file mode 100644 index 000000000..3edeec7d3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscasecmp.c @@ -0,0 +1,7 @@ +#include +#include + +int wcscasecmp(const wchar_t *l, const wchar_t *r) +{ + return wcsncasecmp(l, r, -1); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscasecmp_l.c b/vendor/modernc.org/libc/musl/src/string/wcscasecmp_l.c new file mode 100644 index 000000000..065dd0aad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscasecmp_l.c @@ -0,0 +1,6 @@ +#include + +int wcscasecmp_l(const wchar_t *l, const wchar_t *r, locale_t locale) +{ + return wcscasecmp(l, r); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscat.c b/vendor/modernc.org/libc/musl/src/string/wcscat.c new file mode 100644 index 000000000..d4f00ebdf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscat.c @@ -0,0 +1,7 @@ +#include + +wchar_t *wcscat(wchar_t *restrict dest, const wchar_t *restrict src) +{ + wcscpy(dest + wcslen(dest), src); + return dest; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcschr.c b/vendor/modernc.org/libc/musl/src/string/wcschr.c new file mode 100644 index 000000000..8dfc2f318 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcschr.c @@ -0,0 +1,8 @@ +#include + +wchar_t *wcschr(const wchar_t *s, wchar_t c) +{ + if (!c) return (wchar_t *)s + wcslen(s); + for (; *s && *s != c; s++); + return *s ? (wchar_t *)s : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscmp.c b/vendor/modernc.org/libc/musl/src/string/wcscmp.c new file mode 100644 index 000000000..26eeee704 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscmp.c @@ -0,0 +1,7 @@ +#include + +int wcscmp(const wchar_t *l, const wchar_t *r) +{ + for (; *l==*r && *l && *r; l++, r++); + return *l - *r; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscpy.c b/vendor/modernc.org/libc/musl/src/string/wcscpy.c new file mode 100644 index 000000000..625bf53d0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscpy.c @@ -0,0 +1,8 @@ +#include + +wchar_t *wcscpy(wchar_t *restrict d, const wchar_t *restrict s) +{ + wchar_t *a = d; + while ((*d++ = *s++)); + return a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcscspn.c b/vendor/modernc.org/libc/musl/src/string/wcscspn.c new file mode 100644 index 000000000..c4e52722e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcscspn.c @@ -0,0 +1,10 @@ +#include + +size_t wcscspn(const wchar_t *s, const wchar_t *c) +{ + const wchar_t *a; + if (!c[0]) return wcslen(s); + if (!c[1]) return (s=wcschr(a=s, *c)) ? s-a : wcslen(a); + for (a=s; *s && !wcschr(c, *s); s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsdup.c b/vendor/modernc.org/libc/musl/src/string/wcsdup.c new file mode 100644 index 000000000..f398e8091 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsdup.c @@ -0,0 +1,10 @@ +#include +#include + +wchar_t *wcsdup(const wchar_t *s) +{ + size_t l = wcslen(s); + wchar_t *d = malloc((l+1)*sizeof(wchar_t)); + if (!d) return NULL; + return wmemcpy(d, s, l+1); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcslen.c b/vendor/modernc.org/libc/musl/src/string/wcslen.c new file mode 100644 index 000000000..1b7b66550 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcslen.c @@ -0,0 +1,8 @@ +#include + +size_t wcslen(const wchar_t *s) +{ + const wchar_t *a; + for (a=s; *s; s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsncasecmp.c b/vendor/modernc.org/libc/musl/src/string/wcsncasecmp.c new file mode 100644 index 000000000..8fefe799c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsncasecmp.c @@ -0,0 +1,9 @@ +#include +#include + +int wcsncasecmp(const wchar_t *l, const wchar_t *r, size_t n) +{ + if (!n--) return 0; + for (; *l && *r && n && (*l == *r || towlower(*l) == towlower(*r)); l++, r++, n--); + return towlower(*l) - towlower(*r); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsncasecmp_l.c b/vendor/modernc.org/libc/musl/src/string/wcsncasecmp_l.c new file mode 100644 index 000000000..638724819 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsncasecmp_l.c @@ -0,0 +1,6 @@ +#include + +int wcsncasecmp_l(const wchar_t *l, const wchar_t *r, size_t n, locale_t locale) +{ + return wcsncasecmp(l, r, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsncat.c b/vendor/modernc.org/libc/musl/src/string/wcsncat.c new file mode 100644 index 000000000..8563f1a2a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsncat.c @@ -0,0 +1,10 @@ +#include + +wchar_t *wcsncat(wchar_t *restrict d, const wchar_t *restrict s, size_t n) +{ + wchar_t *a = d; + d += wcslen(d); + while (n && *s) n--, *d++ = *s++; + *d++ = 0; + return a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsncmp.c b/vendor/modernc.org/libc/musl/src/string/wcsncmp.c new file mode 100644 index 000000000..4ab32a924 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsncmp.c @@ -0,0 +1,7 @@ +#include + +int wcsncmp(const wchar_t *l, const wchar_t *r, size_t n) +{ + for (; n && *l==*r && *l && *r; n--, l++, r++); + return n ? *l - *r : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsncpy.c b/vendor/modernc.org/libc/musl/src/string/wcsncpy.c new file mode 100644 index 000000000..4bede04d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsncpy.c @@ -0,0 +1,9 @@ +#include + +wchar_t *wcsncpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n) +{ + wchar_t *a = d; + while (n && *s) n--, *d++ = *s++; + wmemset(d, 0, n); + return a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsnlen.c b/vendor/modernc.org/libc/musl/src/string/wcsnlen.c new file mode 100644 index 000000000..a77633731 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsnlen.c @@ -0,0 +1,8 @@ +#include + +size_t wcsnlen(const wchar_t *s, size_t n) +{ + const wchar_t *z = wmemchr(s, 0, n); + if (z) n = z-s; + return n; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcspbrk.c b/vendor/modernc.org/libc/musl/src/string/wcspbrk.c new file mode 100644 index 000000000..0c72c197b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcspbrk.c @@ -0,0 +1,7 @@ +#include + +wchar_t *wcspbrk(const wchar_t *s, const wchar_t *b) +{ + s += wcscspn(s, b); + return *s ? (wchar_t *)s : NULL; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsrchr.c b/vendor/modernc.org/libc/musl/src/string/wcsrchr.c new file mode 100644 index 000000000..8961b9e2f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsrchr.c @@ -0,0 +1,8 @@ +#include + +wchar_t *wcsrchr(const wchar_t *s, wchar_t c) +{ + const wchar_t *p; + for (p=s+wcslen(s); p>=s && *p!=c; p--); + return p>=s ? (wchar_t *)p : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsspn.c b/vendor/modernc.org/libc/musl/src/string/wcsspn.c new file mode 100644 index 000000000..4320d8f6b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsspn.c @@ -0,0 +1,8 @@ +#include + +size_t wcsspn(const wchar_t *s, const wchar_t *c) +{ + const wchar_t *a; + for (a=s; *s && wcschr(c, *s); s++); + return s-a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcsstr.c b/vendor/modernc.org/libc/musl/src/string/wcsstr.c new file mode 100644 index 000000000..4caaef3c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcsstr.c @@ -0,0 +1,105 @@ +#include + +#define MAX(a,b) ((a)>(b)?(a):(b)) +#define MIN(a,b) ((a)<(b)?(a):(b)) + +static wchar_t *twoway_wcsstr(const wchar_t *h, const wchar_t *n) +{ + const wchar_t *z; + size_t l, ip, jp, k, p, ms, p0, mem, mem0; + + /* Computing length of needle */ + for (l=0; n[l] && h[l]; l++); + if (n[l]) return 0; /* hit the end of h */ + + /* Compute maximal suffix */ + ip = -1; jp = 0; k = p = 1; + while (jp+k n[jp+k]) { + jp += k; + k = 1; + p = jp - ip; + } else { + ip = jp++; + k = p = 1; + } + } + ms = ip; + p0 = p; + + /* And with the opposite comparison */ + ip = -1; jp = 0; k = p = 1; + while (jp+k ms+1) ms = ip; + else p = p0; + + /* Periodic needle? */ + if (wmemcmp(n, n+p, ms+1)) { + mem0 = 0; + p = MAX(ms, l-ms-1) + 1; + } else mem0 = l-p; + mem = 0; + + /* Initialize incremental end-of-haystack pointer */ + z = h; + + /* Search loop */ + for (;;) { + /* Update incremental end-of-haystack pointer */ + if (z-h < l) { + /* Fast estimate for MIN(l,63) */ + size_t grow = l | 63; + const wchar_t *z2 = wmemchr(z, 0, grow); + if (z2) { + z = z2; + if (z-h < l) return 0; + } else z += grow; + } + + /* Compare right half */ + for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++); + if (n[k]) { + h += k-ms; + mem = 0; + continue; + } + /* Compare left half */ + for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--); + if (k <= mem) return (wchar_t *)h; + h += p; + mem = mem0; + } +} + +wchar_t *wcsstr(const wchar_t *restrict h, const wchar_t *restrict n) +{ + /* Return immediately on empty needle or haystack */ + if (!n[0]) return (wchar_t *)h; + if (!h[0]) return 0; + + /* Use faster algorithms for short needles */ + h = wcschr(h, *n); + if (!h || !n[1]) return (wchar_t *)h; + if (!h[1]) return 0; + + return twoway_wcsstr(h, n); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcstok.c b/vendor/modernc.org/libc/musl/src/string/wcstok.c new file mode 100644 index 000000000..ecc803319 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcstok.c @@ -0,0 +1,12 @@ +#include + +wchar_t *wcstok(wchar_t *restrict s, const wchar_t *restrict sep, wchar_t **restrict p) +{ + if (!s && !(s = *p)) return NULL; + s += wcsspn(s, sep); + if (!*s) return *p = 0; + *p = s + wcscspn(s, sep); + if (**p) *(*p)++ = 0; + else *p = 0; + return s; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wcswcs.c b/vendor/modernc.org/libc/musl/src/string/wcswcs.c new file mode 100644 index 000000000..9cfe4ac40 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wcswcs.c @@ -0,0 +1,6 @@ +#include + +wchar_t *wcswcs(const wchar_t *haystack, const wchar_t *needle) +{ + return wcsstr(haystack, needle); +} diff --git a/vendor/modernc.org/libc/musl/src/string/wmemchr.c b/vendor/modernc.org/libc/musl/src/string/wmemchr.c new file mode 100644 index 000000000..2bc2c2702 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wmemchr.c @@ -0,0 +1,7 @@ +#include + +wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n) +{ + for (; n && *s != c; n--, s++); + return n ? (wchar_t *)s : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wmemcmp.c b/vendor/modernc.org/libc/musl/src/string/wmemcmp.c new file mode 100644 index 000000000..2a193263c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wmemcmp.c @@ -0,0 +1,7 @@ +#include + +int wmemcmp(const wchar_t *l, const wchar_t *r, size_t n) +{ + for (; n && *l==*r; n--, l++, r++); + return n ? *l-*r : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wmemcpy.c b/vendor/modernc.org/libc/musl/src/string/wmemcpy.c new file mode 100644 index 000000000..52e6e6e07 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wmemcpy.c @@ -0,0 +1,8 @@ +#include + +wchar_t *wmemcpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n) +{ + wchar_t *a = d; + while (n--) *d++ = *s++; + return a; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wmemmove.c b/vendor/modernc.org/libc/musl/src/string/wmemmove.c new file mode 100644 index 000000000..964c90329 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wmemmove.c @@ -0,0 +1,13 @@ +#include +#include + +wchar_t *wmemmove(wchar_t *d, const wchar_t *s, size_t n) +{ + wchar_t *d0 = d; + if (d == s) return d; + if ((uintptr_t)d-(uintptr_t)s < n * sizeof *d) + while (n--) d[n] = s[n]; + else + while (n--) *d++ = *s++; + return d0; +} diff --git a/vendor/modernc.org/libc/musl/src/string/wmemset.c b/vendor/modernc.org/libc/musl/src/string/wmemset.c new file mode 100644 index 000000000..07a037a0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/string/wmemset.c @@ -0,0 +1,8 @@ +#include + +wchar_t *wmemset(wchar_t *d, wchar_t c, size_t n) +{ + wchar_t *ret = d; + while (n--) *d++ = c; + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/temp/__randname.c b/vendor/modernc.org/libc/musl/src/temp/__randname.c new file mode 100644 index 000000000..2bce37a0c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/__randname.c @@ -0,0 +1,18 @@ +#include +#include + +/* This assumes that a check for the + template size has already been made */ +char *__randname(char *template) +{ + int i; + struct timespec ts; + unsigned long r; + + __clock_gettime(CLOCK_REALTIME, &ts); + r = ts.tv_nsec*65537 ^ (uintptr_t)&ts / 16 + (uintptr_t)template; + for (i=0; i<6; i++, r>>=5) + template[i] = 'A'+(r&15)+(r&16)*2; + + return template; +} diff --git a/vendor/modernc.org/libc/musl/src/temp/mkdtemp.c b/vendor/modernc.org/libc/musl/src/temp/mkdtemp.c new file mode 100644 index 000000000..5708257bf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mkdtemp.c @@ -0,0 +1,23 @@ +#include +#include +#include +#include + +char *mkdtemp(char *template) +{ + size_t l = strlen(template); + int retries = 100; + + if (l<6 || memcmp(template+l-6, "XXXXXX", 6)) { + errno = EINVAL; + return 0; + } + + do { + __randname(template+l-6); + if (!mkdir(template, 0700)) return template; + } while (--retries && errno == EEXIST); + + memcpy(template+l-6, "XXXXXX", 6); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/temp/mkostemp.c b/vendor/modernc.org/libc/musl/src/temp/mkostemp.c new file mode 100644 index 000000000..d8dcb8052 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mkostemp.c @@ -0,0 +1,9 @@ +#define _BSD_SOURCE +#include + +int mkostemp(char *template, int flags) +{ + return __mkostemps(template, 0, flags); +} + +weak_alias(mkostemp, mkostemp64); diff --git a/vendor/modernc.org/libc/musl/src/temp/mkostemps.c b/vendor/modernc.org/libc/musl/src/temp/mkostemps.c new file mode 100644 index 000000000..ef24eeae2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mkostemps.c @@ -0,0 +1,29 @@ +#define _BSD_SOURCE +#include +#include +#include +#include +#include + +int __mkostemps(char *template, int len, int flags) +{ + size_t l = strlen(template); + if (l<6 || len>l-6 || memcmp(template+l-len-6, "XXXXXX", 6)) { + errno = EINVAL; + return -1; + } + + flags -= flags & O_ACCMODE; + int fd, retries = 100; + do { + __randname(template+l-len-6); + if ((fd = open(template, flags | O_RDWR | O_CREAT | O_EXCL, 0600))>=0) + return fd; + } while (--retries && errno == EEXIST); + + memcpy(template+l-len-6, "XXXXXX", 6); + return -1; +} + +weak_alias(__mkostemps, mkostemps); +weak_alias(__mkostemps, mkostemps64); diff --git a/vendor/modernc.org/libc/musl/src/temp/mkstemp.c b/vendor/modernc.org/libc/musl/src/temp/mkstemp.c new file mode 100644 index 000000000..166b8afe4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mkstemp.c @@ -0,0 +1,8 @@ +#include + +int mkstemp(char *template) +{ + return __mkostemps(template, 0, 0); +} + +weak_alias(mkstemp, mkstemp64); diff --git a/vendor/modernc.org/libc/musl/src/temp/mkstemps.c b/vendor/modernc.org/libc/musl/src/temp/mkstemps.c new file mode 100644 index 000000000..6b7531b5e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mkstemps.c @@ -0,0 +1,9 @@ +#define _BSD_SOURCE +#include + +int mkstemps(char *template, int len) +{ + return __mkostemps(template, len, 0); +} + +weak_alias(mkstemps, mkstemps64); diff --git a/vendor/modernc.org/libc/musl/src/temp/mktemp.c b/vendor/modernc.org/libc/musl/src/temp/mktemp.c new file mode 100644 index 000000000..7b3d2648b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/temp/mktemp.c @@ -0,0 +1,30 @@ +#define _GNU_SOURCE +#include +#include +#include +#include + +char *mktemp(char *template) +{ + size_t l = strlen(template); + int retries = 100; + struct stat st; + + if (l < 6 || memcmp(template+l-6, "XXXXXX", 6)) { + errno = EINVAL; + *template = 0; + return template; + } + + do { + __randname(template+l-6); + if (stat(template, &st)) { + if (errno != ENOENT) *template = 0; + return template; + } + } while (--retries); + + *template = 0; + errno = EEXIST; + return template; +} diff --git a/vendor/modernc.org/libc/musl/src/termios/cfgetospeed.c b/vendor/modernc.org/libc/musl/src/termios/cfgetospeed.c new file mode 100644 index 000000000..55fa6f55c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/cfgetospeed.c @@ -0,0 +1,13 @@ +#define _BSD_SOURCE +#include +#include + +speed_t cfgetospeed(const struct termios *tio) +{ + return tio->c_cflag & CBAUD; +} + +speed_t cfgetispeed(const struct termios *tio) +{ + return cfgetospeed(tio); +} diff --git a/vendor/modernc.org/libc/musl/src/termios/cfmakeraw.c b/vendor/modernc.org/libc/musl/src/termios/cfmakeraw.c new file mode 100644 index 000000000..c9dddc12a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/cfmakeraw.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include + +void cfmakeraw(struct termios *t) +{ + t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + t->c_oflag &= ~OPOST; + t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); + t->c_cflag &= ~(CSIZE|PARENB); + t->c_cflag |= CS8; + t->c_cc[VMIN] = 1; + t->c_cc[VTIME] = 0; +} diff --git a/vendor/modernc.org/libc/musl/src/termios/cfsetospeed.c b/vendor/modernc.org/libc/musl/src/termios/cfsetospeed.c new file mode 100644 index 000000000..c9cbdd9d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/cfsetospeed.c @@ -0,0 +1,22 @@ +#define _BSD_SOURCE +#include +#include +#include + +int cfsetospeed(struct termios *tio, speed_t speed) +{ + if (speed & ~CBAUD) { + errno = EINVAL; + return -1; + } + tio->c_cflag &= ~CBAUD; + tio->c_cflag |= speed; + return 0; +} + +int cfsetispeed(struct termios *tio, speed_t speed) +{ + return speed ? cfsetospeed(tio, speed) : 0; +} + +weak_alias(cfsetospeed, cfsetspeed); diff --git a/vendor/modernc.org/libc/musl/src/termios/tcdrain.c b/vendor/modernc.org/libc/musl/src/termios/tcdrain.c new file mode 100644 index 000000000..c0e542b3e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcdrain.c @@ -0,0 +1,8 @@ +#include +#include +#include "syscall.h" + +int tcdrain(int fd) +{ + return syscall_cp(SYS_ioctl, fd, TCSBRK, 1); +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcflow.c b/vendor/modernc.org/libc/musl/src/termios/tcflow.c new file mode 100644 index 000000000..c7fc3fe22 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcflow.c @@ -0,0 +1,7 @@ +#include +#include + +int tcflow(int fd, int action) +{ + return ioctl(fd, TCXONC, action); +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcflush.c b/vendor/modernc.org/libc/musl/src/termios/tcflush.c new file mode 100644 index 000000000..502226694 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcflush.c @@ -0,0 +1,7 @@ +#include +#include + +int tcflush(int fd, int queue) +{ + return ioctl(fd, TCFLSH, queue); +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcgetattr.c b/vendor/modernc.org/libc/musl/src/termios/tcgetattr.c new file mode 100644 index 000000000..545a0bf8a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcgetattr.c @@ -0,0 +1,9 @@ +#include +#include + +int tcgetattr(int fd, struct termios *tio) +{ + if (ioctl(fd, TCGETS, tio)) + return -1; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcgetsid.c b/vendor/modernc.org/libc/musl/src/termios/tcgetsid.c new file mode 100644 index 000000000..1053fd647 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcgetsid.c @@ -0,0 +1,10 @@ +#include +#include + +pid_t tcgetsid(int fd) +{ + int sid; + if (ioctl(fd, TIOCGSID, &sid) < 0) + return -1; + return sid; +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcsendbreak.c b/vendor/modernc.org/libc/musl/src/termios/tcsendbreak.c new file mode 100644 index 000000000..b6df0a23a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcsendbreak.c @@ -0,0 +1,8 @@ +#include +#include + +int tcsendbreak(int fd, int dur) +{ + /* nonzero duration is implementation-defined, so ignore it */ + return ioctl(fd, TCSBRK, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/termios/tcsetattr.c b/vendor/modernc.org/libc/musl/src/termios/tcsetattr.c new file mode 100644 index 000000000..94df18f91 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/termios/tcsetattr.c @@ -0,0 +1,12 @@ +#include +#include +#include + +int tcsetattr(int fd, int act, const struct termios *tio) +{ + if (act < 0 || act > 2) { + errno = EINVAL; + return -1; + } + return ioctl(fd, TCSETS+act, tio); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__lock.c b/vendor/modernc.org/libc/musl/src/thread/__lock.c new file mode 100644 index 000000000..60eece49a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__lock.c @@ -0,0 +1,62 @@ +#include "pthread_impl.h" + +/* This lock primitive combines a flag (in the sign bit) and a + * congestion count (= threads inside the critical section, CS) in a + * single int that is accessed through atomic operations. The states + * of the int for value x are: + * + * x == 0: unlocked and no thread inside the critical section + * + * x < 0: locked with a congestion of x-INT_MIN, including the thread + * that holds the lock + * + * x > 0: unlocked with a congestion of x + * + * or in an equivalent formulation x is the congestion count or'ed + * with INT_MIN as a lock flag. + */ + +void __lock(volatile int *l) +{ + int need_locks = libc.need_locks; + if (!need_locks) return; + /* fast path: INT_MIN for the lock, +1 for the congestion */ + int current = a_cas(l, 0, INT_MIN + 1); + if (need_locks < 0) libc.need_locks = 0; + if (!current) return; + /* A first spin loop, for medium congestion. */ + for (unsigned i = 0; i < 10; ++i) { + if (current < 0) current -= INT_MIN + 1; + // assertion: current >= 0 + int val = a_cas(l, current, INT_MIN + (current + 1)); + if (val == current) return; + current = val; + } + // Spinning failed, so mark ourselves as being inside the CS. + current = a_fetch_add(l, 1) + 1; + /* The main lock acquisition loop for heavy congestion. The only + * change to the value performed inside that loop is a successful + * lock via the CAS that acquires the lock. */ + for (;;) { + /* We can only go into wait, if we know that somebody holds the + * lock and will eventually wake us up, again. */ + if (current < 0) { + __futexwait(l, current, 1); + current -= INT_MIN + 1; + } + /* assertion: current > 0, the count includes us already. */ + int val = a_cas(l, current, INT_MIN + current); + if (val == current) return; + current = val; + } +} + +void __unlock(volatile int *l) +{ + /* Check l[0] to see if we are multi-threaded. */ + if (l[0] < 0) { + if (a_fetch_add(l, -(INT_MIN + 1)) != (INT_MIN + 1)) { + __wake(l, 1, 1); + } + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__set_thread_area.c b/vendor/modernc.org/libc/musl/src/thread/__set_thread_area.c new file mode 100644 index 000000000..152a6a216 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__set_thread_area.c @@ -0,0 +1,10 @@ +#include "pthread_impl.h" + +int __set_thread_area(void *p) +{ +#ifdef SYS_set_thread_area + return __syscall(SYS_set_thread_area, p); +#else + return -ENOSYS; +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__syscall_cp.c b/vendor/modernc.org/libc/musl/src/thread/__syscall_cp.c new file mode 100644 index 000000000..42a01674b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__syscall_cp.c @@ -0,0 +1,20 @@ +#include "pthread_impl.h" +#include "syscall.h" + +hidden long __syscall_cp_c(); + +static long sccp(syscall_arg_t nr, + syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, + syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) +{ + return __syscall(nr, u, v, w, x, y, z); +} + +weak_alias(sccp, __syscall_cp_c); + +long (__syscall_cp)(syscall_arg_t nr, + syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, + syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) +{ + return __syscall_cp_c(nr, u, v, w, x, y, z); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__timedwait.c b/vendor/modernc.org/libc/musl/src/thread/__timedwait.c new file mode 100644 index 000000000..666093be9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__timedwait.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include "futex.h" +#include "syscall.h" +#include "pthread_impl.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +static int __futex4_cp(volatile void *addr, int op, int val, const struct timespec *to) +{ + int r; +#ifdef SYS_futex_time64 + time_t s = to ? to->tv_sec : 0; + long ns = to ? to->tv_nsec : 0; + r = -ENOSYS; + if (SYS_futex == SYS_futex_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_futex_time64, addr, op, val, + to ? ((long long[]){s, ns}) : 0); + if (SYS_futex == SYS_futex_time64 || r!=-ENOSYS) return r; + to = to ? (void *)(long[]){CLAMP(s), ns} : 0; +#endif + r = __syscall_cp(SYS_futex, addr, op, val, to); + if (r != -ENOSYS) return r; + return __syscall_cp(SYS_futex, addr, op & ~FUTEX_PRIVATE, val, to); +} + +static volatile int dummy = 0; +weak_alias(dummy, __eintr_valid_flag); + +int __timedwait_cp(volatile int *addr, int val, + clockid_t clk, const struct timespec *at, int priv) +{ + int r; + struct timespec to, *top=0; + + if (priv) priv = FUTEX_PRIVATE; + + if (at) { + if (at->tv_nsec >= 1000000000UL) return EINVAL; + if (__clock_gettime(clk, &to)) return EINVAL; + to.tv_sec = at->tv_sec - to.tv_sec; + if ((to.tv_nsec = at->tv_nsec - to.tv_nsec) < 0) { + to.tv_sec--; + to.tv_nsec += 1000000000; + } + if (to.tv_sec < 0) return ETIMEDOUT; + top = &to; + } + + r = -__futex4_cp(addr, FUTEX_WAIT|priv, val, top); + if (r != EINTR && r != ETIMEDOUT && r != ECANCELED) r = 0; + /* Mitigate bug in old kernels wrongly reporting EINTR for non- + * interrupting (SA_RESTART) signal handlers. This is only practical + * when NO interrupting signal handlers have been installed, and + * works by sigaction tracking whether that's the case. */ + if (r == EINTR && !__eintr_valid_flag) r = 0; + + return r; +} + +int __timedwait(volatile int *addr, int val, + clockid_t clk, const struct timespec *at, int priv) +{ + int cs, r; + __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + r = __timedwait_cp(addr, val, clk, at, priv); + __pthread_setcancelstate(cs, 0); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__tls_get_addr.c b/vendor/modernc.org/libc/musl/src/thread/__tls_get_addr.c new file mode 100644 index 000000000..19524fe07 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__tls_get_addr.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +void *__tls_get_addr(tls_mod_off_t *v) +{ + pthread_t self = __pthread_self(); + return (void *)(self->dtv[v[0]] + v[1]); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__unmapself.c b/vendor/modernc.org/libc/musl/src/thread/__unmapself.c new file mode 100644 index 000000000..31d94e67e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__unmapself.c @@ -0,0 +1,24 @@ +#include "pthread_impl.h" +#include "atomic.h" +#include "syscall.h" +/* cheat and reuse CRTJMP macro from dynlink code */ +#include "dynlink.h" + +static void *unmap_base; +static size_t unmap_size; +static char shared_stack[256]; + +static void do_unmap() +{ + __syscall(SYS_munmap, unmap_base, unmap_size); + __syscall(SYS_exit); +} + +void __unmapself(void *base, size_t size) +{ + char *stack = shared_stack + sizeof shared_stack; + stack -= (uintptr_t)stack % 16; + unmap_base = base; + unmap_size = size; + CRTJMP(do_unmap, stack); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/__wait.c b/vendor/modernc.org/libc/musl/src/thread/__wait.c new file mode 100644 index 000000000..dc33c1a30 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/__wait.c @@ -0,0 +1,17 @@ +#include "pthread_impl.h" + +void __wait(volatile int *addr, volatile int *waiters, int val, int priv) +{ + int spins=100; + if (priv) priv = FUTEX_PRIVATE; + while (spins-- && (!waiters || !*waiters)) { + if (*addr==val) a_spin(); + else return; + } + if (waiters) a_inc(waiters); + while (*addr==val) { + __syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0) != -ENOSYS + || __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0); + } + if (waiters) a_dec(waiters); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/arm/__set_thread_area.c b/vendor/modernc.org/libc/musl/src/thread/arm/__set_thread_area.c new file mode 100644 index 000000000..09de65aab --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/arm/__set_thread_area.c @@ -0,0 +1,52 @@ +#include +#include +#include "pthread_impl.h" +#include "libc.h" + +#define HWCAP_TLS (1 << 15) + +extern hidden const unsigned char + __a_barrier_oldkuser[], __a_barrier_v6[], __a_barrier_v7[], + __a_cas_v6[], __a_cas_v7[], + __a_gettp_cp15[]; + +#define __a_barrier_kuser 0xffff0fa0 +#define __a_barrier_oldkuser (uintptr_t)__a_barrier_oldkuser +#define __a_barrier_v6 (uintptr_t)__a_barrier_v6 +#define __a_barrier_v7 (uintptr_t)__a_barrier_v7 + +#define __a_cas_kuser 0xffff0fc0 +#define __a_cas_v6 (uintptr_t)__a_cas_v6 +#define __a_cas_v7 (uintptr_t)__a_cas_v7 + +#define __a_gettp_kuser 0xffff0fe0 +#define __a_gettp_cp15 (uintptr_t)__a_gettp_cp15 + +extern hidden uintptr_t __a_barrier_ptr, __a_cas_ptr, __a_gettp_ptr; + +int __set_thread_area(void *p) +{ +#if !__ARM_ARCH_7A__ && !__ARM_ARCH_7R__ && __ARM_ARCH < 7 + if (__hwcap & HWCAP_TLS) { + size_t *aux; + __a_cas_ptr = __a_cas_v7; + __a_barrier_ptr = __a_barrier_v7; + for (aux=libc.auxv; *aux; aux+=2) { + if (*aux != AT_PLATFORM) continue; + const char *s = (void *)aux[1]; + if (s[0]!='v' || s[1]!='6' || s[2]-'0'<10u) break; + __a_cas_ptr = __a_cas_v6; + __a_barrier_ptr = __a_barrier_v6; + break; + } + } else { + int ver = *(int *)0xffff0ffc; + __a_gettp_ptr = __a_gettp_kuser; + __a_cas_ptr = __a_cas_kuser; + __a_barrier_ptr = __a_barrier_kuser; + if (ver < 2) a_crash(); + if (ver < 3) __a_barrier_ptr = __a_barrier_oldkuser; + } +#endif + return __syscall(0xf0005, p); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/call_once.c b/vendor/modernc.org/libc/musl/src/thread/call_once.c new file mode 100644 index 000000000..5ed30183d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/call_once.c @@ -0,0 +1,7 @@ +#include +#include + +void call_once(once_flag *flag, void (*func)(void)) +{ + __pthread_once(flag, func); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/clone.c b/vendor/modernc.org/libc/musl/src/thread/clone.c new file mode 100644 index 000000000..be80c8ea4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/clone.c @@ -0,0 +1,7 @@ +#include +#include "pthread_impl.h" + +int __clone(int (*func)(void *), void *stack, int flags, void *arg, ...) +{ + return -ENOSYS; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_broadcast.c b/vendor/modernc.org/libc/musl/src/thread/cnd_broadcast.c new file mode 100644 index 000000000..e76b5a81b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_broadcast.c @@ -0,0 +1,9 @@ +#include +#include + +int cnd_broadcast(cnd_t *c) +{ + /* This internal function never fails, and always returns zero, + * which matches the value thrd_success is defined with. */ + return __private_cond_signal((pthread_cond_t *)c, -1); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_destroy.c b/vendor/modernc.org/libc/musl/src/thread/cnd_destroy.c new file mode 100644 index 000000000..453c90be5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_destroy.c @@ -0,0 +1,6 @@ +#include + +void cnd_destroy(cnd_t *c) +{ + /* For private cv this is a no-op */ +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_init.c b/vendor/modernc.org/libc/musl/src/thread/cnd_init.c new file mode 100644 index 000000000..18c508557 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_init.c @@ -0,0 +1,7 @@ +#include + +int cnd_init(cnd_t *c) +{ + *c = (cnd_t){ 0 }; + return thrd_success; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_signal.c b/vendor/modernc.org/libc/musl/src/thread/cnd_signal.c new file mode 100644 index 000000000..02cdc6c60 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_signal.c @@ -0,0 +1,9 @@ +#include +#include + +int cnd_signal(cnd_t *c) +{ + /* This internal function never fails, and always returns zero, + * which matches the value thrd_success is defined with. */ + return __private_cond_signal((pthread_cond_t *)c, 1); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_timedwait.c b/vendor/modernc.org/libc/musl/src/thread/cnd_timedwait.c new file mode 100644 index 000000000..2802af522 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_timedwait.c @@ -0,0 +1,14 @@ +#include +#include +#include + +int cnd_timedwait(cnd_t *restrict c, mtx_t *restrict m, const struct timespec *restrict ts) +{ + int ret = __pthread_cond_timedwait((pthread_cond_t *)c, (pthread_mutex_t *)m, ts); + switch (ret) { + /* May also return EINVAL or EPERM. */ + default: return thrd_error; + case 0: return thrd_success; + case ETIMEDOUT: return thrd_timedout; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/cnd_wait.c b/vendor/modernc.org/libc/musl/src/thread/cnd_wait.c new file mode 100644 index 000000000..602796f85 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/cnd_wait.c @@ -0,0 +1,9 @@ +#include + +int cnd_wait(cnd_t *c, mtx_t *m) +{ + /* Calling cnd_timedwait with a null pointer is an extension. + * It is convenient here to avoid duplication of the logic + * for return values. */ + return cnd_timedwait(c, m, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/default_attr.c b/vendor/modernc.org/libc/musl/src/thread/default_attr.c new file mode 100644 index 000000000..dce964096 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/default_attr.c @@ -0,0 +1,4 @@ +#include "pthread_impl.h" + +unsigned __default_stacksize = DEFAULT_STACK_SIZE; +unsigned __default_guardsize = DEFAULT_GUARD_SIZE; diff --git a/vendor/modernc.org/libc/musl/src/thread/lock_ptc.c b/vendor/modernc.org/libc/musl/src/thread/lock_ptc.c new file mode 100644 index 000000000..7adedab75 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/lock_ptc.c @@ -0,0 +1,18 @@ +#include + +static pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER; + +void __inhibit_ptc() +{ + pthread_rwlock_wrlock(&lock); +} + +void __acquire_ptc() +{ + pthread_rwlock_rdlock(&lock); +} + +void __release_ptc() +{ + pthread_rwlock_unlock(&lock); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_destroy.c b/vendor/modernc.org/libc/musl/src/thread/mtx_destroy.c new file mode 100644 index 000000000..40a089998 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_destroy.c @@ -0,0 +1,5 @@ +#include + +void mtx_destroy(mtx_t *mtx) +{ +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_init.c b/vendor/modernc.org/libc/musl/src/thread/mtx_init.c new file mode 100644 index 000000000..4826f76b1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_init.c @@ -0,0 +1,10 @@ +#include "pthread_impl.h" +#include + +int mtx_init(mtx_t *m, int type) +{ + *m = (mtx_t){ + ._m_type = ((type&mtx_recursive) ? PTHREAD_MUTEX_RECURSIVE : PTHREAD_MUTEX_NORMAL), + }; + return thrd_success; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_lock.c b/vendor/modernc.org/libc/musl/src/thread/mtx_lock.c new file mode 100644 index 000000000..5c2415c1a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_lock.c @@ -0,0 +1,12 @@ +#include "pthread_impl.h" +#include + +int mtx_lock(mtx_t *m) +{ + if (m->_m_type == PTHREAD_MUTEX_NORMAL && !a_cas(&m->_m_lock, 0, EBUSY)) + return thrd_success; + /* Calling mtx_timedlock with a null pointer is an extension. + * It is convenient, here to avoid duplication of the logic + * for return values. */ + return mtx_timedlock(m, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_timedlock.c b/vendor/modernc.org/libc/musl/src/thread/mtx_timedlock.c new file mode 100644 index 000000000..d22c8cf44 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_timedlock.c @@ -0,0 +1,13 @@ +#include +#include +#include + +int mtx_timedlock(mtx_t *restrict m, const struct timespec *restrict ts) +{ + int ret = __pthread_mutex_timedlock((pthread_mutex_t *)m, ts); + switch (ret) { + default: return thrd_error; + case 0: return thrd_success; + case ETIMEDOUT: return thrd_timedout; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_trylock.c b/vendor/modernc.org/libc/musl/src/thread/mtx_trylock.c new file mode 100644 index 000000000..40a8b8c29 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_trylock.c @@ -0,0 +1,15 @@ +#include "pthread_impl.h" +#include + +int mtx_trylock(mtx_t *m) +{ + if (m->_m_type == PTHREAD_MUTEX_NORMAL) + return (a_cas(&m->_m_lock, 0, EBUSY) & EBUSY) ? thrd_busy : thrd_success; + + int ret = __pthread_mutex_trylock((pthread_mutex_t *)m); + switch (ret) { + default: return thrd_error; + case 0: return thrd_success; + case EBUSY: return thrd_busy; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/mtx_unlock.c b/vendor/modernc.org/libc/musl/src/thread/mtx_unlock.c new file mode 100644 index 000000000..2e5c8cf6b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/mtx_unlock.c @@ -0,0 +1,10 @@ +#include +#include + +int mtx_unlock(mtx_t *mtx) +{ + /* The only cases where pthread_mutex_unlock can return an + * error are undefined behavior for C11 mtx_unlock, so we can + * assume it does not return an error and simply tail call. */ + return __pthread_mutex_unlock((pthread_mutex_t *)mtx); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_atfork.c b/vendor/modernc.org/libc/musl/src/thread/pthread_atfork.c new file mode 100644 index 000000000..764974016 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_atfork.c @@ -0,0 +1,49 @@ +#include +#include "libc.h" +#include "lock.h" + +static struct atfork_funcs { + void (*prepare)(void); + void (*parent)(void); + void (*child)(void); + struct atfork_funcs *prev, *next; +} *funcs; + +static volatile int lock[1]; + +void __fork_handler(int who) +{ + struct atfork_funcs *p; + if (!funcs) return; + if (who < 0) { + LOCK(lock); + for (p=funcs; p; p = p->next) { + if (p->prepare) p->prepare(); + funcs = p; + } + } else { + for (p=funcs; p; p = p->prev) { + if (!who && p->parent) p->parent(); + else if (who && p->child) p->child(); + funcs = p; + } + UNLOCK(lock); + } +} + +int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) +{ + struct atfork_funcs *new = malloc(sizeof *new); + if (!new) return -1; + + LOCK(lock); + new->next = funcs; + new->prev = 0; + new->prepare = prepare; + new->parent = parent; + new->child = child; + if (funcs) funcs->prev = new; + funcs = new; + UNLOCK(lock); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_destroy.c new file mode 100644 index 000000000..b5845dd0f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_attr_destroy(pthread_attr_t *a) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_get.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_get.c new file mode 100644 index 000000000..6bc5cb1a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_get.c @@ -0,0 +1,108 @@ +#include "pthread_impl.h" + +int __ccgo_pthreadAttrGetDetachState(pthread_attr_t *a) { + return a->_a_detach; +} + +int pthread_attr_getdetachstate(const pthread_attr_t *a, int *state) +{ + *state = a->_a_detach; + return 0; +} +// +// int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size) +// { +// *size = a->_a_guardsize; +// return 0; +// } +// +// int pthread_attr_getinheritsched(const pthread_attr_t *restrict a, int *restrict inherit) +// { +// *inherit = a->_a_sched; +// return 0; +// } +// +// int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param) +// { +// param->sched_priority = a->_a_prio; +// return 0; +// } +// +// int pthread_attr_getschedpolicy(const pthread_attr_t *restrict a, int *restrict policy) +// { +// *policy = a->_a_policy; +// return 0; +// } +// +// int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope) +// { +// *scope = PTHREAD_SCOPE_SYSTEM; +// return 0; +// } +// +// int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size) +// { +// if (!a->_a_stackaddr) +// return EINVAL; +// *size = a->_a_stacksize; +// *addr = (void *)(a->_a_stackaddr - *size); +// return 0; +// } +// +// int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size) +// { +// *size = a->_a_stacksize; +// return 0; +// } +// +// int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared) +// { +// *pshared = !!a->__attr; +// return 0; +// } +// +// int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk) +// { +// *clk = a->__attr & 0x7fffffff; +// return 0; +// } +// +// int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared) +// { +// *pshared = a->__attr>>31; +// return 0; +// } +// +// int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol) +// { +// *protocol = PTHREAD_PRIO_NONE; +// return 0; +// } +// int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared) +// { +// *pshared = a->__attr / 128U % 2; +// return 0; +// } +// +// int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust) +// { +// *robust = a->__attr / 4U % 2; +// return 0; +// } + +int __ccgo_pthreadMutexattrGettype(const pthread_mutexattr_t *restrict a) +{ + return a->__attr & 3; +} + +// int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type) +// { +// *type = a->__attr & 3; +// return 0; +// } +// +// int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared) +// { +// *pshared = a->__attr[0]; +// return 0; +// } diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_init.c new file mode 100644 index 000000000..463a8d207 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_init.c @@ -0,0 +1,11 @@ +#include "pthread_impl.h" + +int pthread_attr_init(pthread_attr_t *a) +{ + *a = (pthread_attr_t){0}; + __acquire_ptc(); + a->_a_stacksize = __default_stacksize; + a->_a_guardsize = __default_guardsize; + __release_ptc(); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setdetachstate.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setdetachstate.c new file mode 100644 index 000000000..1b7127839 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setdetachstate.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_attr_setdetachstate(pthread_attr_t *a, int state) +{ + if (state > 1U) return EINVAL; + a->_a_detach = state; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setguardsize.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setguardsize.c new file mode 100644 index 000000000..1c5c60acb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setguardsize.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_attr_setguardsize(pthread_attr_t *a, size_t size) +{ + if (size > SIZE_MAX/8) return EINVAL; + a->_a_guardsize = size; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setinheritsched.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setinheritsched.c new file mode 100644 index 000000000..ca264be7c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setinheritsched.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" +#include "syscall.h" + +int pthread_attr_setinheritsched(pthread_attr_t *a, int inherit) +{ + if (inherit > 1U) return EINVAL; + a->_a_sched = inherit; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedparam.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedparam.c new file mode 100644 index 000000000..d4c1204fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedparam.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_attr_setschedparam(pthread_attr_t *restrict a, const struct sched_param *restrict param) +{ + a->_a_prio = param->sched_priority; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedpolicy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedpolicy.c new file mode 100644 index 000000000..bb71f393e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setschedpolicy.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_attr_setschedpolicy(pthread_attr_t *a, int policy) +{ + a->_a_policy = policy; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setscope.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setscope.c new file mode 100644 index 000000000..46b520c04 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setscope.c @@ -0,0 +1,13 @@ +#include "pthread_impl.h" + +int pthread_attr_setscope(pthread_attr_t *a, int scope) +{ + switch (scope) { + case PTHREAD_SCOPE_SYSTEM: + return 0; + case PTHREAD_SCOPE_PROCESS: + return ENOTSUP; + default: + return EINVAL; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstack.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstack.c new file mode 100644 index 000000000..1eddcbd6e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstack.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int pthread_attr_setstack(pthread_attr_t *a, void *addr, size_t size) +{ + if (size-PTHREAD_STACK_MIN > SIZE_MAX/4) return EINVAL; + a->_a_stackaddr = (size_t)addr + size; + a->_a_stacksize = size; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstacksize.c b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstacksize.c new file mode 100644 index 000000000..9c6a8806e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_attr_setstacksize.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int pthread_attr_setstacksize(pthread_attr_t *a, size_t size) +{ + if (size-PTHREAD_STACK_MIN > SIZE_MAX/4) return EINVAL; + a->_a_stackaddr = 0; + a->_a_stacksize = size; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_destroy.c new file mode 100644 index 000000000..4ce0b2e12 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_destroy.c @@ -0,0 +1,15 @@ +#include "pthread_impl.h" + +int pthread_barrier_destroy(pthread_barrier_t *b) +{ + if (b->_b_limit < 0) { + if (b->_b_lock) { + int v; + a_or(&b->_b_lock, INT_MIN); + while ((v = b->_b_lock) & INT_MAX) + __wait(&b->_b_lock, 0, v, 0); + } + __vm_wait(); + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_init.c new file mode 100644 index 000000000..4c3cb28d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_init.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_barrier_init(pthread_barrier_t *restrict b, const pthread_barrierattr_t *restrict a, unsigned count) +{ + if (count-1 > INT_MAX-1) return EINVAL; + *b = (pthread_barrier_t){ ._b_limit = count-1 | (a?a->__attr:0) }; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_wait.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_wait.c new file mode 100644 index 000000000..cc2a8bbf5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrier_wait.c @@ -0,0 +1,111 @@ +#include "pthread_impl.h" + +static int pshared_barrier_wait(pthread_barrier_t *b) +{ + int limit = (b->_b_limit & INT_MAX) + 1; + int ret = 0; + int v, w; + + if (limit==1) return PTHREAD_BARRIER_SERIAL_THREAD; + + while ((v=a_cas(&b->_b_lock, 0, limit))) + __wait(&b->_b_lock, &b->_b_waiters, v, 0); + + /* Wait for threads to get to the barrier */ + if (++b->_b_count == limit) { + a_store(&b->_b_count, 0); + ret = PTHREAD_BARRIER_SERIAL_THREAD; + if (b->_b_waiters2) __wake(&b->_b_count, -1, 0); + } else { + a_store(&b->_b_lock, 0); + if (b->_b_waiters) __wake(&b->_b_lock, 1, 0); + while ((v=b->_b_count)>0) + __wait(&b->_b_count, &b->_b_waiters2, v, 0); + } + + __vm_lock(); + + /* Ensure all threads have a vm lock before proceeding */ + if (a_fetch_add(&b->_b_count, -1)==1-limit) { + a_store(&b->_b_count, 0); + if (b->_b_waiters2) __wake(&b->_b_count, -1, 0); + } else { + while ((v=b->_b_count)) + __wait(&b->_b_count, &b->_b_waiters2, v, 0); + } + + /* Perform a recursive unlock suitable for self-sync'd destruction */ + do { + v = b->_b_lock; + w = b->_b_waiters; + } while (a_cas(&b->_b_lock, v, v==INT_MIN+1 ? 0 : v-1) != v); + + /* Wake a thread waiting to reuse or destroy the barrier */ + if (v==INT_MIN+1 || (v==1 && w)) + __wake(&b->_b_lock, 1, 0); + + __vm_unlock(); + + return ret; +} + +struct instance +{ + volatile int count; + volatile int last; + volatile int waiters; + volatile int finished; +}; + +int pthread_barrier_wait(pthread_barrier_t *b) +{ + int limit = b->_b_limit; + struct instance *inst; + + /* Trivial case: count was set at 1 */ + if (!limit) return PTHREAD_BARRIER_SERIAL_THREAD; + + /* Process-shared barriers require a separate, inefficient wait */ + if (limit < 0) return pshared_barrier_wait(b); + + /* Otherwise we need a lock on the barrier object */ + while (a_swap(&b->_b_lock, 1)) + __wait(&b->_b_lock, &b->_b_waiters, 1, 1); + inst = b->_b_inst; + + /* First thread to enter the barrier becomes the "instance owner" */ + if (!inst) { + struct instance new_inst = { 0 }; + int spins = 200; + b->_b_inst = inst = &new_inst; + a_store(&b->_b_lock, 0); + if (b->_b_waiters) __wake(&b->_b_lock, 1, 1); + while (spins-- && !inst->finished) + a_spin(); + a_inc(&inst->finished); + while (inst->finished == 1) + __syscall(SYS_futex,&inst->finished,FUTEX_WAIT|FUTEX_PRIVATE,1,0) != -ENOSYS + || __syscall(SYS_futex,&inst->finished,FUTEX_WAIT,1,0); + return PTHREAD_BARRIER_SERIAL_THREAD; + } + + /* Last thread to enter the barrier wakes all non-instance-owners */ + if (++inst->count == limit) { + b->_b_inst = 0; + a_store(&b->_b_lock, 0); + if (b->_b_waiters) __wake(&b->_b_lock, 1, 1); + a_store(&inst->last, 1); + if (inst->waiters) + __wake(&inst->last, -1, 1); + } else { + a_store(&b->_b_lock, 0); + if (b->_b_waiters) __wake(&b->_b_lock, 1, 1); + __wait(&inst->last, &inst->waiters, 0, 1); + } + + /* Last thread to exit the barrier wakes the instance owner */ + if (a_fetch_add(&inst->count,-1)==1 && a_fetch_add(&inst->finished,1)) + __wake(&inst->finished, 1, 1); + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_destroy.c new file mode 100644 index 000000000..adec738fd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_barrierattr_destroy(pthread_barrierattr_t *a) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_init.c new file mode 100644 index 000000000..fa742bb73 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_init.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_barrierattr_init(pthread_barrierattr_t *a) +{ + *a = (pthread_barrierattr_t){0}; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_setpshared.c b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_setpshared.c new file mode 100644 index 000000000..c2d2929dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_barrierattr_setpshared.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_barrierattr_setpshared(pthread_barrierattr_t *a, int pshared) +{ + if (pshared > 1U) return EINVAL; + a->__attr = pshared ? INT_MIN : 0; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cancel.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cancel.c new file mode 100644 index 000000000..2f9d5e975 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cancel.c @@ -0,0 +1,101 @@ +#define _GNU_SOURCE +#include +#include "pthread_impl.h" +#include "syscall.h" + +hidden long __cancel(), __syscall_cp_asm(), __syscall_cp_c(); + +long __cancel() +{ + pthread_t self = __pthread_self(); + if (self->canceldisable == PTHREAD_CANCEL_ENABLE || self->cancelasync) + pthread_exit(PTHREAD_CANCELED); + self->canceldisable = PTHREAD_CANCEL_DISABLE; + return -ECANCELED; +} + +long __syscall_cp_asm(volatile void *, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t); + +long __syscall_cp_c(syscall_arg_t nr, + syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, + syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) +{ + pthread_t self; + long r; + int st; + + if ((st=(self=__pthread_self())->canceldisable) + && (st==PTHREAD_CANCEL_DISABLE || nr==SYS_close)) + return __syscall(nr, u, v, w, x, y, z); + + r = __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z); + if (r==-EINTR && nr!=SYS_close && self->cancel && + self->canceldisable != PTHREAD_CANCEL_DISABLE) + r = __cancel(); + return r; +} + +static void _sigaddset(sigset_t *set, int sig) +{ + unsigned s = sig-1; + set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1); +} + +extern hidden const char __cp_begin[1], __cp_end[1], __cp_cancel[1]; + +static void cancel_handler(int sig, siginfo_t *si, void *ctx) +{ + pthread_t self = __pthread_self(); + ucontext_t *uc = ctx; + uintptr_t pc = uc->uc_mcontext.MC_PC; + + a_barrier(); + if (!self->cancel || self->canceldisable == PTHREAD_CANCEL_DISABLE) return; + + _sigaddset(&uc->uc_sigmask, SIGCANCEL); + + if (self->cancelasync || pc >= (uintptr_t)__cp_begin && pc < (uintptr_t)__cp_end) { + uc->uc_mcontext.MC_PC = (uintptr_t)__cp_cancel; +#ifdef CANCEL_GOT + uc->uc_mcontext.MC_GOT = CANCEL_GOT; +#endif + return; + } + + __syscall(SYS_tkill, self->tid, SIGCANCEL); +} + +void __testcancel() +{ + pthread_t self = __pthread_self(); + if (self->cancel && !self->canceldisable) + __cancel(); +} + +static void init_cancellation() +{ + struct sigaction sa = { + .sa_flags = SA_SIGINFO | SA_RESTART, + .sa_sigaction = cancel_handler + }; + memset(&sa.sa_mask, -1, _NSIG/8); + __libc_sigaction(SIGCANCEL, &sa, 0); +} + +int pthread_cancel(pthread_t t) +{ + static int init; + if (!init) { + init_cancellation(); + init = 1; + } + a_store(&t->cancel, 1); + if (t == pthread_self()) { + if (t->canceldisable == PTHREAD_CANCEL_ENABLE && t->cancelasync) + pthread_exit(PTHREAD_CANCELED); + return 0; + } + return pthread_kill(t, SIGCANCEL); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cleanup_push.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cleanup_push.c new file mode 100644 index 000000000..9b21764b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cleanup_push.c @@ -0,0 +1,20 @@ +#include "pthread_impl.h" + +static void dummy(struct __ptcb *cb) +{ +} +weak_alias(dummy, __do_cleanup_push); +weak_alias(dummy, __do_cleanup_pop); + +void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x) +{ + cb->__f = f; + cb->__x = x; + __do_cleanup_push(cb); +} + +void _pthread_cleanup_pop(struct __ptcb *cb, int run) +{ + __do_cleanup_pop(cb); + if (run) cb->__f(cb->__x); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_broadcast.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_broadcast.c new file mode 100644 index 000000000..6bfab78f9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_broadcast.c @@ -0,0 +1,10 @@ +#include "pthread_impl.h" + +int pthread_cond_broadcast(pthread_cond_t *c) +{ + if (!c->_c_shared) return __private_cond_signal(c, -1); + if (!c->_c_waiters) return 0; + a_inc(&c->_c_seq); + __wake(&c->_c_seq, -1, 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_destroy.c new file mode 100644 index 000000000..8c5551600 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_destroy.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" + +int pthread_cond_destroy(pthread_cond_t *c) +{ + if (c->_c_shared && c->_c_waiters) { + int cnt; + a_or(&c->_c_waiters, 0x80000000); + a_inc(&c->_c_seq); + __wake(&c->_c_seq, -1, 0); + while ((cnt = c->_c_waiters) & 0x7fffffff) + __wait(&c->_c_waiters, 0, cnt, 0); + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_init.c new file mode 100644 index 000000000..8c484ddcd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_init.c @@ -0,0 +1,11 @@ +#include "pthread_impl.h" + +int pthread_cond_init(pthread_cond_t *restrict c, const pthread_condattr_t *restrict a) +{ + *c = (pthread_cond_t){0}; + if (a) { + c->_c_clock = a->__attr & 0x7fffffff; + if (a->__attr>>31) c->_c_shared = (void *)-1; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_signal.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_signal.c new file mode 100644 index 000000000..575ad54bc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_signal.c @@ -0,0 +1,10 @@ +#include "pthread_impl.h" + +int pthread_cond_signal(pthread_cond_t *c) +{ + if (!c->_c_shared) return __private_cond_signal(c, 1); + if (!c->_c_waiters) return 0; + a_inc(&c->_c_seq); + __wake(&c->_c_seq, 1, 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_timedwait.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_timedwait.c new file mode 100644 index 000000000..d15012406 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_timedwait.c @@ -0,0 +1,209 @@ +#include "pthread_impl.h" + +/* + * struct waiter + * + * Waiter objects have automatic storage on the waiting thread, and + * are used in building a linked list representing waiters currently + * waiting on the condition variable or a group of waiters woken + * together by a broadcast or signal; in the case of signal, this is a + * degenerate list of one member. + * + * Waiter lists attached to the condition variable itself are + * protected by the lock on the cv. Detached waiter lists are never + * modified again, but can only be traversed in reverse order, and are + * protected by the "barrier" locks in each node, which are unlocked + * in turn to control wake order. + * + * Since process-shared cond var semantics do not necessarily allow + * one thread to see another's automatic storage (they may be in + * different processes), the waiter list is not used for the + * process-shared case, but the structure is still used to store data + * needed by the cancellation cleanup handler. + */ + +struct waiter { + struct waiter *prev, *next; + volatile int state, barrier; + volatile int *notify; +}; + +/* Self-synchronized-destruction-safe lock functions */ + +static inline void lock(volatile int *l) +{ + if (a_cas(l, 0, 1)) { + a_cas(l, 1, 2); + do __wait(l, 0, 2, 1); + while (a_cas(l, 0, 2)); + } +} + +static inline void unlock(volatile int *l) +{ + if (a_swap(l, 0)==2) + __wake(l, 1, 1); +} + +static inline void unlock_requeue(volatile int *l, volatile int *r, int w) +{ + a_store(l, 0); + if (w) __wake(l, 1, 1); + else __syscall(SYS_futex, l, FUTEX_REQUEUE|FUTEX_PRIVATE, 0, 1, r) != -ENOSYS + || __syscall(SYS_futex, l, FUTEX_REQUEUE, 0, 1, r); +} + +enum { + WAITING, + SIGNALED, + LEAVING, +}; + +int __pthread_cond_timedwait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m, const struct timespec *restrict ts) +{ + struct waiter node = { 0 }; + int e, seq, clock = c->_c_clock, cs, shared=0, oldstate, tmp; + volatile int *fut; + + if ((m->_m_type&15) && (m->_m_lock&INT_MAX) != __pthread_self()->tid) + return EPERM; + + if (ts && ts->tv_nsec >= 1000000000UL) + return EINVAL; + + __pthread_testcancel(); + + if (c->_c_shared) { + shared = 1; + fut = &c->_c_seq; + seq = c->_c_seq; + a_inc(&c->_c_waiters); + } else { + lock(&c->_c_lock); + + seq = node.barrier = 2; + fut = &node.barrier; + node.state = WAITING; + node.next = c->_c_head; + c->_c_head = &node; + if (!c->_c_tail) c->_c_tail = &node; + else node.next->prev = &node; + + unlock(&c->_c_lock); + } + + __pthread_mutex_unlock(m); + + __pthread_setcancelstate(PTHREAD_CANCEL_MASKED, &cs); + if (cs == PTHREAD_CANCEL_DISABLE) __pthread_setcancelstate(cs, 0); + + do e = __timedwait_cp(fut, seq, clock, ts, !shared); + while (*fut==seq && (!e || e==EINTR)); + if (e == EINTR) e = 0; + + if (shared) { + /* Suppress cancellation if a signal was potentially + * consumed; this is a legitimate form of spurious + * wake even if not. */ + if (e == ECANCELED && c->_c_seq != seq) e = 0; + if (a_fetch_add(&c->_c_waiters, -1) == -0x7fffffff) + __wake(&c->_c_waiters, 1, 0); + oldstate = WAITING; + goto relock; + } + + oldstate = a_cas(&node.state, WAITING, LEAVING); + + if (oldstate == WAITING) { + /* Access to cv object is valid because this waiter was not + * yet signaled and a new signal/broadcast cannot return + * after seeing a LEAVING waiter without getting notified + * via the futex notify below. */ + + lock(&c->_c_lock); + + if (c->_c_head == &node) c->_c_head = node.next; + else if (node.prev) node.prev->next = node.next; + if (c->_c_tail == &node) c->_c_tail = node.prev; + else if (node.next) node.next->prev = node.prev; + + unlock(&c->_c_lock); + + if (node.notify) { + if (a_fetch_add(node.notify, -1)==1) + __wake(node.notify, 1, 1); + } + } else { + /* Lock barrier first to control wake order. */ + lock(&node.barrier); + } + +relock: + /* Errors locking the mutex override any existing error or + * cancellation, since the caller must see them to know the + * state of the mutex. */ + if ((tmp = pthread_mutex_lock(m))) e = tmp; + + if (oldstate == WAITING) goto done; + + if (!node.next) a_inc(&m->_m_waiters); + + /* Unlock the barrier that's holding back the next waiter, and + * either wake it or requeue it to the mutex. */ + if (node.prev) + unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & 128); + else + a_dec(&m->_m_waiters); + + /* Since a signal was consumed, cancellation is not permitted. */ + if (e == ECANCELED) e = 0; + +done: + __pthread_setcancelstate(cs, 0); + + if (e == ECANCELED) { + __pthread_testcancel(); + __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0); + } + + return e; +} + +int __private_cond_signal(pthread_cond_t *c, int n) +{ + struct waiter *p, *first=0; + volatile int ref = 0; + int cur; + + lock(&c->_c_lock); + for (p=c->_c_tail; n && p; p=p->prev) { + if (a_cas(&p->state, WAITING, SIGNALED) != WAITING) { + ref++; + p->notify = &ref; + } else { + n--; + if (!first) first=p; + } + } + /* Split the list, leaving any remainder on the cv. */ + if (p) { + if (p->next) p->next->prev = 0; + p->next = 0; + } else { + c->_c_head = 0; + } + c->_c_tail = p; + unlock(&c->_c_lock); + + /* Wait for any waiters in the LEAVING state to remove + * themselves from the list before returning or allowing + * signaled threads to proceed. */ + while ((cur = ref)) __wait(&ref, 0, cur, 1); + + /* Allow first signaled waiter, if any, to proceed. */ + if (first) unlock(&first->barrier); + + return 0; +} + +weak_alias(__pthread_cond_timedwait, pthread_cond_timedwait); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_cond_wait.c b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_wait.c new file mode 100644 index 000000000..8735bf147 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_cond_wait.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_cond_wait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m) +{ + return pthread_cond_timedwait(c, m, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_destroy.c new file mode 100644 index 000000000..c54ec4122 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_condattr_destroy(pthread_condattr_t *a) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_init.c new file mode 100644 index 000000000..a41741b4e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_init.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_condattr_init(pthread_condattr_t *a) +{ + *a = (pthread_condattr_t){0}; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setclock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setclock.c new file mode 100644 index 000000000..711259413 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setclock.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int pthread_condattr_setclock(pthread_condattr_t *a, clockid_t clk) +{ + if (clk < 0 || clk-2U < 2) return EINVAL; + a->__attr &= 0x80000000; + a->__attr |= clk; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setpshared.c b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setpshared.c new file mode 100644 index 000000000..51453e048 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_condattr_setpshared.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int pthread_condattr_setpshared(pthread_condattr_t *a, int pshared) +{ + if (pshared > 1U) return EINVAL; + a->__attr &= 0x7fffffff; + a->__attr |= (unsigned)pshared<<31; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_create.c b/vendor/modernc.org/libc/musl/src/thread/pthread_create.c new file mode 100644 index 000000000..10f1b7d8c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_create.c @@ -0,0 +1,386 @@ +#define _GNU_SOURCE +#include "pthread_impl.h" +#include "stdio_impl.h" +#include "libc.h" +#include "lock.h" +#include +#include +#include + +static void dummy_0() +{ +} +weak_alias(dummy_0, __acquire_ptc); +weak_alias(dummy_0, __release_ptc); +weak_alias(dummy_0, __pthread_tsd_run_dtors); +weak_alias(dummy_0, __do_orphaned_stdio_locks); +weak_alias(dummy_0, __dl_thread_cleanup); +weak_alias(dummy_0, __membarrier_init); + +static int tl_lock_count; +static int tl_lock_waiters; + +void __tl_lock(void) +{ + int tid = __pthread_self()->tid; + int val = __thread_list_lock; + if (val == tid) { + tl_lock_count++; + return; + } + while ((val = a_cas(&__thread_list_lock, 0, tid))) + __wait(&__thread_list_lock, &tl_lock_waiters, val, 0); +} + +void __tl_unlock(void) +{ + if (tl_lock_count) { + tl_lock_count--; + return; + } + a_store(&__thread_list_lock, 0); + if (tl_lock_waiters) __wake(&__thread_list_lock, 1, 0); +} + +void __tl_sync(pthread_t td) +{ + a_barrier(); + int val = __thread_list_lock; + if (!val) return; + __wait(&__thread_list_lock, &tl_lock_waiters, val, 0); + if (tl_lock_waiters) __wake(&__thread_list_lock, 1, 0); +} + +_Noreturn void __pthread_exit(void *result) +{ + pthread_t self = __pthread_self(); + sigset_t set; + + self->canceldisable = 1; + self->cancelasync = 0; + self->result = result; + + while (self->cancelbuf) { + void (*f)(void *) = self->cancelbuf->__f; + void *x = self->cancelbuf->__x; + self->cancelbuf = self->cancelbuf->__next; + f(x); + } + + __pthread_tsd_run_dtors(); + + /* Access to target the exiting thread with syscalls that use + * its kernel tid is controlled by killlock. For detached threads, + * any use past this point would have undefined behavior, but for + * joinable threads it's a valid usage that must be handled. + * Signals must be blocked since pthread_kill must be AS-safe. */ + __block_app_sigs(&set); + LOCK(self->killlock); + + /* The thread list lock must be AS-safe, and thus depends on + * application signals being blocked above. */ + __tl_lock(); + + /* If this is the only thread in the list, don't proceed with + * termination of the thread, but restore the previous lock and + * signal state to prepare for exit to call atexit handlers. */ + if (self->next == self) { + __tl_unlock(); + UNLOCK(self->killlock); + __restore_sigs(&set); + exit(0); + } + + /* At this point we are committed to thread termination. */ + + /* Process robust list in userspace to handle non-pshared mutexes + * and the detached thread case where the robust list head will + * be invalid when the kernel would process it. */ + __vm_lock(); + volatile void *volatile *rp; + while ((rp=self->robust_list.head) && rp != &self->robust_list.head) { + pthread_mutex_t *m = (void *)((char *)rp + - offsetof(pthread_mutex_t, _m_next)); + int waiters = m->_m_waiters; + int priv = (m->_m_type & 128) ^ 128; + self->robust_list.pending = rp; + self->robust_list.head = *rp; + int cont = a_swap(&m->_m_lock, 0x40000000); + self->robust_list.pending = 0; + if (cont < 0 || waiters) + __wake(&m->_m_lock, 1, priv); + } + __vm_unlock(); + + __do_orphaned_stdio_locks(); + __dl_thread_cleanup(); + + /* Last, unlink thread from the list. This change will not be visible + * until the lock is released, which only happens after SYS_exit + * has been called, via the exit futex address pointing at the lock. + * This needs to happen after any possible calls to LOCK() that might + * skip locking if process appears single-threaded. */ + if (!--libc.threads_minus_1) libc.need_locks = -1; + self->next->prev = self->prev; + self->prev->next = self->next; + self->prev = self->next = self; + + /* This atomic potentially competes with a concurrent pthread_detach + * call; the loser is responsible for freeing thread resources. */ + int state = a_cas(&self->detach_state, DT_JOINABLE, DT_EXITING); + + if (state==DT_DETACHED && self->map_base) { + /* Detached threads must block even implementation-internal + * signals, since they will not have a stack in their last + * moments of existence. */ + __block_all_sigs(&set); + + /* Robust list will no longer be valid, and was already + * processed above, so unregister it with the kernel. */ + if (self->robust_list.off) + __syscall(SYS_set_robust_list, 0, 3*sizeof(long)); + + /* Since __unmapself bypasses the normal munmap code path, + * explicitly wait for vmlock holders first. */ + __vm_wait(); + + /* The following call unmaps the thread's stack mapping + * and then exits without touching the stack. */ + __unmapself(self->map_base, self->map_size); + } + + /* Wake any joiner. */ + __wake(&self->detach_state, 1, 1); + + /* After the kernel thread exits, its tid may be reused. Clear it + * to prevent inadvertent use and inform functions that would use + * it that it's no longer available. */ + self->tid = 0; + UNLOCK(self->killlock); + + for (;;) __syscall(SYS_exit, 0); +} + +void __do_cleanup_push(struct __ptcb *cb) +{ + struct pthread *self = __pthread_self(); + cb->__next = self->cancelbuf; + self->cancelbuf = cb; +} + +void __do_cleanup_pop(struct __ptcb *cb) +{ + __pthread_self()->cancelbuf = cb->__next; +} + +struct start_args { + void *(*start_func)(void *); + void *start_arg; + volatile int control; + unsigned long sig_mask[_NSIG/8/sizeof(long)]; +}; + +static int start(void *p) +{ + struct start_args *args = p; + int state = args->control; + if (state) { + if (a_cas(&args->control, 1, 2)==1) + __wait(&args->control, 0, 2, 1); + if (args->control) { + __syscall(SYS_set_tid_address, &args->control); + for (;;) __syscall(SYS_exit, 0); + } + } + __syscall(SYS_rt_sigprocmask, SIG_SETMASK, &args->sig_mask, 0, _NSIG/8); + __pthread_exit(args->start_func(args->start_arg)); + return 0; +} + +static int start_c11(void *p) +{ + struct start_args *args = p; + int (*start)(void*) = (int(*)(void*)) args->start_func; + __pthread_exit((void *)(uintptr_t)start(args->start_arg)); + return 0; +} + +#define ROUND(x) (((x)+PAGE_SIZE-1)&-PAGE_SIZE) + +/* pthread_key_create.c overrides this */ +static volatile size_t dummy = 0; +weak_alias(dummy, __pthread_tsd_size); +static void *dummy_tsd[1] = { 0 }; +weak_alias(dummy_tsd, __pthread_tsd_main); + +static FILE *volatile dummy_file = 0; +weak_alias(dummy_file, __stdin_used); +weak_alias(dummy_file, __stdout_used); +weak_alias(dummy_file, __stderr_used); + +static void init_file_lock(FILE *f) +{ + if (f && f->lock<0) f->lock = 0; +} + +int __pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict attrp, void *(*entry)(void *), void *restrict arg) +{ + int ret, c11 = (attrp == __ATTRP_C11_THREAD); + size_t size, guard; + struct pthread *self, *new; + unsigned char *map = 0, *stack = 0, *tsd = 0, *stack_limit; + unsigned flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND + | CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS + | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED; + pthread_attr_t attr = { 0 }; + sigset_t set; + + if (!libc.can_do_threads) return ENOSYS; + self = __pthread_self(); + if (!libc.threaded) { + for (FILE *f=*__ofl_lock(); f; f=f->next) + init_file_lock(f); + __ofl_unlock(); + init_file_lock(__stdin_used); + init_file_lock(__stdout_used); + init_file_lock(__stderr_used); + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, _NSIG/8); + self->tsd = (void **)__pthread_tsd_main; + __membarrier_init(); + libc.threaded = 1; + } + if (attrp && !c11) attr = *attrp; + + __acquire_ptc(); + if (!attrp || c11) { + attr._a_stacksize = __default_stacksize; + attr._a_guardsize = __default_guardsize; + } + + if (attr._a_stackaddr) { + size_t need = libc.tls_size + __pthread_tsd_size; + size = attr._a_stacksize; + stack = (void *)(attr._a_stackaddr & -16); + stack_limit = (void *)(attr._a_stackaddr - size); + /* Use application-provided stack for TLS only when + * it does not take more than ~12% or 2k of the + * application's stack space. */ + if (need < size/8 && need < 2048) { + tsd = stack - __pthread_tsd_size; + stack = tsd - libc.tls_size; + memset(stack, 0, need); + } else { + size = ROUND(need); + } + guard = 0; + } else { + guard = ROUND(attr._a_guardsize); + size = guard + ROUND(attr._a_stacksize + + libc.tls_size + __pthread_tsd_size); + } + + if (!tsd) { + if (guard) { + map = __mmap(0, size, PROT_NONE, MAP_PRIVATE|MAP_ANON, -1, 0); + if (map == MAP_FAILED) goto fail; + if (__mprotect(map+guard, size-guard, PROT_READ|PROT_WRITE) + && errno != ENOSYS) { + __munmap(map, size); + goto fail; + } + } else { + map = __mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0); + if (map == MAP_FAILED) goto fail; + } + tsd = map + size - __pthread_tsd_size; + if (!stack) { + stack = tsd - libc.tls_size; + stack_limit = map + guard; + } + } + + new = __copy_tls(tsd - libc.tls_size); + new->map_base = map; + new->map_size = size; + new->stack = stack; + new->stack_size = stack - stack_limit; + new->guard_size = guard; + new->self = new; + new->tsd = (void *)tsd; + new->locale = &libc.global_locale; + if (attr._a_detach) { + new->detach_state = DT_DETACHED; + } else { + new->detach_state = DT_JOINABLE; + } + new->robust_list.head = &new->robust_list.head; + new->CANARY = self->CANARY; + new->sysinfo = self->sysinfo; + + /* Setup argument structure for the new thread on its stack. + * It's safe to access from the caller only until the thread + * list is unlocked. */ + stack -= (uintptr_t)stack % sizeof(uintptr_t); + stack -= sizeof(struct start_args); + struct start_args *args = (void *)stack; + args->start_func = entry; + args->start_arg = arg; + args->control = attr._a_sched ? 1 : 0; + + /* Application signals (but not the synccall signal) must be + * blocked before the thread list lock can be taken, to ensure + * that the lock is AS-safe. */ + __block_app_sigs(&set); + + /* Ensure SIGCANCEL is unblocked in new thread. This requires + * working with a copy of the set so we can restore the + * original mask in the calling thread. */ + memcpy(&args->sig_mask, &set, sizeof args->sig_mask); + args->sig_mask[(SIGCANCEL-1)/8/sizeof(long)] &= + ~(1UL<<((SIGCANCEL-1)%(8*sizeof(long)))); + + __tl_lock(); + if (!libc.threads_minus_1++) libc.need_locks = 1; + ret = __clone((c11 ? start_c11 : start), stack, flags, args, &new->tid, TP_ADJ(new), &__thread_list_lock); + + /* All clone failures translate to EAGAIN. If explicit scheduling + * was requested, attempt it before unlocking the thread list so + * that the failed thread is never exposed and so that we can + * clean up all transient resource usage before returning. */ + if (ret < 0) { + ret = -EAGAIN; + } else if (attr._a_sched) { + ret = __syscall(SYS_sched_setscheduler, + new->tid, attr._a_policy, &attr._a_prio); + if (a_swap(&args->control, ret ? 3 : 0)==2) + __wake(&args->control, 1, 1); + if (ret) + __wait(&args->control, 0, 3, 0); + } + + if (ret >= 0) { + new->next = self->next; + new->prev = self; + new->next->prev = new; + new->prev->next = new; + } else { + if (!--libc.threads_minus_1) libc.need_locks = 0; + } + __tl_unlock(); + __restore_sigs(&set); + __release_ptc(); + + if (ret < 0) { + if (map) __munmap(map, size); + return -ret; + } + + *res = new; + return 0; +fail: + __release_ptc(); + return EAGAIN; +} + +weak_alias(__pthread_exit, pthread_exit); +weak_alias(__pthread_create, pthread_create); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_detach.c b/vendor/modernc.org/libc/musl/src/thread/pthread_detach.c new file mode 100644 index 000000000..77772af2c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_detach.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" +#include + +static int __pthread_detach(pthread_t t) +{ + /* If the cas fails, detach state is either already-detached + * or exiting/exited, and pthread_join will trap or cleanup. */ + if (a_cas(&t->detach_state, DT_JOINABLE, DT_DETACHED) != DT_JOINABLE) + return __pthread_join(t, 0); + return 0; +} + +weak_alias(__pthread_detach, pthread_detach); +weak_alias(__pthread_detach, thrd_detach); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_equal.c b/vendor/modernc.org/libc/musl/src/thread/pthread_equal.c new file mode 100644 index 000000000..dbb736558 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_equal.c @@ -0,0 +1,10 @@ +#include +#include + +static int __pthread_equal(pthread_t a, pthread_t b) +{ + return a==b; +} + +weak_alias(__pthread_equal, pthread_equal); +weak_alias(__pthread_equal, thrd_equal); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_getattr_np.c b/vendor/modernc.org/libc/musl/src/thread/pthread_getattr_np.c new file mode 100644 index 000000000..2881831f8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_getattr_np.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE +#include "pthread_impl.h" +#include "libc.h" +#include + +int pthread_getattr_np(pthread_t t, pthread_attr_t *a) +{ + *a = (pthread_attr_t){0}; + a->_a_detach = t->detach_state>=DT_DETACHED; + a->_a_guardsize = t->guard_size; + if (t->stack) { + a->_a_stackaddr = (uintptr_t)t->stack; + a->_a_stacksize = t->stack_size; + } else { + char *p = (void *)libc.auxv; + size_t l = PAGE_SIZE; + p += -(uintptr_t)p & PAGE_SIZE-1; + a->_a_stackaddr = (uintptr_t)p; + while (mremap(p-l-PAGE_SIZE, PAGE_SIZE, 2*PAGE_SIZE, 0)==MAP_FAILED && errno==ENOMEM) + l += PAGE_SIZE; + a->_a_stacksize = l; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_getconcurrency.c b/vendor/modernc.org/libc/musl/src/thread/pthread_getconcurrency.c new file mode 100644 index 000000000..269429a8a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_getconcurrency.c @@ -0,0 +1,6 @@ +#include + +int pthread_getconcurrency() +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_getcpuclockid.c b/vendor/modernc.org/libc/musl/src/thread/pthread_getcpuclockid.c new file mode 100644 index 000000000..9df14fb68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_getcpuclockid.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_getcpuclockid(pthread_t t, clockid_t *clockid) +{ + *clockid = (-t->tid-1)*8U + 6; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_getschedparam.c b/vendor/modernc.org/libc/musl/src/thread/pthread_getschedparam.c new file mode 100644 index 000000000..c098befb1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_getschedparam.c @@ -0,0 +1,21 @@ +#include "pthread_impl.h" +#include "lock.h" + +int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param) +{ + int r; + sigset_t set; + __block_app_sigs(&set); + LOCK(t->killlock); + if (!t->tid) { + r = ESRCH; + } else { + r = -__syscall(SYS_sched_getparam, t->tid, param); + if (!r) { + *policy = __syscall(SYS_sched_getscheduler, t->tid); + } + } + UNLOCK(t->killlock); + __restore_sigs(&set); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_getspecific.c b/vendor/modernc.org/libc/musl/src/thread/pthread_getspecific.c new file mode 100644 index 000000000..d9342a560 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_getspecific.c @@ -0,0 +1,11 @@ +#include "pthread_impl.h" +#include + +static void *__pthread_getspecific(pthread_key_t k) +{ + struct pthread *self = __pthread_self(); + return self->tsd[k]; +} + +weak_alias(__pthread_getspecific, pthread_getspecific); +weak_alias(__pthread_getspecific, tss_get); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_join.c b/vendor/modernc.org/libc/musl/src/thread/pthread_join.c new file mode 100644 index 000000000..17dae85d7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_join.c @@ -0,0 +1,40 @@ +#define _GNU_SOURCE +#include "pthread_impl.h" +#include + +static void dummy1(pthread_t t) +{ +} +weak_alias(dummy1, __tl_sync); + +static int __pthread_timedjoin_np(pthread_t t, void **res, const struct timespec *at) +{ + int state, cs, r = 0; + __pthread_testcancel(); + __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + if (cs == PTHREAD_CANCEL_ENABLE) __pthread_setcancelstate(cs, 0); + while ((state = t->detach_state) && r != ETIMEDOUT && r != EINVAL) { + if (state >= DT_DETACHED) a_crash(); + r = __timedwait_cp(&t->detach_state, state, CLOCK_REALTIME, at, 1); + } + __pthread_setcancelstate(cs, 0); + if (r == ETIMEDOUT || r == EINVAL) return r; + __tl_sync(t); + if (res) *res = t->result; + if (t->map_base) __munmap(t->map_base, t->map_size); + return 0; +} + +int __pthread_join(pthread_t t, void **res) +{ + return __pthread_timedjoin_np(t, res, 0); +} + +static int __pthread_tryjoin_np(pthread_t t, void **res) +{ + return t->detach_state==DT_JOINABLE ? EBUSY : __pthread_join(t, res); +} + +weak_alias(__pthread_tryjoin_np, pthread_tryjoin_np); +weak_alias(__pthread_timedjoin_np, pthread_timedjoin_np); +weak_alias(__pthread_join, pthread_join); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_key_create.c b/vendor/modernc.org/libc/musl/src/thread/pthread_key_create.c new file mode 100644 index 000000000..d11209412 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_key_create.c @@ -0,0 +1,91 @@ +#include "pthread_impl.h" + +volatile size_t __pthread_tsd_size = sizeof(void *) * PTHREAD_KEYS_MAX; +void *__pthread_tsd_main[PTHREAD_KEYS_MAX] = { 0 }; + +static void (*keys[PTHREAD_KEYS_MAX])(void *); + +static pthread_rwlock_t key_lock = PTHREAD_RWLOCK_INITIALIZER; + +static pthread_key_t next_key; + +static void nodtor(void *dummy) +{ +} + +static void dummy_0(void) +{ +} + +weak_alias(dummy_0, __tl_lock); +weak_alias(dummy_0, __tl_unlock); + +int __pthread_key_create(pthread_key_t *k, void (*dtor)(void *)) +{ + pthread_t self = __pthread_self(); + + /* This can only happen in the main thread before + * pthread_create has been called. */ + if (!self->tsd) self->tsd = __pthread_tsd_main; + + /* Purely a sentinel value since null means slot is free. */ + if (!dtor) dtor = nodtor; + + __pthread_rwlock_wrlock(&key_lock); + pthread_key_t j = next_key; + do { + if (!keys[j]) { + keys[next_key = *k = j] = dtor; + __pthread_rwlock_unlock(&key_lock); + return 0; + } + } while ((j=(j+1)%PTHREAD_KEYS_MAX) != next_key); + + __pthread_rwlock_unlock(&key_lock); + return EAGAIN; +} + +int __pthread_key_delete(pthread_key_t k) +{ + sigset_t set; + pthread_t self = __pthread_self(), td=self; + + __block_app_sigs(&set); + __pthread_rwlock_wrlock(&key_lock); + + __tl_lock(); + do td->tsd[k] = 0; + while ((td=td->next)!=self); + __tl_unlock(); + + keys[k] = 0; + + __pthread_rwlock_unlock(&key_lock); + __restore_sigs(&set); + + return 0; +} + +void __pthread_tsd_run_dtors() +{ + pthread_t self = __pthread_self(); + int i, j; + for (j=0; self->tsd_used && jtsd_used = 0; + for (i=0; itsd[i]; + void (*dtor)(void *) = keys[i]; + self->tsd[i] = 0; + if (val && dtor && dtor != nodtor) { + __pthread_rwlock_unlock(&key_lock); + dtor(val); + __pthread_rwlock_rdlock(&key_lock); + } + } + __pthread_rwlock_unlock(&key_lock); + } +} + +weak_alias(__pthread_key_create, pthread_key_create); +weak_alias(__pthread_key_delete, pthread_key_delete); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_kill.c b/vendor/modernc.org/libc/musl/src/thread/pthread_kill.c new file mode 100644 index 000000000..79ddb2097 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_kill.c @@ -0,0 +1,18 @@ +#include "pthread_impl.h" +#include "lock.h" + +int pthread_kill(pthread_t t, int sig) +{ + int r; + sigset_t set; + /* Block not just app signals, but internal ones too, since + * pthread_kill is used to implement pthread_cancel, which + * must be async-cancel-safe. */ + __block_all_sigs(&set); + LOCK(t->killlock); + r = t->tid ? -__syscall(SYS_tkill, t->tid, sig) + : (sig+0U >= _NSIG ? EINVAL : 0); + UNLOCK(t->killlock); + __restore_sigs(&set); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_consistent.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_consistent.c new file mode 100644 index 000000000..27c74e5b6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_consistent.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" +#include "atomic.h" + +int pthread_mutex_consistent(pthread_mutex_t *m) +{ + int old = m->_m_lock; + int own = old & 0x3fffffff; + if (!(m->_m_type & 4) || !own || !(old & 0x40000000)) + return EINVAL; + if (own != __pthread_self()->tid) + return EPERM; + a_and(&m->_m_lock, ~0x40000000); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_destroy.c new file mode 100644 index 000000000..6d49e6898 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_destroy.c @@ -0,0 +1,6 @@ +#include + +int pthread_mutex_destroy(pthread_mutex_t *mutex) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_getprioceiling.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_getprioceiling.c new file mode 100644 index 000000000..8c75a6612 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_getprioceiling.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_mutex_getprioceiling(const pthread_mutex_t *restrict m, int *restrict ceiling) +{ + return EINVAL; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_init.c new file mode 100644 index 000000000..acf45a746 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_init.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_mutex_init(pthread_mutex_t *restrict m, const pthread_mutexattr_t *restrict a) +{ + *m = (pthread_mutex_t){0}; + if (a) m->_m_type = a->__attr; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_lock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_lock.c new file mode 100644 index 000000000..6c919b3d4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_lock.c @@ -0,0 +1,17 @@ +#include "pthread_impl.h" + +int __ccgo_getMutexType(pthread_mutex_t *m) +{ + return m->_m_type&15; +} + +// int __pthread_mutex_lock(pthread_mutex_t *m) +// { +// if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL +// && !a_cas(&m->_m_lock, 0, EBUSY)) +// return 0; +// +// return __pthread_mutex_timedlock(m, 0); +// } +// +// weak_alias(__pthread_mutex_lock, pthread_mutex_lock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_setprioceiling.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_setprioceiling.c new file mode 100644 index 000000000..681f07c88 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_setprioceiling.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_mutex_setprioceiling(pthread_mutex_t *restrict m, int ceiling, int *restrict old) +{ + return EINVAL; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_timedlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_timedlock.c new file mode 100644 index 000000000..9279fc543 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_timedlock.c @@ -0,0 +1,92 @@ +#include "pthread_impl.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +static int __futex4(volatile void *addr, int op, int val, const struct timespec *to) +{ +#ifdef SYS_futex_time64 + time_t s = to ? to->tv_sec : 0; + long ns = to ? to->tv_nsec : 0; + int r = -ENOSYS; + if (SYS_futex == SYS_futex_time64 || !IS32BIT(s)) + r = __syscall(SYS_futex_time64, addr, op, val, + to ? ((long long[]){s, ns}) : 0); + if (SYS_futex == SYS_futex_time64 || r!=-ENOSYS) return r; + to = to ? (void *)(long[]){CLAMP(s), ns} : 0; +#endif + return __syscall(SYS_futex, addr, op, val, to); +} + +static int pthread_mutex_timedlock_pi(pthread_mutex_t *restrict m, const struct timespec *restrict at) +{ + int type = m->_m_type; + int priv = (type & 128) ^ 128; + pthread_t self = __pthread_self(); + int e; + + if (!priv) self->robust_list.pending = &m->_m_next; + + do e = -__futex4(&m->_m_lock, FUTEX_LOCK_PI|priv, 0, at); + while (e==EINTR); + if (e) self->robust_list.pending = 0; + + switch (e) { + case 0: + /* Catch spurious success for non-robust mutexes. */ + if (!(type&4) && ((m->_m_lock & 0x40000000) || m->_m_waiters)) { + a_store(&m->_m_waiters, -1); + __syscall(SYS_futex, &m->_m_lock, FUTEX_UNLOCK_PI|priv); + self->robust_list.pending = 0; + break; + } + /* Signal to trylock that we already have the lock. */ + m->_m_count = -1; + return __pthread_mutex_trylock(m); + case ETIMEDOUT: + return e; + case EDEADLK: + if ((type&3) == PTHREAD_MUTEX_ERRORCHECK) return e; + } + do e = __timedwait(&(int){0}, 0, CLOCK_REALTIME, at, 1); + while (e != ETIMEDOUT); + return e; +} + +int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec *restrict at) +{ + if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL + && !a_cas(&m->_m_lock, 0, EBUSY)) + return 0; + + int type = m->_m_type; + int r, t, priv = (type & 128) ^ 128; + + r = __pthread_mutex_trylock(m); + if (r != EBUSY) return r; + + if (type&8) return pthread_mutex_timedlock_pi(m, at); + + int spins = 100; + while (spins-- && m->_m_lock && !m->_m_waiters) a_spin(); + + while ((r=__pthread_mutex_trylock(m)) == EBUSY) { + r = m->_m_lock; + int own = r & 0x3fffffff; + if (!own && (!r || (type&4))) + continue; + if ((type&3) == PTHREAD_MUTEX_ERRORCHECK + && own == __pthread_self()->tid) + return EDEADLK; + + a_inc(&m->_m_waiters); + t = r | 0x80000000; + a_cas(&m->_m_lock, r, t); + r = __timedwait(&m->_m_lock, t, CLOCK_REALTIME, at, priv); + a_dec(&m->_m_waiters); + if (r && r != EINTR) break; + } + return r; +} + +weak_alias(__pthread_mutex_timedlock, pthread_mutex_timedlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_trylock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_trylock.c new file mode 100644 index 000000000..a24e7c58a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_trylock.c @@ -0,0 +1,74 @@ +#include "pthread_impl.h" + +int __pthread_mutex_trylock_owner(pthread_mutex_t *m) +{ + int old, own; + int type = m->_m_type; + pthread_t self = __pthread_self(); + int tid = self->tid; + + old = m->_m_lock; + own = old & 0x3fffffff; + if (own == tid) { + if ((type&8) && m->_m_count<0) { + old &= 0x40000000; + m->_m_count = 0; + goto success; + } + if ((type&3) == PTHREAD_MUTEX_RECURSIVE) { + if ((unsigned)m->_m_count >= INT_MAX) return EAGAIN; + m->_m_count++; + return 0; + } + } + if (own == 0x3fffffff) return ENOTRECOVERABLE; + if (own || (old && !(type & 4))) return EBUSY; + + if (type & 128) { + if (!self->robust_list.off) { + self->robust_list.off = (char*)&m->_m_lock-(char *)&m->_m_next; + __syscall(SYS_set_robust_list, &self->robust_list, 3*sizeof(long)); + } + if (m->_m_waiters) tid |= 0x80000000; + self->robust_list.pending = &m->_m_next; + } + tid |= old & 0x40000000; + + if (a_cas(&m->_m_lock, old, tid) != old) { + self->robust_list.pending = 0; + if ((type&12)==12 && m->_m_waiters) return ENOTRECOVERABLE; + return EBUSY; + } + +success: + if ((type&8) && m->_m_waiters) { + int priv = (type & 128) ^ 128; + __syscall(SYS_futex, &m->_m_lock, FUTEX_UNLOCK_PI|priv); + self->robust_list.pending = 0; + return (type&4) ? ENOTRECOVERABLE : EBUSY; + } + + volatile void *next = self->robust_list.head; + m->_m_next = next; + m->_m_prev = &self->robust_list.head; + if (next != &self->robust_list.head) *(volatile void *volatile *) + ((char *)next - sizeof(void *)) = &m->_m_next; + self->robust_list.head = &m->_m_next; + self->robust_list.pending = 0; + + if (old) { + m->_m_count = 0; + return EOWNERDEAD; + } + + return 0; +} + +int __pthread_mutex_trylock(pthread_mutex_t *m) +{ + if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL) + return a_cas(&m->_m_lock, 0, EBUSY) & EBUSY; + return __pthread_mutex_trylock_owner(m); +} + +weak_alias(__pthread_mutex_trylock, pthread_mutex_trylock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_unlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_unlock.c new file mode 100644 index 000000000..b66423e6c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutex_unlock.c @@ -0,0 +1,52 @@ +#include "pthread_impl.h" + +int __pthread_mutex_unlock(pthread_mutex_t *m) +{ + pthread_t self; + int waiters = m->_m_waiters; + int cont; + int type = m->_m_type & 15; + int priv = (m->_m_type & 128) ^ 128; + int new = 0; + int old; + + if (type != PTHREAD_MUTEX_NORMAL) { + self = __pthread_self(); + old = m->_m_lock; + int own = old & 0x3fffffff; + if (own != self->tid) + return EPERM; + if ((type&3) == PTHREAD_MUTEX_RECURSIVE && m->_m_count) + return m->_m_count--, 0; + if ((type&4) && (old&0x40000000)) + new = 0x7fffffff; + if (!priv) { + self->robust_list.pending = &m->_m_next; + __vm_lock(); + } + volatile void *prev = m->_m_prev; + volatile void *next = m->_m_next; + *(volatile void *volatile *)prev = next; + if (next != &self->robust_list.head) *(volatile void *volatile *) + ((char *)next - sizeof(void *)) = prev; + } + if (type&8) { + if (old<0 || a_cas(&m->_m_lock, old, new)!=old) { + if (new) a_store(&m->_m_waiters, -1); + __syscall(SYS_futex, &m->_m_lock, FUTEX_UNLOCK_PI|priv); + } + cont = 0; + waiters = 0; + } else { + cont = a_swap(&m->_m_lock, new); + } + if (type != PTHREAD_MUTEX_NORMAL && !priv) { + self->robust_list.pending = 0; + __vm_unlock(); + } + if (waiters || cont<0) + __wake(&m->_m_lock, 1, priv); + return 0; +} + +weak_alias(__pthread_mutex_unlock, pthread_mutex_unlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_destroy.c new file mode 100644 index 000000000..9fd697472 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_mutexattr_destroy(pthread_mutexattr_t *a) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_init.c new file mode 100644 index 000000000..0b72c1ba5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_init.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_mutexattr_init(pthread_mutexattr_t *a) +{ + *a = (pthread_mutexattr_t){0}; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setprotocol.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setprotocol.c new file mode 100644 index 000000000..511cc32d8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setprotocol.c @@ -0,0 +1,29 @@ +#include "pthread_impl.h" +#include "syscall.h" + +static pthread_once_t check_pi_once; +static int check_pi_result; + +static void check_pi() +{ + volatile int lk = 0; + check_pi_result = -__syscall(SYS_futex, &lk, FUTEX_LOCK_PI, 0, 0); +} + +int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int protocol) +{ + switch (protocol) { + case PTHREAD_PRIO_NONE: + a->__attr &= ~8; + return 0; + case PTHREAD_PRIO_INHERIT: + pthread_once(&check_pi_once, check_pi); + if (check_pi_result) return check_pi_result; + a->__attr |= 8; + return 0; + case PTHREAD_PRIO_PROTECT: + return ENOTSUP; + default: + return EINVAL; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setpshared.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setpshared.c new file mode 100644 index 000000000..100f6ff20 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setpshared.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int pthread_mutexattr_setpshared(pthread_mutexattr_t *a, int pshared) +{ + if (pshared > 1U) return EINVAL; + a->__attr &= ~128U; + a->__attr |= pshared<<7; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setrobust.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setrobust.c new file mode 100644 index 000000000..04db92a62 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_setrobust.c @@ -0,0 +1,25 @@ +#include "pthread_impl.h" +#include "syscall.h" + +static pthread_once_t check_robust_once; +static int check_robust_result; + +static void check_robust() +{ + void *p; + size_t l; + check_robust_result = -__syscall(SYS_get_robust_list, 0, &p, &l); +} + +int pthread_mutexattr_setrobust(pthread_mutexattr_t *a, int robust) +{ + if (robust > 1U) return EINVAL; + if (robust) { + pthread_once(&check_robust_once, check_robust); + if (check_robust_result) return check_robust_result; + a->__attr |= 4; + return 0; + } + a->__attr &= ~4; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_settype.c b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_settype.c new file mode 100644 index 000000000..cd7a80e34 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_mutexattr_settype.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_mutexattr_settype(pthread_mutexattr_t *a, int type) +{ + if ((unsigned)type > 2) return EINVAL; + a->__attr = (a->__attr & ~3) | type; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_once.c b/vendor/modernc.org/libc/musl/src/thread/pthread_once.c new file mode 100644 index 000000000..8e8d40ae8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_once.c @@ -0,0 +1,50 @@ +#include "pthread_impl.h" + +static void undo(void *control) +{ + /* Wake all waiters, since the waiter status is lost when + * resetting control to the initial state. */ + if (a_swap(control, 0) == 3) + __wake(control, -1, 1); +} + +hidden int __pthread_once_full(pthread_once_t *control, void (*init)(void)) +{ + /* Try to enter initializing state. Four possibilities: + * 0 - we're the first or the other cancelled; run init + * 1 - another thread is running init; wait + * 2 - another thread finished running init; just return + * 3 - another thread is running init, waiters present; wait */ + + for (;;) switch (a_cas(control, 0, 1)) { + case 0: + pthread_cleanup_push(undo, control); + init(); + pthread_cleanup_pop(0); + + if (a_swap(control, 2) == 3) + __wake(control, -1, 1); + return 0; + case 1: + /* If this fails, so will __wait. */ + a_cas(control, 1, 3); + case 3: + __wait(control, 0, 3, 1); + continue; + case 2: + return 0; + } +} + +int __pthread_once(pthread_once_t *control, void (*init)(void)) +{ + /* Return immediately if init finished before, but ensure that + * effects of the init routine are visible to the caller. */ + if (*(volatile int *)control == 2) { + a_barrier(); + return 0; + } + return __pthread_once_full(control, init); +} + +weak_alias(__pthread_once, pthread_once); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_destroy.c new file mode 100644 index 000000000..49ecfbd02 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_rwlock_destroy(pthread_rwlock_t *rw) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_init.c new file mode 100644 index 000000000..a2c0b478c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_init.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_rwlock_init(pthread_rwlock_t *restrict rw, const pthread_rwlockattr_t *restrict a) +{ + *rw = (pthread_rwlock_t){0}; + if (a) rw->_rw_shared = a->__attr[0]*128; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_rdlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_rdlock.c new file mode 100644 index 000000000..8546c07d2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_rdlock.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_rdlock(pthread_rwlock_t *rw) +{ + return __pthread_rwlock_timedrdlock(rw, 0); +} + +weak_alias(__pthread_rwlock_rdlock, pthread_rwlock_rdlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedrdlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedrdlock.c new file mode 100644 index 000000000..8cdd8ecf1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedrdlock.c @@ -0,0 +1,25 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at) +{ + int r, t; + + r = pthread_rwlock_tryrdlock(rw); + if (r != EBUSY) return r; + + int spins = 100; + while (spins-- && rw->_rw_lock && !rw->_rw_waiters) a_spin(); + + while ((r=__pthread_rwlock_tryrdlock(rw))==EBUSY) { + if (!(r=rw->_rw_lock) || (r&0x7fffffff)!=0x7fffffff) continue; + t = r | 0x80000000; + a_inc(&rw->_rw_waiters); + a_cas(&rw->_rw_lock, r, t); + r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared^128); + a_dec(&rw->_rw_waiters); + if (r && r != EINTR) return r; + } + return r; +} + +weak_alias(__pthread_rwlock_timedrdlock, pthread_rwlock_timedrdlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedwrlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedwrlock.c new file mode 100644 index 000000000..d77706e6b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_timedwrlock.c @@ -0,0 +1,25 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at) +{ + int r, t; + + r = pthread_rwlock_trywrlock(rw); + if (r != EBUSY) return r; + + int spins = 100; + while (spins-- && rw->_rw_lock && !rw->_rw_waiters) a_spin(); + + while ((r=__pthread_rwlock_trywrlock(rw))==EBUSY) { + if (!(r=rw->_rw_lock)) continue; + t = r | 0x80000000; + a_inc(&rw->_rw_waiters); + a_cas(&rw->_rw_lock, r, t); + r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared^128); + a_dec(&rw->_rw_waiters); + if (r && r != EINTR) return r; + } + return r; +} + +weak_alias(__pthread_rwlock_timedwrlock, pthread_rwlock_timedwrlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_tryrdlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_tryrdlock.c new file mode 100644 index 000000000..c13bc9cc1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_tryrdlock.c @@ -0,0 +1,15 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_tryrdlock(pthread_rwlock_t *rw) +{ + int val, cnt; + do { + val = rw->_rw_lock; + cnt = val & 0x7fffffff; + if (cnt == 0x7fffffff) return EBUSY; + if (cnt == 0x7ffffffe) return EAGAIN; + } while (a_cas(&rw->_rw_lock, val, val+1) != val); + return 0; +} + +weak_alias(__pthread_rwlock_tryrdlock, pthread_rwlock_tryrdlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_trywrlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_trywrlock.c new file mode 100644 index 000000000..64d9d3121 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_trywrlock.c @@ -0,0 +1,9 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_trywrlock(pthread_rwlock_t *rw) +{ + if (a_cas(&rw->_rw_lock, 0, 0x7fffffff)) return EBUSY; + return 0; +} + +weak_alias(__pthread_rwlock_trywrlock, pthread_rwlock_trywrlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_unlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_unlock.c new file mode 100644 index 000000000..9ae27ad2b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_unlock.c @@ -0,0 +1,20 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_unlock(pthread_rwlock_t *rw) +{ + int val, cnt, waiters, new, priv = rw->_rw_shared^128; + + do { + val = rw->_rw_lock; + cnt = val & 0x7fffffff; + waiters = rw->_rw_waiters; + new = (cnt == 0x7fffffff || cnt == 1) ? 0 : val-1; + } while (a_cas(&rw->_rw_lock, val, new) != val); + + if (!new && (waiters || val<0)) + __wake(&rw->_rw_lock, cnt, priv); + + return 0; +} + +weak_alias(__pthread_rwlock_unlock, pthread_rwlock_unlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_wrlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_wrlock.c new file mode 100644 index 000000000..46a3b3a5b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlock_wrlock.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int __pthread_rwlock_wrlock(pthread_rwlock_t *rw) +{ + return __pthread_rwlock_timedwrlock(rw, 0); +} + +weak_alias(__pthread_rwlock_wrlock, pthread_rwlock_wrlock); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_destroy.c new file mode 100644 index 000000000..fc8d611ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_rwlockattr_destroy(pthread_rwlockattr_t *a) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_init.c new file mode 100644 index 000000000..e74206944 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_init.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_rwlockattr_init(pthread_rwlockattr_t *a) +{ + *a = (pthread_rwlockattr_t){0}; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_setpshared.c b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_setpshared.c new file mode 100644 index 000000000..e7061973d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_rwlockattr_setpshared.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" + +int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *a, int pshared) +{ + if (pshared > 1U) return EINVAL; + a->__attr[0] = pshared; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_self.c b/vendor/modernc.org/libc/musl/src/thread/pthread_self.c new file mode 100644 index 000000000..bd3bf95bb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_self.c @@ -0,0 +1,10 @@ +#include "pthread_impl.h" +#include + +static pthread_t __pthread_self_internal() +{ + return __pthread_self(); +} + +weak_alias(__pthread_self_internal, pthread_self); +weak_alias(__pthread_self_internal, thrd_current); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setattr_default_np.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setattr_default_np.c new file mode 100644 index 000000000..58486220e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setattr_default_np.c @@ -0,0 +1,37 @@ +#define _GNU_SOURCE +#include "pthread_impl.h" +#include + +#define MIN(a,b) ((a)<(b) ? (a) : (b)) +#define MAX(a,b) ((a)>(b) ? (a) : (b)) + +int pthread_setattr_default_np(const pthread_attr_t *attrp) +{ + /* Reject anything in the attr object other than stack/guard size. */ + pthread_attr_t tmp = *attrp, zero = { 0 }; + tmp._a_stacksize = 0; + tmp._a_guardsize = 0; + if (memcmp(&tmp, &zero, sizeof tmp)) + return EINVAL; + + unsigned stack = MIN(attrp->_a_stacksize, DEFAULT_STACK_MAX); + unsigned guard = MIN(attrp->_a_guardsize, DEFAULT_GUARD_MAX); + + __inhibit_ptc(); + __default_stacksize = MAX(__default_stacksize, stack); + __default_guardsize = MAX(__default_guardsize, guard); + __release_ptc(); + + return 0; +} + +int pthread_getattr_default_np(pthread_attr_t *attrp) +{ + __acquire_ptc(); + *attrp = (pthread_attr_t) { + ._a_stacksize = __default_stacksize, + ._a_guardsize = __default_guardsize, + }; + __release_ptc(); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setcancelstate.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setcancelstate.c new file mode 100644 index 000000000..5ab8c338f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setcancelstate.c @@ -0,0 +1,12 @@ +#include "pthread_impl.h" + +int __pthread_setcancelstate(int new, int *old) +{ + if (new > 2U) return EINVAL; + struct pthread *self = __pthread_self(); + if (old) *old = self->canceldisable; + self->canceldisable = new; + return 0; +} + +weak_alias(__pthread_setcancelstate, pthread_setcancelstate); diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setcanceltype.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setcanceltype.c new file mode 100644 index 000000000..bf0a3f383 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setcanceltype.c @@ -0,0 +1,11 @@ +#include "pthread_impl.h" + +int pthread_setcanceltype(int new, int *old) +{ + struct pthread *self = __pthread_self(); + if (new > 1U) return EINVAL; + if (old) *old = self->cancelasync; + self->cancelasync = new; + if (new) pthread_testcancel(); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setconcurrency.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setconcurrency.c new file mode 100644 index 000000000..091abf98c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setconcurrency.c @@ -0,0 +1,9 @@ +#include +#include + +int pthread_setconcurrency(int val) +{ + if (val < 0) return EINVAL; + if (val > 0) return EAGAIN; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setname_np.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setname_np.c new file mode 100644 index 000000000..82d35e17e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setname_np.c @@ -0,0 +1,26 @@ +#define _GNU_SOURCE +#include +#include +#include +#include + +#include "pthread_impl.h" + +int pthread_setname_np(pthread_t thread, const char *name) +{ + int fd, cs, status = 0; + char f[sizeof "/proc/self/task//comm" + 3*sizeof(int)]; + size_t len; + + if ((len = strnlen(name, 16)) > 15) return ERANGE; + + if (thread == pthread_self()) + return prctl(PR_SET_NAME, (unsigned long)name, 0UL, 0UL, 0UL) ? errno : 0; + + snprintf(f, sizeof f, "/proc/self/task/%d/comm", thread->tid); + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + if ((fd = open(f, O_WRONLY)) < 0 || write(fd, name, len) < 0) status = errno; + if (fd >= 0) close(fd); + pthread_setcancelstate(cs, 0); + return status; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setschedparam.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setschedparam.c new file mode 100644 index 000000000..76d4d45a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setschedparam.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" +#include "lock.h" + +int pthread_setschedparam(pthread_t t, int policy, const struct sched_param *param) +{ + int r; + sigset_t set; + __block_app_sigs(&set); + LOCK(t->killlock); + r = !t->tid ? ESRCH : -__syscall(SYS_sched_setscheduler, t->tid, policy, param); + UNLOCK(t->killlock); + __restore_sigs(&set); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setschedprio.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setschedprio.c new file mode 100644 index 000000000..fc2e13ddb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setschedprio.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" +#include "lock.h" + +int pthread_setschedprio(pthread_t t, int prio) +{ + int r; + sigset_t set; + __block_app_sigs(&set); + LOCK(t->killlock); + r = !t->tid ? ESRCH : -__syscall(SYS_sched_setparam, t->tid, &prio); + UNLOCK(t->killlock); + __restore_sigs(&set); + return r; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_setspecific.c b/vendor/modernc.org/libc/musl/src/thread/pthread_setspecific.c new file mode 100644 index 000000000..55e46a899 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_setspecific.c @@ -0,0 +1,12 @@ +#include "pthread_impl.h" + +int pthread_setspecific(pthread_key_t k, const void *x) +{ + struct pthread *self = __pthread_self(); + /* Avoid unnecessary COW */ + if (self->tsd[k] != x) { + self->tsd[k] = (void *)x; + self->tsd_used = 1; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_sigmask.c b/vendor/modernc.org/libc/musl/src/thread/pthread_sigmask.c new file mode 100644 index 000000000..f188782a3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_sigmask.c @@ -0,0 +1,19 @@ +#include +#include +#include "syscall.h" + +int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old) +{ + int ret; + if (set && (unsigned)how - SIG_BLOCK > 2U) return EINVAL; + ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8); + if (!ret && old) { + if (sizeof old->__bits[0] == 8) { + old->__bits[0] &= ~0x380000000ULL; + } else { + old->__bits[0] &= ~0x80000000UL; + old->__bits[1] &= ~0x3UL; + } + } + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_spin_destroy.c b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_destroy.c new file mode 100644 index 000000000..e65a820c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_destroy.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_spin_destroy(pthread_spinlock_t *s) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_spin_init.c b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_init.c new file mode 100644 index 000000000..681881cf3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_init.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_spin_init(pthread_spinlock_t *s, int shared) +{ + return *s = 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_spin_lock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_lock.c new file mode 100644 index 000000000..ded2b653c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_lock.c @@ -0,0 +1,8 @@ +#include "pthread_impl.h" +#include + +int pthread_spin_lock(pthread_spinlock_t *s) +{ + while (*(volatile int *)s || a_cas(s, 0, EBUSY)) a_spin(); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_spin_trylock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_trylock.c new file mode 100644 index 000000000..5284fdac2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_trylock.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" +#include + +int pthread_spin_trylock(pthread_spinlock_t *s) +{ + return a_cas(s, 0, EBUSY); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_spin_unlock.c b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_unlock.c new file mode 100644 index 000000000..724d9e0d6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_spin_unlock.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_spin_unlock(pthread_spinlock_t *s) +{ + a_store(s, 0); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/pthread_testcancel.c b/vendor/modernc.org/libc/musl/src/thread/pthread_testcancel.c new file mode 100644 index 000000000..d772449d9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/pthread_testcancel.c @@ -0,0 +1,14 @@ +#include "pthread_impl.h" + +static void dummy() +{ +} + +weak_alias(dummy, __testcancel); + +void __pthread_testcancel() +{ + __testcancel(); +} + +weak_alias(__pthread_testcancel, pthread_testcancel); diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_destroy.c b/vendor/modernc.org/libc/musl/src/thread/sem_destroy.c new file mode 100644 index 000000000..f4aced5da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_destroy.c @@ -0,0 +1,6 @@ +#include + +int sem_destroy(sem_t *sem) +{ + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_getvalue.c b/vendor/modernc.org/libc/musl/src/thread/sem_getvalue.c new file mode 100644 index 000000000..d9d830717 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_getvalue.c @@ -0,0 +1,8 @@ +#include + +int sem_getvalue(sem_t *restrict sem, int *restrict valp) +{ + int val = sem->__val[0]; + *valp = val < 0 ? 0 : val; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_init.c b/vendor/modernc.org/libc/musl/src/thread/sem_init.c new file mode 100644 index 000000000..550924343 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_init.c @@ -0,0 +1,15 @@ +#include +#include +#include + +int sem_init(sem_t *sem, int pshared, unsigned value) +{ + if (value > SEM_VALUE_MAX) { + errno = EINVAL; + return -1; + } + sem->__val[0] = value; + sem->__val[1] = 0; + sem->__val[2] = pshared ? 0 : 128; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_open.c b/vendor/modernc.org/libc/musl/src/thread/sem_open.c new file mode 100644 index 000000000..de8555c5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_open.c @@ -0,0 +1,173 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lock.h" + +static struct { + ino_t ino; + sem_t *sem; + int refcnt; +} *semtab; +static volatile int lock[1]; + +#define FLAGS (O_RDWR|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK) + +sem_t *sem_open(const char *name, int flags, ...) +{ + va_list ap; + mode_t mode; + unsigned value; + int fd, i, e, slot, first=1, cnt, cs; + sem_t newsem; + void *map; + char tmp[64]; + struct timespec ts; + struct stat st; + char buf[NAME_MAX+10]; + + if (!(name = __shm_mapname(name, buf))) + return SEM_FAILED; + + LOCK(lock); + /* Allocate table if we don't have one yet */ + if (!semtab && !(semtab = calloc(sizeof *semtab, SEM_NSEMS_MAX))) { + UNLOCK(lock); + return SEM_FAILED; + } + + /* Reserve a slot in case this semaphore is not mapped yet; + * this is necessary because there is no way to handle + * failures after creation of the file. */ + slot = -1; + for (cnt=i=0; i= 0) { + if (fstat(fd, &st) < 0 || + (map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) { + close(fd); + goto fail; + } + close(fd); + break; + } + if (errno != ENOENT) + goto fail; + } + if (!(flags & O_CREAT)) + goto fail; + if (first) { + first = 0; + va_start(ap, flags); + mode = va_arg(ap, mode_t) & 0666; + value = va_arg(ap, unsigned); + va_end(ap); + if (value > SEM_VALUE_MAX) { + errno = EINVAL; + goto fail; + } + sem_init(&newsem, 1, value); + } + /* Create a temp file with the new semaphore contents + * and attempt to atomically link it as the new name */ + clock_gettime(CLOCK_REALTIME, &ts); + snprintf(tmp, sizeof(tmp), "/dev/shm/tmp-%d", (int)ts.tv_nsec); + fd = open(tmp, O_CREAT|O_EXCL|FLAGS, mode); + if (fd < 0) { + if (errno == EEXIST) continue; + goto fail; + } + if (write(fd, &newsem, sizeof newsem) != sizeof newsem || fstat(fd, &st) < 0 || + (map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) { + close(fd); + unlink(tmp); + goto fail; + } + close(fd); + e = link(tmp, name) ? errno : 0; + unlink(tmp); + if (!e) break; + munmap(map, sizeof(sem_t)); + /* Failure is only fatal when doing an exclusive open; + * otherwise, next iteration will try to open the + * existing file. */ + if (e != EEXIST || flags == (O_CREAT|O_EXCL)) + goto fail; + } + + /* See if the newly mapped semaphore is already mapped. If + * so, unmap the new mapping and use the existing one. Otherwise, + * add it to the table of mapped semaphores. */ + LOCK(lock); + for (i=0; i +#include "pthread_impl.h" + +int sem_post(sem_t *sem) +{ + int val, waiters, priv = sem->__val[2]; + do { + val = sem->__val[0]; + waiters = sem->__val[1]; + if (val == SEM_VALUE_MAX) { + errno = EOVERFLOW; + return -1; + } + } while (a_cas(sem->__val, val, val+1+(val<0)) != val); + if (val<0 || waiters) __wake(sem->__val, 1, priv); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_timedwait.c b/vendor/modernc.org/libc/musl/src/thread/sem_timedwait.c new file mode 100644 index 000000000..58d3ebfef --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_timedwait.c @@ -0,0 +1,31 @@ +#include +#include "pthread_impl.h" + +static void cleanup(void *p) +{ + a_dec(p); +} + +int sem_timedwait(sem_t *restrict sem, const struct timespec *restrict at) +{ + pthread_testcancel(); + + if (!sem_trywait(sem)) return 0; + + int spins = 100; + while (spins-- && sem->__val[0] <= 0 && !sem->__val[1]) a_spin(); + + while (sem_trywait(sem)) { + int r; + a_inc(sem->__val+1); + a_cas(sem->__val, 0, -1); + pthread_cleanup_push(cleanup, (void *)(sem->__val+1)); + r = __timedwait_cp(sem->__val, -1, CLOCK_REALTIME, at, sem->__val[2]); + pthread_cleanup_pop(1); + if (r) { + errno = r; + return -1; + } + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_trywait.c b/vendor/modernc.org/libc/musl/src/thread/sem_trywait.c new file mode 100644 index 000000000..04edf46b5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_trywait.c @@ -0,0 +1,13 @@ +#include +#include "pthread_impl.h" + +int sem_trywait(sem_t *sem) +{ + int val; + while ((val=sem->__val[0]) > 0) { + int new = val-1-(val==1 && sem->__val[1]); + if (a_cas(sem->__val, val, new)==val) return 0; + } + errno = EAGAIN; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_unlink.c b/vendor/modernc.org/libc/musl/src/thread/sem_unlink.c new file mode 100644 index 000000000..c06134bd4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_unlink.c @@ -0,0 +1,7 @@ +#include +#include + +int sem_unlink(const char *name) +{ + return shm_unlink(name); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sem_wait.c b/vendor/modernc.org/libc/musl/src/thread/sem_wait.c new file mode 100644 index 000000000..264194f97 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sem_wait.c @@ -0,0 +1,6 @@ +#include + +int sem_wait(sem_t *sem) +{ + return sem_timedwait(sem, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sh/__set_thread_area.c b/vendor/modernc.org/libc/musl/src/thread/sh/__set_thread_area.c new file mode 100644 index 000000000..34264bddd --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sh/__set_thread_area.c @@ -0,0 +1,37 @@ +#include "pthread_impl.h" +#include "libc.h" +#include + +/* Also perform sh-specific init */ + +#define CPU_HAS_LLSC 0x0040 +#define CPU_HAS_CAS_L 0x0400 + +extern hidden const char __sh_cas_gusa[], __sh_cas_llsc[], __sh_cas_imask[], __sh_cas_cas_l[]; + +hidden const void *__sh_cas_ptr; + +hidden unsigned __sh_nommu; + +int __set_thread_area(void *p) +{ + size_t *aux; + __asm__ __volatile__ ( "ldc %0, gbr" : : "r"(p) : "memory" ); +#ifndef __SH4A__ + __sh_cas_ptr = __sh_cas_gusa; +#if !defined(__SH3__) && !defined(__SH4__) + for (aux=libc.auxv; *aux; aux+=2) { + if (*aux != AT_PLATFORM) continue; + const char *s = (void *)aux[1]; + if (s[0]!='s' || s[1]!='h' || s[2]!='2' || s[3]-'0'<10u) break; + __sh_cas_ptr = __sh_cas_imask; + __sh_nommu = 1; + } +#endif + if (__hwcap & CPU_HAS_CAS_L) + __sh_cas_ptr = __sh_cas_cas_l; + else if (__hwcap & CPU_HAS_LLSC) + __sh_cas_ptr = __sh_cas_llsc; +#endif + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/sh/__unmapself.c b/vendor/modernc.org/libc/musl/src/thread/sh/__unmapself.c new file mode 100644 index 000000000..35fb3c92d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/sh/__unmapself.c @@ -0,0 +1,24 @@ +#include "pthread_impl.h" + +hidden void __unmapself_sh_mmu(void *, size_t); +hidden void __unmapself_sh_nommu(void *, size_t); + +#if !defined(__SH3__) && !defined(__SH4__) +#define __unmapself __unmapself_sh_nommu +#include "dynlink.h" +#undef CRTJMP +#define CRTJMP(pc,sp) __asm__ __volatile__( \ + "mov.l @%0+,r0 ; mov.l @%0,r12 ; jmp @r0 ; mov %1,r15" \ + : : "r"(pc), "r"(sp) : "r0", "memory" ) +#include "../__unmapself.c" +#undef __unmapself +extern hidden unsigned __sh_nommu; +#else +#define __sh_nommu 0 +#endif + +void __unmapself(void *base, size_t size) +{ + if (__sh_nommu) __unmapself_sh_nommu(base, size); + else __unmapself_sh_mmu(base, size); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/synccall.c b/vendor/modernc.org/libc/musl/src/thread/synccall.c new file mode 100644 index 000000000..648a6ad45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/synccall.c @@ -0,0 +1,119 @@ +#include "pthread_impl.h" +#include +#include + +static void dummy_0(void) +{ +} + +weak_alias(dummy_0, __tl_lock); +weak_alias(dummy_0, __tl_unlock); + +static int target_tid; +static void (*callback)(void *), *context; +static sem_t target_sem, caller_sem; + +static void dummy(void *p) +{ +} + +static void handler(int sig) +{ + if (__pthread_self()->tid != target_tid) return; + + int old_errno = errno; + + /* Inform caller we have received signal and wait for + * the caller to let us make the callback. */ + sem_post(&caller_sem); + sem_wait(&target_sem); + + callback(context); + + /* Inform caller we've complered the callback and wait + * for the caller to release us to return. */ + sem_post(&caller_sem); + sem_wait(&target_sem); + + /* Inform caller we are returning and state is destroyable. */ + sem_post(&caller_sem); + + errno = old_errno; +} + +void __synccall(void (*func)(void *), void *ctx) +{ + sigset_t oldmask; + int cs, i, r; + struct sigaction sa = { .sa_flags = SA_RESTART, .sa_handler = handler }; + pthread_t self = __pthread_self(), td; + int count = 0; + + /* Blocking signals in two steps, first only app-level signals + * before taking the lock, then all signals after taking the lock, + * is necessary to achieve AS-safety. Blocking them all first would + * deadlock if multiple threads called __synccall. Waiting to block + * any until after the lock would allow re-entry in the same thread + * with the lock already held. */ + __block_app_sigs(&oldmask); + __tl_lock(); + __block_all_sigs(0); + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + + sem_init(&target_sem, 0, 0); + sem_init(&caller_sem, 0, 0); + + if (!libc.threads_minus_1) goto single_threaded; + + callback = func; + context = ctx; + + /* Block even implementation-internal signals, so that nothing + * interrupts the SIGSYNCCALL handlers. The main possible source + * of trouble is asynchronous cancellation. */ + memset(&sa.sa_mask, -1, sizeof sa.sa_mask); + __libc_sigaction(SIGSYNCCALL, &sa, 0); + + + for (td=self->next; td!=self; td=td->next) { + target_tid = td->tid; + while ((r = -__syscall(SYS_tkill, td->tid, SIGSYNCCALL)) == EAGAIN); + if (r) { + /* If we failed to signal any thread, nop out the + * callback to abort the synccall and just release + * any threads already caught. */ + callback = func = dummy; + break; + } + sem_wait(&caller_sem); + count++; + } + target_tid = 0; + + /* Serialize execution of callback in caught threads, or just + * release them all if synccall is being aborted. */ + for (i=0; i + +int thrd_create(thrd_t *thr, thrd_start_t func, void *arg) +{ + int ret = __pthread_create(thr, __ATTRP_C11_THREAD, (void *(*)(void *))func, arg); + switch (ret) { + case 0: return thrd_success; + case EAGAIN: return thrd_nomem; + default: return thrd_error; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/thrd_exit.c b/vendor/modernc.org/libc/musl/src/thread/thrd_exit.c new file mode 100644 index 000000000..9b291ae3d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/thrd_exit.c @@ -0,0 +1,8 @@ +#include +#include +#include + +_Noreturn void thrd_exit(int result) +{ + __pthread_exit((void*)(intptr_t)result); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/thrd_join.c b/vendor/modernc.org/libc/musl/src/thread/thrd_join.c new file mode 100644 index 000000000..0d5fd302d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/thrd_join.c @@ -0,0 +1,11 @@ +#include +#include +#include + +int thrd_join(thrd_t t, int *res) +{ + void *pthread_res; + __pthread_join(t, &pthread_res); + if (res) *res = (int)(intptr_t)pthread_res; + return thrd_success; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/thrd_sleep.c b/vendor/modernc.org/libc/musl/src/thread/thrd_sleep.c new file mode 100644 index 000000000..97de53455 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/thrd_sleep.c @@ -0,0 +1,14 @@ +#include +#include +#include +#include "syscall.h" + +int thrd_sleep(const struct timespec *req, struct timespec *rem) +{ + int ret = -__clock_nanosleep(CLOCK_REALTIME, 0, req, rem); + switch (ret) { + case 0: return 0; + case -EINTR: return -1; /* value specified by C11 */ + default: return -2; + } +} diff --git a/vendor/modernc.org/libc/musl/src/thread/thrd_yield.c b/vendor/modernc.org/libc/musl/src/thread/thrd_yield.c new file mode 100644 index 000000000..f7ad13219 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/thrd_yield.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +void thrd_yield() +{ + __syscall(SYS_sched_yield); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/tls.c b/vendor/modernc.org/libc/musl/src/thread/tls.c new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/modernc.org/libc/musl/src/thread/tss_create.c b/vendor/modernc.org/libc/musl/src/thread/tss_create.c new file mode 100644 index 000000000..6d6ef96b4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/tss_create.c @@ -0,0 +1,10 @@ +#include +#include + +int tss_create(tss_t *tss, tss_dtor_t dtor) +{ + /* Different error returns are possible. C glues them together into + * just failure notification. Can't be optimized to a tail call, + * unless thrd_error equals EAGAIN. */ + return __pthread_key_create(tss, dtor) ? thrd_error : thrd_success; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/tss_delete.c b/vendor/modernc.org/libc/musl/src/thread/tss_delete.c new file mode 100644 index 000000000..6f51b07eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/tss_delete.c @@ -0,0 +1,7 @@ +#include +#include + +void tss_delete(tss_t key) +{ + __pthread_key_delete(key); +} diff --git a/vendor/modernc.org/libc/musl/src/thread/tss_set.c b/vendor/modernc.org/libc/musl/src/thread/tss_set.c new file mode 100644 index 000000000..70c4fb723 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/tss_set.c @@ -0,0 +1,13 @@ +#include "pthread_impl.h" +#include + +int tss_set(tss_t k, void *x) +{ + struct pthread *self = __pthread_self(); + /* Avoid unnecessary COW */ + if (self->tsd[k] != x) { + self->tsd[k] = x; + self->tsd_used = 1; + } + return thrd_success; +} diff --git a/vendor/modernc.org/libc/musl/src/thread/vmlock.c b/vendor/modernc.org/libc/musl/src/thread/vmlock.c new file mode 100644 index 000000000..75f3cb761 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/thread/vmlock.c @@ -0,0 +1,21 @@ +#include "pthread_impl.h" + +static volatile int vmlock[2]; + +void __vm_wait() +{ + int tmp; + while ((tmp=vmlock[0])) + __wait(vmlock, vmlock+1, tmp, 1); +} + +void __vm_lock() +{ + a_inc(vmlock); +} + +void __vm_unlock() +{ + if (a_fetch_add(vmlock, -1)==1 && vmlock[1]) + __wake(vmlock, -1, 1); +} diff --git a/vendor/modernc.org/libc/musl/src/time/__map_file.c b/vendor/modernc.org/libc/musl/src/time/__map_file.c new file mode 100644 index 000000000..d3cefa828 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__map_file.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include "syscall.h" +#include "kstat.h" + +const char unsigned *__map_file(const char *pathname, size_t *size) +{ + struct kstat st; + const unsigned char *map = MAP_FAILED; + int fd = sys_open(pathname, O_RDONLY|O_CLOEXEC|O_NONBLOCK); + if (fd < 0) return 0; + if (!syscall(SYS_fstat, fd, &st)) { + map = __mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0); + *size = st.st_size; + } + __syscall(SYS_close, fd); + return map == MAP_FAILED ? 0 : map; +} diff --git a/vendor/modernc.org/libc/musl/src/time/__month_to_secs.c b/vendor/modernc.org/libc/musl/src/time/__month_to_secs.c new file mode 100644 index 000000000..43248fb3c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__month_to_secs.c @@ -0,0 +1,10 @@ +int __month_to_secs(int month, int is_leap) +{ + static const int secs_through_month[] = { + 0, 31*86400, 59*86400, 90*86400, + 120*86400, 151*86400, 181*86400, 212*86400, + 243*86400, 273*86400, 304*86400, 334*86400 }; + int t = secs_through_month[month]; + if (is_leap && month >= 2) t+=86400; + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/time/__secs_to_tm.c b/vendor/modernc.org/libc/musl/src/time/__secs_to_tm.c new file mode 100644 index 000000000..093d9021a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__secs_to_tm.c @@ -0,0 +1,82 @@ +#include "time_impl.h" +#include + +/* 2000-03-01 (mod 400 year, immediately after feb29 */ +#define LEAPOCH (946684800LL + 86400*(31+29)) + +#define DAYS_PER_400Y (365*400 + 97) +#define DAYS_PER_100Y (365*100 + 24) +#define DAYS_PER_4Y (365*4 + 1) + +int __secs_to_tm(long long t, struct tm *tm) +{ + long long days, secs, years; + int remdays, remsecs, remyears; + int qc_cycles, c_cycles, q_cycles; + int months; + int wday, yday, leap; + static const char days_in_month[] = {31,30,31,30,31,31,30,31,30,31,31,29}; + + /* Reject time_t values whose year would overflow int */ + if (t < INT_MIN * 31622400LL || t > INT_MAX * 31622400LL) + return -1; + + secs = t - LEAPOCH; + days = secs / 86400; + remsecs = secs % 86400; + if (remsecs < 0) { + remsecs += 86400; + days--; + } + + wday = (3+days)%7; + if (wday < 0) wday += 7; + + qc_cycles = days / DAYS_PER_400Y; + remdays = days % DAYS_PER_400Y; + if (remdays < 0) { + remdays += DAYS_PER_400Y; + qc_cycles--; + } + + c_cycles = remdays / DAYS_PER_100Y; + if (c_cycles == 4) c_cycles--; + remdays -= c_cycles * DAYS_PER_100Y; + + q_cycles = remdays / DAYS_PER_4Y; + if (q_cycles == 25) q_cycles--; + remdays -= q_cycles * DAYS_PER_4Y; + + remyears = remdays / 365; + if (remyears == 4) remyears--; + remdays -= remyears * 365; + + leap = !remyears && (q_cycles || !c_cycles); + yday = remdays + 31 + 28 + leap; + if (yday >= 365+leap) yday -= 365+leap; + + years = remyears + 4*q_cycles + 100*c_cycles + 400LL*qc_cycles; + + for (months=0; days_in_month[months] <= remdays; months++) + remdays -= days_in_month[months]; + + if (months >= 10) { + months -= 12; + years++; + } + + if (years+100 > INT_MAX || years+100 < INT_MIN) + return -1; + + tm->tm_year = years + 100; + tm->tm_mon = months + 2; + tm->tm_mday = remdays + 1; + tm->tm_wday = wday; + tm->tm_yday = yday; + + tm->tm_hour = remsecs / 3600; + tm->tm_min = remsecs / 60 % 60; + tm->tm_sec = remsecs % 60; + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/__tm_to_secs.c b/vendor/modernc.org/libc/musl/src/time/__tm_to_secs.c new file mode 100644 index 000000000..c29fa985a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__tm_to_secs.c @@ -0,0 +1,24 @@ +#include "time_impl.h" + +long long __tm_to_secs(const struct tm *tm) +{ + int is_leap; + long long year = tm->tm_year; + int month = tm->tm_mon; + if (month >= 12 || month < 0) { + int adj = month / 12; + month %= 12; + if (month < 0) { + adj--; + month += 12; + } + year += adj; + } + long long t = __year_to_secs(year, &is_leap); + t += __month_to_secs(month, is_leap); + t += 86400LL * (tm->tm_mday-1); + t += 3600LL * tm->tm_hour; + t += 60LL * tm->tm_min; + t += tm->tm_sec; + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/time/__tz.c b/vendor/modernc.org/libc/musl/src/time/__tz.c new file mode 100644 index 000000000..49a7371eb --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__tz.c @@ -0,0 +1,422 @@ +#include "time_impl.h" +#include +#include +#include +#include +#include +#include "libc.h" +#include "lock.h" + +long __timezone = 0; +int __daylight = 0; +char *__tzname[2] = { 0, 0 }; + +weak_alias(__timezone, timezone); +weak_alias(__daylight, daylight); +weak_alias(__tzname, tzname); + +static char std_name[TZNAME_MAX+1]; +static char dst_name[TZNAME_MAX+1]; +const char __utc[] = "UTC"; + +static int dst_off; +static int r0[5], r1[5]; + +static const unsigned char *zi, *trans, *index, *types, *abbrevs, *abbrevs_end; +static size_t map_size; + +static char old_tz_buf[32]; +static char *old_tz = old_tz_buf; +static size_t old_tz_size = sizeof old_tz_buf; + +static volatile int lock[1]; + +static int getint(const char **p) +{ + unsigned x; + for (x=0; **p-'0'<10U; (*p)++) x = **p-'0' + 10*x; + return x; +} + +static int getoff(const char **p) +{ + int neg = 0; + if (**p == '-') { + ++*p; + neg = 1; + } else if (**p == '+') { + ++*p; + } + int off = 3600*getint(p); + if (**p == ':') { + ++*p; + off += 60*getint(p); + if (**p == ':') { + ++*p; + off += getint(p); + } + } + return neg ? -off : off; +} + +static void getrule(const char **p, int rule[5]) +{ + int r = rule[0] = **p; + + if (r!='M') { + if (r=='J') ++*p; + else rule[0] = 0; + rule[1] = getint(p); + } else { + ++*p; rule[1] = getint(p); + ++*p; rule[2] = getint(p); + ++*p; rule[3] = getint(p); + } + + if (**p=='/') { + ++*p; + rule[4] = getoff(p); + } else { + rule[4] = 7200; + } +} + +static void getname(char *d, const char **p) +{ + int i; + if (**p == '<') { + ++*p; + for (i=0; (*p)[i] && (*p)[i]!='>'; i++) + if (i PATH_MAX+1) s = __utc, i = 3; + if (i >= old_tz_size) { + old_tz_size *= 2; + if (i >= old_tz_size) old_tz_size = i+1; + if (old_tz_size > PATH_MAX+2) old_tz_size = PATH_MAX+2; + old_tz = malloc(old_tz_size); + } + if (old_tz) memcpy(old_tz, s, i+1); + + /* Non-suid can use an absolute tzfile pathname or a relative + * pathame beginning with "."; in secure mode, only the + * standard path will be searched. */ + if (*s == ':' || ((p=strchr(s, '/')) && !memchr(s, ',', p-s))) { + if (*s == ':') s++; + if (*s == '/' || *s == '.') { + if (!libc.secure || !strcmp(s, "/etc/localtime")) + map = __map_file(s, &map_size); + } else { + size_t l = strlen(s); + if (l <= NAME_MAX && !strchr(s, '.')) { + memcpy(pathname, s, l+1); + pathname[l] = 0; + for (try=search; !map && *try; try+=l+1) { + l = strlen(try); + memcpy(pathname-l, try, l); + map = __map_file(pathname-l, &map_size); + } + } + } + if (!map) s = __utc; + } + if (map && (map_size < 44 || memcmp(map, "TZif", 4))) { + __munmap((void *)map, map_size); + map = 0; + s = __utc; + } + + zi = map; + if (map) { + int scale = 2; + if (sizeof(time_t) > 4 && map[4]=='2') { + size_t skip = zi_dotprod(zi+20, VEC(1,1,8,5,6,1), 6); + trans = zi+skip+44+44; + scale++; + } else { + trans = zi+44; + } + index = trans + (zi_read32(trans-12) << scale); + types = index + zi_read32(trans-12); + abbrevs = types + 6*zi_read32(trans-8); + abbrevs_end = abbrevs + zi_read32(trans-4); + if (zi[map_size-1] == '\n') { + for (s = (const char *)zi+map_size-2; *s!='\n'; s--); + s++; + } else { + const unsigned char *p; + __tzname[0] = __tzname[1] = 0; + __daylight = __timezone = dst_off = 0; + for (p=types; p>scale, m; + + if (!n) { + if (alt) *alt = 0; + return 0; + } + + /* Binary search for 'most-recent rule before t'. */ + while (n > 1) { + m = a + n/2; + x = zi_read32(trans + (m<>scale; + if (a == n-1) return -1; + if (a == 0) { + x = zi_read32(trans + (a<>(m-1))&1); +} + +/* Convert a POSIX DST rule plus year to seconds since epoch. */ + +static long long rule_to_secs(const int *rule, int year) +{ + int is_leap; + long long t = __year_to_secs(year, &is_leap); + int x, m, n, d; + if (rule[0]!='M') { + x = rule[1]; + if (rule[0]=='J' && (x < 60 || !is_leap)) x--; + t += 86400 * x; + } else { + m = rule[1]; + n = rule[2]; + d = rule[3]; + t += __month_to_secs(m-1, is_leap); + int wday = (int)((t + 4*86400) % (7*86400)) / 86400; + int days = d - wday; + if (days < 0) days += 7; + if (n == 5 && days+28 >= days_in_month(m, is_leap)) n = 4; + t += 86400 * (days + 7*(n-1)); + } + t += rule[4]; + return t; +} + +/* Determine the time zone in effect for a given time in seconds since the + * epoch. It can be given in local or universal time. The results will + * indicate whether DST is in effect at the queried time, and will give both + * the GMT offset for the active zone/DST rule and the opposite DST. This + * enables a caller to efficiently adjust for the case where an explicit + * DST specification mismatches what would be in effect at the time. */ + +void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppoff, const char **zonename) +{ + LOCK(lock); + + do_tzset(); + + if (zi) { + size_t alt, i = scan_trans(t, local, &alt); + if (i != -1) { + *isdst = types[6*i+4]; + *offset = (int32_t)zi_read32(types+6*i); + *zonename = (const char *)abbrevs + types[6*i+5]; + if (oppoff) *oppoff = (int32_t)zi_read32(types+6*alt); + UNLOCK(lock); + return; + } + } + + if (!__daylight) goto std; + + /* FIXME: may be broken if DST changes right at year boundary? + * Also, this could be more efficient.*/ + long long y = t / 31556952 + 70; + while (__year_to_secs(y, 0) > t) y--; + while (__year_to_secs(y+1, 0) < t) y++; + + long long t0 = rule_to_secs(r0, y); + long long t1 = rule_to_secs(r1, y); + + if (!local) { + t0 += __timezone; + t1 += dst_off; + } + if (t0 < t1) { + if (t >= t0 && t < t1) goto dst; + goto std; + } else { + if (t >= t1 && t < t0) goto std; + goto dst; + } +std: + *isdst = 0; + *offset = -__timezone; + if (oppoff) *oppoff = -dst_off; + *zonename = __tzname[0]; + UNLOCK(lock); + return; +dst: + *isdst = 1; + *offset = -dst_off; + if (oppoff) *oppoff = -__timezone; + *zonename = __tzname[1]; + UNLOCK(lock); +} + +static void __tzset() +{ + LOCK(lock); + do_tzset(); + UNLOCK(lock); +} + +weak_alias(__tzset, tzset); + +const char *__tm_to_tzname(const struct tm *tm) +{ + const void *p = tm->__tm_zone; + LOCK(lock); + do_tzset(); + if (p != __utc && p != __tzname[0] && p != __tzname[1] && + (!zi || (uintptr_t)p-(uintptr_t)abbrevs >= abbrevs_end - abbrevs)) + p = ""; + UNLOCK(lock); + return p; +} diff --git a/vendor/modernc.org/libc/musl/src/time/__year_to_secs.c b/vendor/modernc.org/libc/musl/src/time/__year_to_secs.c new file mode 100644 index 000000000..2824ec6dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/__year_to_secs.c @@ -0,0 +1,47 @@ +long long __year_to_secs(long long year, int *is_leap) +{ + if (year-2ULL <= 136) { + int y = year; + int leaps = (y-68)>>2; + if (!((y-68)&3)) { + leaps--; + if (is_leap) *is_leap = 1; + } else if (is_leap) *is_leap = 0; + return 31536000*(y-70) + 86400*leaps; + } + + int cycles, centuries, leaps, rem; + + if (!is_leap) is_leap = &(int){0}; + cycles = (year-100) / 400; + rem = (year-100) % 400; + if (rem < 0) { + cycles--; + rem += 400; + } + if (!rem) { + *is_leap = 1; + centuries = 0; + leaps = 0; + } else { + if (rem >= 200) { + if (rem >= 300) centuries = 3, rem -= 300; + else centuries = 2, rem -= 200; + } else { + if (rem >= 100) centuries = 1, rem -= 100; + else centuries = 0; + } + if (!rem) { + *is_leap = 0; + leaps = 0; + } else { + leaps = rem / 4U; + rem %= 4U; + *is_leap = !rem; + } + } + + leaps += 97*cycles + 24*centuries - *is_leap; + + return (year-100) * 31536000LL + leaps * 86400LL + 946684800 + 86400; +} diff --git a/vendor/modernc.org/libc/musl/src/time/asctime.c b/vendor/modernc.org/libc/musl/src/time/asctime.c new file mode 100644 index 000000000..1febe5440 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/asctime.c @@ -0,0 +1,7 @@ +#include + +char *asctime(const struct tm *tm) +{ + static char buf[26]; + return __asctime_r(tm, buf); +} diff --git a/vendor/modernc.org/libc/musl/src/time/asctime_r.c b/vendor/modernc.org/libc/musl/src/time/asctime_r.c new file mode 100644 index 000000000..26809ca26 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/asctime_r.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include "locale_impl.h" +#include "atomic.h" + +char *__asctime_r(const struct tm *restrict tm, char *restrict buf) +{ + if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", + __nl_langinfo_l(ABDAY_1+tm->tm_wday, C_LOCALE), + __nl_langinfo_l(ABMON_1+tm->tm_mon, C_LOCALE), + tm->tm_mday, tm->tm_hour, + tm->tm_min, tm->tm_sec, + 1900 + tm->tm_year) >= 26) + { + /* ISO C requires us to use the above format string, + * even if it will not fit in the buffer. Thus asctime_r + * is _supposed_ to crash if the fields in tm are too large. + * We follow this behavior and crash "gracefully" to warn + * application developers that they may not be so lucky + * on other implementations (e.g. stack smashing..). + */ + a_crash(); + } + return buf; +} + +weak_alias(__asctime_r, asctime_r); diff --git a/vendor/modernc.org/libc/musl/src/time/clock.c b/vendor/modernc.org/libc/musl/src/time/clock.c new file mode 100644 index 000000000..6724012b9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock.c @@ -0,0 +1,16 @@ +#include +#include + +clock_t clock() +{ + struct timespec ts; + + if (__clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts)) + return -1; + + if (ts.tv_sec > LONG_MAX/1000000 + || ts.tv_nsec/1000 > LONG_MAX-1000000*ts.tv_sec) + return -1; + + return ts.tv_sec*1000000 + ts.tv_nsec/1000; +} diff --git a/vendor/modernc.org/libc/musl/src/time/clock_getcpuclockid.c b/vendor/modernc.org/libc/musl/src/time/clock_getcpuclockid.c new file mode 100644 index 000000000..8a0e2d4c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock_getcpuclockid.c @@ -0,0 +1,14 @@ +#include +#include +#include +#include "syscall.h" + +int clock_getcpuclockid(pid_t pid, clockid_t *clk) +{ + struct timespec ts; + clockid_t id = (-pid-1)*8U + 2; + int ret = __syscall(SYS_clock_getres, id, &ts); + if (ret) return -ret; + *clk = id; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/clock_getres.c b/vendor/modernc.org/libc/musl/src/time/clock_getres.c new file mode 100644 index 000000000..81c670376 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock_getres.c @@ -0,0 +1,21 @@ +#include +#include "syscall.h" + +int clock_getres(clockid_t clk, struct timespec *ts) +{ +#ifdef SYS_clock_getres_time64 + /* On a 32-bit arch, use the old syscall if it exists. */ + if (SYS_clock_getres != SYS_clock_getres_time64) { + long ts32[2]; + int r = __syscall(SYS_clock_getres, clk, ts32); + if (!r && ts) { + ts->tv_sec = ts32[0]; + ts->tv_nsec = ts32[1]; + } + return __syscall_ret(r); + } +#endif + /* If reaching this point, it's a 64-bit arch or time64-only + * 32-bit arch and we can get result directly into timespec. */ + return syscall(SYS_clock_getres, clk, ts); +} diff --git a/vendor/modernc.org/libc/musl/src/time/clock_gettime.c b/vendor/modernc.org/libc/musl/src/time/clock_gettime.c new file mode 100644 index 000000000..3e1d0975b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock_gettime.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include "syscall.h" +#include "atomic.h" + +#ifdef VDSO_CGT_SYM + +static void *volatile vdso_func; + +#ifdef VDSO_CGT32_SYM +static void *volatile vdso_func_32; +static int cgt_time32_wrap(clockid_t clk, struct timespec *ts) +{ + long ts32[2]; + int (*f)(clockid_t, long[2]) = + (int (*)(clockid_t, long[2]))vdso_func_32; + int r = f(clk, ts32); + if (!r) { + /* Fallback to syscalls if time32 overflowed. Maybe + * we lucked out and somehow migrated to a kernel with + * time64 syscalls available. */ + if (ts32[0] < 0) { + a_cas_p(&vdso_func, (void *)cgt_time32_wrap, 0); + return -ENOSYS; + } + ts->tv_sec = ts32[0]; + ts->tv_nsec = ts32[1]; + } + return r; +} +#endif + +static int cgt_init(clockid_t clk, struct timespec *ts) +{ + void *p = __vdsosym(VDSO_CGT_VER, VDSO_CGT_SYM); +#ifdef VDSO_CGT32_SYM + if (!p) { + void *q = __vdsosym(VDSO_CGT32_VER, VDSO_CGT32_SYM); + if (q) { + a_cas_p(&vdso_func_32, 0, q); + p = cgt_time32_wrap; + } + } +#endif + int (*f)(clockid_t, struct timespec *) = + (int (*)(clockid_t, struct timespec *))p; + a_cas_p(&vdso_func, (void *)cgt_init, p); + return f ? f(clk, ts) : -ENOSYS; +} + +static void *volatile vdso_func = (void *)cgt_init; + +#endif + +int __clock_gettime(clockid_t clk, struct timespec *ts) +{ + int r; + +#ifdef VDSO_CGT_SYM + int (*f)(clockid_t, struct timespec *) = + (int (*)(clockid_t, struct timespec *))vdso_func; + if (f) { + r = f(clk, ts); + if (!r) return r; + if (r == -EINVAL) return __syscall_ret(r); + /* Fall through on errors other than EINVAL. Some buggy + * vdso implementations return ENOSYS for clocks they + * can't handle, rather than making the syscall. This + * also handles the case where cgt_init fails to find + * a vdso function to use. */ + } +#endif + +#ifdef SYS_clock_gettime64 + r = -ENOSYS; + if (sizeof(time_t) > 4) + r = __syscall(SYS_clock_gettime64, clk, ts); + if (SYS_clock_gettime == SYS_clock_gettime64 || r!=-ENOSYS) + return __syscall_ret(r); + long ts32[2]; + r = __syscall(SYS_clock_gettime, clk, ts32); + if (r==-ENOSYS && clk==CLOCK_REALTIME) { + r = __syscall(SYS_gettimeofday, ts32, 0); + ts32[1] *= 1000; + } + if (!r) { + ts->tv_sec = ts32[0]; + ts->tv_nsec = ts32[1]; + return r; + } + return __syscall_ret(r); +#else + r = __syscall(SYS_clock_gettime, clk, ts); + if (r == -ENOSYS) { + if (clk == CLOCK_REALTIME) { + __syscall(SYS_gettimeofday, ts, 0); + ts->tv_nsec = (int)ts->tv_nsec * 1000; + return 0; + } + r = -EINVAL; + } + return __syscall_ret(r); +#endif +} + +weak_alias(__clock_gettime, clock_gettime); diff --git a/vendor/modernc.org/libc/musl/src/time/clock_nanosleep.c b/vendor/modernc.org/libc/musl/src/time/clock_nanosleep.c new file mode 100644 index 000000000..e195499cc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock_nanosleep.c @@ -0,0 +1,38 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) +#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63)) + +int __clock_nanosleep(clockid_t clk, int flags, const struct timespec *req, struct timespec *rem) +{ + if (clk == CLOCK_THREAD_CPUTIME_ID) return EINVAL; +#ifdef SYS_clock_nanosleep_time64 + time_t s = req->tv_sec; + long ns = req->tv_nsec; + int r = -ENOSYS; + if (SYS_clock_nanosleep == SYS_clock_nanosleep_time64 || !IS32BIT(s)) + r = __syscall_cp(SYS_clock_nanosleep_time64, clk, flags, + ((long long[]){s, ns}), rem); + if (SYS_clock_nanosleep == SYS_clock_nanosleep_time64 || r!=-ENOSYS) + return -r; + long long extra = s - CLAMP(s); + long ts32[2] = { CLAMP(s), ns }; + if (clk == CLOCK_REALTIME && !flags) + r = __syscall_cp(SYS_nanosleep, &ts32, &ts32); + else + r = __syscall_cp(SYS_clock_nanosleep, clk, flags, &ts32, &ts32); + if (r==-EINTR && rem && !(flags & TIMER_ABSTIME)) { + rem->tv_sec = ts32[0] + extra; + rem->tv_nsec = ts32[1]; + } + return -r; +#else + if (clk == CLOCK_REALTIME && !flags) + return -__syscall_cp(SYS_nanosleep, req, rem); + return -__syscall_cp(SYS_clock_nanosleep, clk, flags, req, rem); +#endif +} + +weak_alias(__clock_nanosleep, clock_nanosleep); diff --git a/vendor/modernc.org/libc/musl/src/time/clock_settime.c b/vendor/modernc.org/libc/musl/src/time/clock_settime.c new file mode 100644 index 000000000..1004ed152 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/clock_settime.c @@ -0,0 +1,24 @@ +#include +#include +#include "syscall.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) + +int clock_settime(clockid_t clk, const struct timespec *ts) +{ +#ifdef SYS_clock_settime64 + time_t s = ts->tv_sec; + long ns = ts->tv_nsec; + int r = -ENOSYS; + if (SYS_clock_settime == SYS_clock_settime64 || !IS32BIT(s)) + r = __syscall(SYS_clock_settime64, clk, + ((long long[]){s, ns})); + if (SYS_clock_settime == SYS_clock_settime64 || r!=-ENOSYS) + return __syscall_ret(r); + if (!IS32BIT(s)) + return __syscall_ret(-ENOTSUP); + return syscall(SYS_clock_settime, clk, ((long[]){s, ns})); +#else + return syscall(SYS_clock_settime, clk, ts); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/time/ctime.c b/vendor/modernc.org/libc/musl/src/time/ctime.c new file mode 100644 index 000000000..360293151 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/ctime.c @@ -0,0 +1,8 @@ +#include + +char *ctime(const time_t *t) +{ + struct tm *tm = localtime(t); + if (!tm) return 0; + return asctime(tm); +} diff --git a/vendor/modernc.org/libc/musl/src/time/ctime_r.c b/vendor/modernc.org/libc/musl/src/time/ctime_r.c new file mode 100644 index 000000000..3e24aa681 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/ctime_r.c @@ -0,0 +1,7 @@ +#include + +char *ctime_r(const time_t *t, char *buf) +{ + struct tm tm, *tm_p = localtime_r(t, &tm); + return tm_p ? asctime_r(tm_p, buf) : 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/difftime.c b/vendor/modernc.org/libc/musl/src/time/difftime.c new file mode 100644 index 000000000..80a18cc0b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/difftime.c @@ -0,0 +1,6 @@ +#include + +double difftime(time_t t1, time_t t0) +{ + return t1-t0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/ftime.c b/vendor/modernc.org/libc/musl/src/time/ftime.c new file mode 100644 index 000000000..a1734d0f9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/ftime.c @@ -0,0 +1,12 @@ +#include +#include + +int ftime(struct timeb *tp) +{ + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + tp->time = ts.tv_sec; + tp->millitm = ts.tv_nsec / 1000000; + tp->timezone = tp->dstflag = 0; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/getdate.c b/vendor/modernc.org/libc/musl/src/time/getdate.c new file mode 100644 index 000000000..420cd8e41 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/getdate.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include + +int getdate_err; + +struct tm *getdate(const char *s) +{ + static struct tm tmbuf; + struct tm *ret = 0; + char *datemsk = getenv("DATEMSK"); + FILE *f = 0; + char fmt[100], *p; + int cs; + + pthread_setcancelstate(PTHREAD_CANCEL_DEFERRED, &cs); + + if (!datemsk) { + getdate_err = 1; + goto out; + } + + f = fopen(datemsk, "rbe"); + if (!f) { + if (errno == ENOMEM) getdate_err = 6; + else getdate_err = 2; + goto out; + } + + while (fgets(fmt, sizeof fmt, f)) { + p = strptime(s, fmt, &tmbuf); + if (p && !*p) { + ret = &tmbuf; + goto out; + } + } + + if (ferror(f)) getdate_err = 5; + else getdate_err = 7; +out: + if (f) fclose(f); + pthread_setcancelstate(cs, 0); + return ret; +} diff --git a/vendor/modernc.org/libc/musl/src/time/gettimeofday.c b/vendor/modernc.org/libc/musl/src/time/gettimeofday.c new file mode 100644 index 000000000..691f8e904 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/gettimeofday.c @@ -0,0 +1,13 @@ +#include +#include +#include "syscall.h" + +int gettimeofday(struct timeval *restrict tv, void *restrict tz) +{ + struct timespec ts; + if (!tv) return 0; + clock_gettime(CLOCK_REALTIME, &ts); + tv->tv_sec = ts.tv_sec; + tv->tv_usec = (int)ts.tv_nsec / 1000; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/gmtime.c b/vendor/modernc.org/libc/musl/src/time/gmtime.c new file mode 100644 index 000000000..6320b6377 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/gmtime.c @@ -0,0 +1,8 @@ +#include "time_impl.h" +#include + +struct tm *gmtime(const time_t *t) +{ + static struct tm tm; + return __gmtime_r(t, &tm); +} diff --git a/vendor/modernc.org/libc/musl/src/time/gmtime_r.c b/vendor/modernc.org/libc/musl/src/time/gmtime_r.c new file mode 100644 index 000000000..22aec2c2e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/gmtime_r.c @@ -0,0 +1,16 @@ +#include "time_impl.h" +#include + +struct tm *__gmtime_r(const time_t *restrict t, struct tm *restrict tm) +{ + if (__secs_to_tm(*t, tm) < 0) { + errno = EOVERFLOW; + return 0; + } + tm->tm_isdst = 0; + tm->__tm_gmtoff = 0; + tm->__tm_zone = __utc; + return tm; +} + +weak_alias(__gmtime_r, gmtime_r); diff --git a/vendor/modernc.org/libc/musl/src/time/localtime.c b/vendor/modernc.org/libc/musl/src/time/localtime.c new file mode 100644 index 000000000..521042323 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/localtime.c @@ -0,0 +1,7 @@ +#include "time_impl.h" + +struct tm *localtime(const time_t *t) +{ + static struct tm tm; + return __localtime_r(t, &tm); +} diff --git a/vendor/modernc.org/libc/musl/src/time/localtime_r.c b/vendor/modernc.org/libc/musl/src/time/localtime_r.c new file mode 100644 index 000000000..1a15b314d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/localtime_r.c @@ -0,0 +1,21 @@ +#include "time_impl.h" +#include +#include + +struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) +{ + /* Reject time_t values whose year would overflow int because + * __secs_to_zone cannot safely handle them. */ + if (*t < INT_MIN * 31622400LL || *t > INT_MAX * 31622400LL) { + errno = EOVERFLOW; + return 0; + } + __secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone); + if (__secs_to_tm((long long)*t + tm->__tm_gmtoff, tm) < 0) { + errno = EOVERFLOW; + return 0; + } + return tm; +} + +weak_alias(__localtime_r, localtime_r); diff --git a/vendor/modernc.org/libc/musl/src/time/mktime.c b/vendor/modernc.org/libc/musl/src/time/mktime.c new file mode 100644 index 000000000..bad3f0765 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/mktime.c @@ -0,0 +1,28 @@ +#include "time_impl.h" +#include + +time_t mktime(struct tm *tm) +{ + struct tm new; + long opp; + long long t = __tm_to_secs(tm); + + __secs_to_zone(t, 1, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone); + + if (tm->tm_isdst>=0 && new.tm_isdst!=tm->tm_isdst) + t -= opp - new.__tm_gmtoff; + + t -= new.__tm_gmtoff; + if ((time_t)t != t) goto error; + + __secs_to_zone(t, 0, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone); + + if (__secs_to_tm(t + new.__tm_gmtoff, &new) < 0) goto error; + + *tm = new; + return t; + +error: + errno = EOVERFLOW; + return -1; +} diff --git a/vendor/modernc.org/libc/musl/src/time/nanosleep.c b/vendor/modernc.org/libc/musl/src/time/nanosleep.c new file mode 100644 index 000000000..bc9f7895f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/nanosleep.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int nanosleep(const struct timespec *req, struct timespec *rem) +{ + return __syscall_ret(-__clock_nanosleep(CLOCK_REALTIME, 0, req, rem)); +} diff --git a/vendor/modernc.org/libc/musl/src/time/strftime.c b/vendor/modernc.org/libc/musl/src/time/strftime.c new file mode 100644 index 000000000..cc53d5369 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/strftime.c @@ -0,0 +1,281 @@ +#include +#include +#include +#include +#include +#include +#include +#include "locale_impl.h" +#include "time_impl.h" + +static int is_leap(int y) +{ + /* Avoid overflow */ + if (y>INT_MAX-1900) y -= 2000; + y += 1900; + return !(y%4) && ((y%100) || !(y%400)); +} + +static int week_num(const struct tm *tm) +{ + int val = (tm->tm_yday + 7U - (tm->tm_wday+6U)%7) / 7; + /* If 1 Jan is just 1-3 days past Monday, + * the previous week is also in this year. */ + if ((tm->tm_wday + 371U - tm->tm_yday - 2) % 7 <= 2) + val++; + if (!val) { + val = 52; + /* If 31 December of prev year a Thursday, + * or Friday of a leap year, then the + * prev year has 53 weeks. */ + int dec31 = (tm->tm_wday + 7U - tm->tm_yday - 1) % 7; + if (dec31 == 4 || (dec31 == 5 && is_leap(tm->tm_year%400-1))) + val++; + } else if (val == 53) { + /* If 1 January is not a Thursday, and not + * a Wednesday of a leap year, then this + * year has only 52 weeks. */ + int jan1 = (tm->tm_wday + 371U - tm->tm_yday) % 7; + if (jan1 != 4 && (jan1 != 3 || !is_leap(tm->tm_year))) + val = 1; + } + return val; +} + +const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc, int pad) +{ + nl_item item; + long long val; + const char *fmt = "-"; + int width = 2, def_pad = '0'; + + switch (f) { + case 'a': + if (tm->tm_wday > 6U) goto string; + item = ABDAY_1 + tm->tm_wday; + goto nl_strcat; + case 'A': + if (tm->tm_wday > 6U) goto string; + item = DAY_1 + tm->tm_wday; + goto nl_strcat; + case 'h': + case 'b': + if (tm->tm_mon > 11U) goto string; + item = ABMON_1 + tm->tm_mon; + goto nl_strcat; + case 'B': + if (tm->tm_mon > 11U) goto string; + item = MON_1 + tm->tm_mon; + goto nl_strcat; + case 'c': + item = D_T_FMT; + goto nl_strftime; + case 'C': + val = (1900LL+tm->tm_year) / 100; + goto number; + case 'e': + def_pad = '_'; + case 'd': + val = tm->tm_mday; + goto number; + case 'D': + fmt = "%m/%d/%y"; + goto recu_strftime; + case 'F': + fmt = "%Y-%m-%d"; + goto recu_strftime; + case 'g': + case 'G': + val = tm->tm_year + 1900LL; + if (tm->tm_yday < 3 && week_num(tm) != 1) val--; + else if (tm->tm_yday > 360 && week_num(tm) == 1) val++; + if (f=='g') val %= 100; + else width = 4; + goto number; + case 'H': + val = tm->tm_hour; + goto number; + case 'I': + val = tm->tm_hour; + if (!val) val = 12; + else if (val > 12) val -= 12; + goto number; + case 'j': + val = tm->tm_yday+1; + width = 3; + goto number; + case 'm': + val = tm->tm_mon+1; + goto number; + case 'M': + val = tm->tm_min; + goto number; + case 'n': + *l = 1; + return "\n"; + case 'p': + item = tm->tm_hour >= 12 ? PM_STR : AM_STR; + goto nl_strcat; + case 'r': + item = T_FMT_AMPM; + goto nl_strftime; + case 'R': + fmt = "%H:%M"; + goto recu_strftime; + case 's': + val = __tm_to_secs(tm) - tm->__tm_gmtoff; + width = 1; + goto number; + case 'S': + val = tm->tm_sec; + goto number; + case 't': + *l = 1; + return "\t"; + case 'T': + fmt = "%H:%M:%S"; + goto recu_strftime; + case 'u': + val = tm->tm_wday ? tm->tm_wday : 7; + width = 1; + goto number; + case 'U': + val = (tm->tm_yday + 7U - tm->tm_wday) / 7; + goto number; + case 'W': + val = (tm->tm_yday + 7U - (tm->tm_wday+6U)%7) / 7; + goto number; + case 'V': + val = week_num(tm); + goto number; + case 'w': + val = tm->tm_wday; + width = 1; + goto number; + case 'x': + item = D_FMT; + goto nl_strftime; + case 'X': + item = T_FMT; + goto nl_strftime; + case 'y': + val = (tm->tm_year + 1900LL) % 100; + if (val < 0) val = -val; + goto number; + case 'Y': + val = tm->tm_year + 1900LL; + if (val >= 10000) { + *l = snprintf(*s, sizeof *s, "+%lld", val); + return *s; + } + width = 4; + goto number; + case 'z': + if (tm->tm_isdst < 0) { + *l = 0; + return ""; + } + *l = snprintf(*s, sizeof *s, "%+.4ld", + tm->__tm_gmtoff/3600*100 + tm->__tm_gmtoff%3600/60); + return *s; + case 'Z': + if (tm->tm_isdst < 0) { + *l = 0; + return ""; + } + fmt = __tm_to_tzname(tm); + goto string; + case '%': + *l = 1; + return "%"; + default: + return 0; + } +number: + switch (pad ? pad : def_pad) { + case '-': *l = snprintf(*s, sizeof *s, "%lld", val); break; + case '_': *l = snprintf(*s, sizeof *s, "%*lld", width, val); break; + case '0': + default: *l = snprintf(*s, sizeof *s, "%0*lld", width, val); break; + } + return *s; +nl_strcat: + fmt = __nl_langinfo_l(item, loc); +string: + *l = strlen(fmt); + return fmt; +nl_strftime: + fmt = __nl_langinfo_l(item, loc); +recu_strftime: + *l = __strftime_l(*s, sizeof *s, fmt, tm, loc); + if (!*l) return 0; + return *s; +} + +size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t loc) +{ + size_t l, k; + char buf[100]; + char *p; + const char *t; + int pad, plus; + unsigned long width; + for (l=0; ltm_year < -1900) { + s[l++] = '-'; + width--; + } else if (plus && d+(width-k) >= (*p=='C'?3:5)) { + s[l++] = '+'; + width--; + } + for (; width > k && l < n; width--) + s[l++] = '0'; + } + if (k > n-l) k = n-l; + memcpy(s+l, t, k); + l += k; + } + if (n) { + if (l==n) l=n-1; + s[l] = 0; + } + return 0; +} + +size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm) +{ + return __strftime_l(s, n, f, tm, CURRENT_LOCALE); +} + +weak_alias(__strftime_l, strftime_l); diff --git a/vendor/modernc.org/libc/musl/src/time/strptime.c b/vendor/modernc.org/libc/musl/src/time/strptime.c new file mode 100644 index 000000000..c54a0d8c4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/strptime.c @@ -0,0 +1,206 @@ +#include +#include +#include +#include +#include +#include +#include + +char *strptime(const char *restrict s, const char *restrict f, struct tm *restrict tm) +{ + int i, w, neg, adj, min, range, *dest, dummy; + const char *ex; + size_t len; + int want_century = 0, century = 0, relyear = 0; + while (*f) { + if (*f != '%') { + if (isspace(*f)) for (; *s && isspace(*s); s++); + else if (*s != *f) return 0; + else s++; + f++; + continue; + } + f++; + if (*f == '+') f++; + if (isdigit(*f)) { + char *new_f; + w=strtoul(f, &new_f, 10); + f = new_f; + } else { + w=-1; + } + adj=0; + switch (*f++) { + case 'a': case 'A': + dest = &tm->tm_wday; + min = ABDAY_1; + range = 7; + goto symbolic_range; + case 'b': case 'B': case 'h': + dest = &tm->tm_mon; + min = ABMON_1; + range = 12; + goto symbolic_range; + case 'c': + s = strptime(s, nl_langinfo(D_T_FMT), tm); + if (!s) return 0; + break; + case 'C': + dest = ¢ury; + if (w<0) w=2; + want_century |= 2; + goto numeric_digits; + case 'd': case 'e': + dest = &tm->tm_mday; + min = 1; + range = 31; + goto numeric_range; + case 'D': + s = strptime(s, "%m/%d/%y", tm); + if (!s) return 0; + break; + case 'H': + dest = &tm->tm_hour; + min = 0; + range = 24; + goto numeric_range; + case 'I': + dest = &tm->tm_hour; + min = 1; + range = 12; + goto numeric_range; + case 'j': + dest = &tm->tm_yday; + min = 1; + range = 366; + adj = 1; + goto numeric_range; + case 'm': + dest = &tm->tm_mon; + min = 1; + range = 12; + adj = 1; + goto numeric_range; + case 'M': + dest = &tm->tm_min; + min = 0; + range = 60; + goto numeric_range; + case 'n': case 't': + for (; *s && isspace(*s); s++); + break; + case 'p': + ex = nl_langinfo(AM_STR); + len = strlen(ex); + if (!strncasecmp(s, ex, len)) { + tm->tm_hour %= 12; + s += len; + break; + } + ex = nl_langinfo(PM_STR); + len = strlen(ex); + if (!strncasecmp(s, ex, len)) { + tm->tm_hour %= 12; + tm->tm_hour += 12; + s += len; + break; + } + return 0; + case 'r': + s = strptime(s, nl_langinfo(T_FMT_AMPM), tm); + if (!s) return 0; + break; + case 'R': + s = strptime(s, "%H:%M", tm); + if (!s) return 0; + break; + case 'S': + dest = &tm->tm_sec; + min = 0; + range = 61; + goto numeric_range; + case 'T': + s = strptime(s, "%H:%M:%S", tm); + if (!s) return 0; + break; + case 'U': + case 'W': + /* Throw away result, for now. (FIXME?) */ + dest = &dummy; + min = 0; + range = 54; + goto numeric_range; + case 'w': + dest = &tm->tm_wday; + min = 0; + range = 7; + goto numeric_range; + case 'x': + s = strptime(s, nl_langinfo(D_FMT), tm); + if (!s) return 0; + break; + case 'X': + s = strptime(s, nl_langinfo(T_FMT), tm); + if (!s) return 0; + break; + case 'y': + dest = &relyear; + w = 2; + want_century |= 1; + goto numeric_digits; + case 'Y': + dest = &tm->tm_year; + if (w<0) w=4; + adj = 1900; + want_century = 0; + goto numeric_digits; + case '%': + if (*s++ != '%') return 0; + break; + default: + return 0; + numeric_range: + if (!isdigit(*s)) return 0; + *dest = 0; + for (i=1; i<=min+range && isdigit(*s); i*=10) + *dest = *dest * 10 + *s++ - '0'; + if (*dest - min >= (unsigned)range) return 0; + *dest -= adj; + switch((char *)dest - (char *)tm) { + case offsetof(struct tm, tm_yday): + ; + } + goto update; + numeric_digits: + neg = 0; + if (*s == '+') s++; + else if (*s == '-') neg=1, s++; + if (!isdigit(*s)) return 0; + for (*dest=i=0; i=0; i--) { + ex = nl_langinfo(min+i); + len = strlen(ex); + if (strncasecmp(s, ex, len)) continue; + s += len; + *dest = i % range; + break; + } + if (i<0) return 0; + goto update; + update: + //FIXME + ; + } + } + if (want_century) { + tm->tm_year = relyear; + if (want_century & 2) tm->tm_year += century * 100 - 1900; + else if (tm->tm_year <= 68) tm->tm_year += 100; + } + return (char *)s; +} diff --git a/vendor/modernc.org/libc/musl/src/time/time.c b/vendor/modernc.org/libc/musl/src/time/time.c new file mode 100644 index 000000000..ad0480f9e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/time.c @@ -0,0 +1,10 @@ +#include +#include "syscall.h" + +time_t time(time_t *t) +{ + struct timespec ts; + __clock_gettime(CLOCK_REALTIME, &ts); + if (t) *t = ts.tv_sec; + return ts.tv_sec; +} diff --git a/vendor/modernc.org/libc/musl/src/time/time_impl.h b/vendor/modernc.org/libc/musl/src/time/time_impl.h new file mode 100644 index 000000000..f26d80053 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/time_impl.h @@ -0,0 +1,11 @@ +#include + +hidden int __days_in_month(int, int); +hidden int __month_to_secs(int, int); +hidden long long __year_to_secs(long long, int *); +hidden long long __tm_to_secs(const struct tm *); +hidden const char *__tm_to_tzname(const struct tm *); +hidden int __secs_to_tm(long long, struct tm *); +hidden void __secs_to_zone(long long, int, int *, long *, long *, const char **); +hidden const char *__strftime_fmt_1(char (*)[100], size_t *, int, const struct tm *, locale_t, int); +extern hidden const char __utc[]; diff --git a/vendor/modernc.org/libc/musl/src/time/timegm.c b/vendor/modernc.org/libc/musl/src/time/timegm.c new file mode 100644 index 000000000..4e5907d7f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timegm.c @@ -0,0 +1,18 @@ +#define _GNU_SOURCE +#include "time_impl.h" +#include + +time_t timegm(struct tm *tm) +{ + struct tm new; + long long t = __tm_to_secs(tm); + if (__secs_to_tm(t, &new) < 0) { + errno = EOVERFLOW; + return -1; + } + *tm = new; + tm->tm_isdst = 0; + tm->__tm_gmtoff = 0; + tm->__tm_zone = __utc; + return t; +} diff --git a/vendor/modernc.org/libc/musl/src/time/timer_create.c b/vendor/modernc.org/libc/musl/src/time/timer_create.c new file mode 100644 index 000000000..455d49fc5 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timer_create.c @@ -0,0 +1,133 @@ +#include +#include +#include +#include "pthread_impl.h" + +struct ksigevent { + union sigval sigev_value; + int sigev_signo; + int sigev_notify; + int sigev_tid; +}; + +struct start_args { + pthread_barrier_t b; + struct sigevent *sev; +}; + +static void dummy_0() +{ +} +weak_alias(dummy_0, __pthread_tsd_run_dtors); + +static void cleanup_fromsig(void *p) +{ + pthread_t self = __pthread_self(); + __pthread_tsd_run_dtors(); + self->cancel = 0; + self->cancelbuf = 0; + self->canceldisable = 0; + self->cancelasync = 0; + __reset_tls(); + longjmp(p, 1); +} + +static void timer_handler(int sig, siginfo_t *si, void *ctx) +{ +} + +static void install_handler() +{ + struct sigaction sa = { + .sa_sigaction = timer_handler, + .sa_flags = SA_SIGINFO | SA_RESTART + }; + __libc_sigaction(SIGTIMER, &sa, 0); +} + +static void *start(void *arg) +{ + pthread_t self = __pthread_self(); + struct start_args *args = arg; + jmp_buf jb; + + void (*notify)(union sigval) = args->sev->sigev_notify_function; + union sigval val = args->sev->sigev_value; + + pthread_barrier_wait(&args->b); + for (;;) { + siginfo_t si; + while (sigwaitinfo(SIGTIMER_SET, &si) < 0); + if (si.si_code == SI_TIMER && !setjmp(jb)) { + pthread_cleanup_push(cleanup_fromsig, jb); + notify(val); + pthread_cleanup_pop(1); + } + if (self->timer_id < 0) break; + } + __syscall(SYS_timer_delete, self->timer_id & INT_MAX); + return 0; +} + +int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict res) +{ + static pthread_once_t once = PTHREAD_ONCE_INIT; + pthread_t td; + pthread_attr_t attr; + int r; + struct start_args args; + struct ksigevent ksev, *ksevp=0; + int timerid; + sigset_t set; + + switch (evp ? evp->sigev_notify : SIGEV_SIGNAL) { + case SIGEV_NONE: + case SIGEV_SIGNAL: + if (evp) { + ksev.sigev_value = evp->sigev_value; + ksev.sigev_signo = evp->sigev_signo; + ksev.sigev_notify = evp->sigev_notify; + ksev.sigev_tid = 0; + ksevp = &ksev; + } + if (syscall(SYS_timer_create, clk, ksevp, &timerid) < 0) + return -1; + *res = (void *)(intptr_t)timerid; + break; + case SIGEV_THREAD: + pthread_once(&once, install_handler); + if (evp->sigev_notify_attributes) + attr = *evp->sigev_notify_attributes; + else + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + pthread_barrier_init(&args.b, 0, 2); + args.sev = evp; + + __block_app_sigs(&set); + __syscall(SYS_rt_sigprocmask, SIG_BLOCK, SIGTIMER_SET, 0, _NSIG/8); + r = pthread_create(&td, &attr, start, &args); + __restore_sigs(&set); + if (r) { + errno = r; + return -1; + } + + ksev.sigev_value.sival_ptr = 0; + ksev.sigev_signo = SIGTIMER; + ksev.sigev_notify = 4; /* SIGEV_THREAD_ID */ + ksev.sigev_tid = td->tid; + if (syscall(SYS_timer_create, clk, &ksev, &timerid) < 0) + timerid = -1; + td->timer_id = timerid; + pthread_barrier_wait(&args.b); + if (timerid < 0) return -1; + *res = (void *)(INTPTR_MIN | (uintptr_t)td>>1); + break; + default: + errno = EINVAL; + return -1; + } + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/time/timer_delete.c b/vendor/modernc.org/libc/musl/src/time/timer_delete.c new file mode 100644 index 000000000..b0bfac096 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timer_delete.c @@ -0,0 +1,14 @@ +#include +#include +#include "pthread_impl.h" + +int timer_delete(timer_t t) +{ + if ((intptr_t)t < 0) { + pthread_t td = (void *)((uintptr_t)t << 1); + a_store(&td->timer_id, td->timer_id | INT_MIN); + __syscall(SYS_tkill, td->tid, SIGTIMER); + return 0; + } + return __syscall(SYS_timer_delete, t); +} diff --git a/vendor/modernc.org/libc/musl/src/time/timer_getoverrun.c b/vendor/modernc.org/libc/musl/src/time/timer_getoverrun.c new file mode 100644 index 000000000..e7f891e40 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timer_getoverrun.c @@ -0,0 +1,12 @@ +#include +#include +#include "pthread_impl.h" + +int timer_getoverrun(timer_t t) +{ + if ((intptr_t)t < 0) { + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } + return syscall(SYS_timer_getoverrun, t); +} diff --git a/vendor/modernc.org/libc/musl/src/time/timer_gettime.c b/vendor/modernc.org/libc/musl/src/time/timer_gettime.c new file mode 100644 index 000000000..21c9d32c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timer_gettime.c @@ -0,0 +1,28 @@ +#include +#include +#include "pthread_impl.h" + +int timer_gettime(timer_t t, struct itimerspec *val) +{ + if ((intptr_t)t < 0) { + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } +#ifdef SYS_timer_gettime64 + int r = -ENOSYS; + if (sizeof(time_t) > 4) + r = __syscall(SYS_timer_gettime64, t, val); + if (SYS_timer_gettime == SYS_timer_gettime64 || r!=-ENOSYS) + return __syscall_ret(r); + long val32[4]; + r = __syscall(SYS_timer_gettime, t, val32); + if (!r) { + val->it_interval.tv_sec = val32[0]; + val->it_interval.tv_nsec = val32[1]; + val->it_value.tv_sec = val32[2]; + val->it_value.tv_nsec = val32[3]; + } + return __syscall_ret(r); +#endif + return syscall(SYS_timer_gettime, t, val); +} diff --git a/vendor/modernc.org/libc/musl/src/time/timer_settime.c b/vendor/modernc.org/libc/musl/src/time/timer_settime.c new file mode 100644 index 000000000..373f00ced --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timer_settime.c @@ -0,0 +1,37 @@ +#include +#include +#include "pthread_impl.h" + +#define IS32BIT(x) !((x)+0x80000000ULL>>32) + +int timer_settime(timer_t t, int flags, const struct itimerspec *restrict val, struct itimerspec *restrict old) +{ + if ((intptr_t)t < 0) { + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } +#ifdef SYS_timer_settime64 + time_t is = val->it_interval.tv_sec, vs = val->it_value.tv_sec; + long ins = val->it_interval.tv_nsec, vns = val->it_value.tv_nsec; + int r = -ENOSYS; + if (SYS_timer_settime == SYS_timer_settime64 + || !IS32BIT(is) || !IS32BIT(vs) || (sizeof(time_t)>4 && old)) + r = __syscall(SYS_timer_settime64, t, flags, + ((long long[]){is, ins, vs, vns}), old); + if (SYS_timer_settime == SYS_timer_settime64 || r!=-ENOSYS) + return __syscall_ret(r); + if (!IS32BIT(is) || !IS32BIT(vs)) + return __syscall_ret(-ENOTSUP); + long old32[4]; + r = __syscall(SYS_timer_settime, t, flags, + ((long[]){is, ins, vs, vns}), old32); + if (!r && old) { + old->it_interval.tv_sec = old32[0]; + old->it_interval.tv_nsec = old32[1]; + old->it_value.tv_sec = old32[2]; + old->it_value.tv_nsec = old32[3]; + } + return __syscall_ret(r); +#endif + return syscall(SYS_timer_settime, t, flags, val, old); +} diff --git a/vendor/modernc.org/libc/musl/src/time/times.c b/vendor/modernc.org/libc/musl/src/time/times.c new file mode 100644 index 000000000..c4a100f79 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/times.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +clock_t times(struct tms *tms) +{ + return __syscall(SYS_times, tms); +} diff --git a/vendor/modernc.org/libc/musl/src/time/timespec_get.c b/vendor/modernc.org/libc/musl/src/time/timespec_get.c new file mode 100644 index 000000000..40ea9c1c3 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/timespec_get.c @@ -0,0 +1,10 @@ +#include + +/* There is no other implemented value than TIME_UTC; all other values + * are considered erroneous. */ +int timespec_get(struct timespec * ts, int base) +{ + if (base != TIME_UTC) return 0; + int ret = __clock_gettime(CLOCK_REALTIME, ts); + return ret < 0 ? 0 : base; +} diff --git a/vendor/modernc.org/libc/musl/src/time/utime.c b/vendor/modernc.org/libc/musl/src/time/utime.c new file mode 100644 index 000000000..e7592b297 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/utime.c @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int utime(const char *path, const struct utimbuf *times) +{ + return utimensat(AT_FDCWD, path, times ? ((struct timespec [2]){ + { .tv_sec = times->actime }, { .tv_sec = times->modtime }}) + : 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/time/wcsftime.c b/vendor/modernc.org/libc/musl/src/time/wcsftime.c new file mode 100644 index 000000000..8e1437b33 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/time/wcsftime.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include "locale_impl.h" +#include "time_impl.h" + +size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, const struct tm *restrict tm, locale_t loc) +{ + size_t l, k; + char buf[100]; + wchar_t wbuf[100]; + wchar_t *p; + const char *t_mb; + const wchar_t *t; + int pad, plus; + unsigned long width; + for (l=0; ltm_year >= 10000-1900) + s[l++] = '+'; + else if (tm->tm_year < -1900) + s[l++] = '-'; + else + width++; + for (; width > k && l < n; width--) + s[l++] = '0'; + } + if (k >= n-l) k = n-l; + wmemcpy(s+l, t, k); + l += k; + } + if (n) { + if (l==n) l=n-1; + s[l] = 0; + } + return 0; +} + +size_t wcsftime(wchar_t *restrict wcs, size_t n, const wchar_t *restrict f, const struct tm *restrict tm) +{ + return __wcsftime_l(wcs, n, f, tm, CURRENT_LOCALE); +} + +weak_alias(__wcsftime_l, wcsftime_l); diff --git a/vendor/modernc.org/libc/musl/src/unistd/_exit.c b/vendor/modernc.org/libc/musl/src/unistd/_exit.c new file mode 100644 index 000000000..769948232 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/_exit.c @@ -0,0 +1,7 @@ +#include +#include + +_Noreturn void _exit(int status) +{ + _Exit(status); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/access.c b/vendor/modernc.org/libc/musl/src/unistd/access.c new file mode 100644 index 000000000..d6eed6839 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/access.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int access(const char *filename, int amode) +{ +#ifdef SYS_access + return syscall(SYS_access, filename, amode); +#else + return syscall(SYS_faccessat, AT_FDCWD, filename, amode, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/acct.c b/vendor/modernc.org/libc/musl/src/unistd/acct.c new file mode 100644 index 000000000..308ffc382 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/acct.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int acct(const char *filename) +{ + return syscall(SYS_acct, filename); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/alarm.c b/vendor/modernc.org/libc/musl/src/unistd/alarm.c new file mode 100644 index 000000000..a5e0c822a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/alarm.c @@ -0,0 +1,10 @@ +#include +#include +#include "syscall.h" + +unsigned alarm(unsigned seconds) +{ + struct itimerval it = { .it_value.tv_sec = seconds }, old = { 0 }; + setitimer(ITIMER_REAL, &it, &old); + return old.it_value.tv_sec + !!old.it_value.tv_usec; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/chdir.c b/vendor/modernc.org/libc/musl/src/unistd/chdir.c new file mode 100644 index 000000000..5ba78b631 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/chdir.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int chdir(const char *path) +{ + return syscall(SYS_chdir, path); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/chown.c b/vendor/modernc.org/libc/musl/src/unistd/chown.c new file mode 100644 index 000000000..14b032550 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/chown.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int chown(const char *path, uid_t uid, gid_t gid) +{ +#ifdef SYS_chown + return syscall(SYS_chown, path, uid, gid); +#else + return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/close.c b/vendor/modernc.org/libc/musl/src/unistd/close.c new file mode 100644 index 000000000..5b38e0194 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/close.c @@ -0,0 +1,18 @@ +#include +#include +#include "syscall.h" + +static int dummy(int fd) +{ + return fd; +} + +weak_alias(dummy, __aio_close); + +int close(int fd) +{ + fd = __aio_close(fd); + int r = __syscall_cp(SYS_close, fd); + if (r == -EINTR) r = 0; + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/ctermid.c b/vendor/modernc.org/libc/musl/src/unistd/ctermid.c new file mode 100644 index 000000000..1612770af --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/ctermid.c @@ -0,0 +1,7 @@ +#include +#include + +char *ctermid(char *s) +{ + return s ? strcpy(s, "/dev/tty") : "/dev/tty"; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/dup.c b/vendor/modernc.org/libc/musl/src/unistd/dup.c new file mode 100644 index 000000000..7fee01201 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/dup.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int dup(int fd) +{ + return syscall(SYS_dup, fd); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/dup2.c b/vendor/modernc.org/libc/musl/src/unistd/dup2.c new file mode 100644 index 000000000..8f43c6ddf --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/dup2.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include "syscall.h" + +int dup2(int old, int new) +{ + int r; +#ifdef SYS_dup2 + while ((r=__syscall(SYS_dup2, old, new))==-EBUSY); +#else + if (old==new) { + r = __syscall(SYS_fcntl, old, F_GETFD); + if (r >= 0) return old; + } else { + while ((r=__syscall(SYS_dup3, old, new, 0))==-EBUSY); + } +#endif + return __syscall_ret(r); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/dup3.c b/vendor/modernc.org/libc/musl/src/unistd/dup3.c new file mode 100644 index 000000000..f919f7912 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/dup3.c @@ -0,0 +1,24 @@ +#define _GNU_SOURCE +#include +#include +#include +#include "syscall.h" + +int __dup3(int old, int new, int flags) +{ + int r; +#ifdef SYS_dup2 + if (old==new) return __syscall_ret(-EINVAL); + if (flags & O_CLOEXEC) { + while ((r=__syscall(SYS_dup3, old, new, flags))==-EBUSY); + if (r!=-ENOSYS) return __syscall_ret(r); + } + while ((r=__syscall(SYS_dup2, old, new))==-EBUSY); + if (flags & O_CLOEXEC) __syscall(SYS_fcntl, new, F_SETFD, FD_CLOEXEC); +#else + while ((r=__syscall(SYS_dup3, old, new, flags))==-EBUSY); +#endif + return __syscall_ret(r); +} + +weak_alias(__dup3, dup3); diff --git a/vendor/modernc.org/libc/musl/src/unistd/faccessat.c b/vendor/modernc.org/libc/musl/src/unistd/faccessat.c new file mode 100644 index 000000000..76bbd4c72 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/faccessat.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include "syscall.h" +#include "pthread_impl.h" + +struct ctx { + int fd; + const char *filename; + int amode; + int p; +}; + +static int checker(void *p) +{ + struct ctx *c = p; + int ret; + if (__syscall(SYS_setregid, __syscall(SYS_getegid), -1) + || __syscall(SYS_setreuid, __syscall(SYS_geteuid), -1)) + __syscall(SYS_exit, 1); + ret = __syscall(SYS_faccessat, c->fd, c->filename, c->amode, 0); + __syscall(SYS_write, c->p, &ret, sizeof ret); + return 0; +} + +int faccessat(int fd, const char *filename, int amode, int flag) +{ + if (!flag || (flag==AT_EACCESS && getuid()==geteuid() && getgid()==getegid())) + return syscall(SYS_faccessat, fd, filename, amode, flag); + + if (flag != AT_EACCESS) + return __syscall_ret(-EINVAL); + + char stack[1024]; + sigset_t set; + pid_t pid; + int status; + int ret, p[2]; + + if (pipe2(p, O_CLOEXEC)) return __syscall_ret(-EBUSY); + struct ctx c = { .fd = fd, .filename = filename, .amode = amode, .p = p[1] }; + + __block_all_sigs(&set); + + pid = __clone(checker, stack+sizeof stack, 0, &c); + __syscall(SYS_close, p[1]); + + if (pid<0 || __syscall(SYS_read, p[0], &ret, sizeof ret) != sizeof(ret)) + ret = -EBUSY; + __syscall(SYS_close, p[0]); + __syscall(SYS_wait4, pid, &status, __WCLONE, 0); + + __restore_sigs(&set); + + return __syscall_ret(ret); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/fchdir.c b/vendor/modernc.org/libc/musl/src/unistd/fchdir.c new file mode 100644 index 000000000..dee45ba68 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/fchdir.c @@ -0,0 +1,15 @@ +#include +#include +#include +#include "syscall.h" + +int fchdir(int fd) +{ + int ret = __syscall(SYS_fchdir, fd); + if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) + return __syscall_ret(ret); + + char buf[15+3*sizeof(int)]; + __procfdname(buf, fd); + return syscall(SYS_chdir, buf); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/fchown.c b/vendor/modernc.org/libc/musl/src/unistd/fchown.c new file mode 100644 index 000000000..737b3672f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/fchown.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include "syscall.h" + +int fchown(int fd, uid_t uid, gid_t gid) +{ + int ret = __syscall(SYS_fchown, fd, uid, gid); + if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) + return __syscall_ret(ret); + + char buf[15+3*sizeof(int)]; + __procfdname(buf, fd); +#ifdef SYS_chown + return syscall(SYS_chown, buf, uid, gid); +#else + return syscall(SYS_fchownat, AT_FDCWD, buf, uid, gid, 0); +#endif + +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/fchownat.c b/vendor/modernc.org/libc/musl/src/unistd/fchownat.c new file mode 100644 index 000000000..62457a3ec --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/fchownat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag) +{ + return syscall(SYS_fchownat, fd, path, uid, gid, flag); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/fdatasync.c b/vendor/modernc.org/libc/musl/src/unistd/fdatasync.c new file mode 100644 index 000000000..3895ae530 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/fdatasync.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int fdatasync(int fd) +{ + return syscall_cp(SYS_fdatasync, fd); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/fsync.c b/vendor/modernc.org/libc/musl/src/unistd/fsync.c new file mode 100644 index 000000000..7a1c80b5d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/fsync.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int fsync(int fd) +{ + return syscall_cp(SYS_fsync, fd); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/ftruncate.c b/vendor/modernc.org/libc/musl/src/unistd/ftruncate.c new file mode 100644 index 000000000..b41be0fa6 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/ftruncate.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +int ftruncate(int fd, off_t length) +{ + return syscall(SYS_ftruncate, fd, __SYSCALL_LL_O(length)); +} + +weak_alias(ftruncate, ftruncate64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/getcwd.c b/vendor/modernc.org/libc/musl/src/unistd/getcwd.c new file mode 100644 index 000000000..f407ffe07 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getcwd.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include "syscall.h" + +char *getcwd(char *buf, size_t size) +{ + char tmp[buf ? 1 : PATH_MAX]; + if (!buf) { + buf = tmp; + size = sizeof tmp; + } else if (!size) { + errno = EINVAL; + return 0; + } + long ret = syscall(SYS_getcwd, buf, size); + if (ret < 0) + return 0; + if (ret == 0 || buf[0] != '/') { + errno = ENOENT; + return 0; + } + return buf == tmp ? strdup(buf) : buf; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getegid.c b/vendor/modernc.org/libc/musl/src/unistd/getegid.c new file mode 100644 index 000000000..6287490da --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getegid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +gid_t getegid(void) +{ + return __syscall(SYS_getegid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/geteuid.c b/vendor/modernc.org/libc/musl/src/unistd/geteuid.c new file mode 100644 index 000000000..88f2cd538 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/geteuid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +uid_t geteuid(void) +{ + return __syscall(SYS_geteuid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getgid.c b/vendor/modernc.org/libc/musl/src/unistd/getgid.c new file mode 100644 index 000000000..1c9fe7157 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getgid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +gid_t getgid(void) +{ + return __syscall(SYS_getgid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getgroups.c b/vendor/modernc.org/libc/musl/src/unistd/getgroups.c new file mode 100644 index 000000000..0e6e63af0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getgroups.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int getgroups(int count, gid_t list[]) +{ + return syscall(SYS_getgroups, count, list); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/gethostname.c b/vendor/modernc.org/libc/musl/src/unistd/gethostname.c new file mode 100644 index 000000000..633ef571a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/gethostname.c @@ -0,0 +1,13 @@ +#include +#include + +int gethostname(char *name, size_t len) +{ + size_t i; + struct utsname uts; + if (uname(&uts)) return -1; + if (len > sizeof uts.nodename) len = sizeof uts.nodename; + for (i=0; i +#include + +char *getlogin(void) +{ + return getenv("LOGNAME"); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getlogin_r.c b/vendor/modernc.org/libc/musl/src/unistd/getlogin_r.c new file mode 100644 index 000000000..53866c6dc --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getlogin_r.c @@ -0,0 +1,12 @@ +#include +#include +#include + +int getlogin_r(char *name, size_t size) +{ + char *logname = getlogin(); + if (!logname) return ENXIO; /* or...? */ + if (strlen(logname) >= size) return ERANGE; + strcpy(name, logname); + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getpgid.c b/vendor/modernc.org/libc/musl/src/unistd/getpgid.c new file mode 100644 index 000000000..d295bfd59 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getpgid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t getpgid(pid_t pid) +{ + return syscall(SYS_getpgid, pid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getpgrp.c b/vendor/modernc.org/libc/musl/src/unistd/getpgrp.c new file mode 100644 index 000000000..90e9bb07f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getpgrp.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t getpgrp(void) +{ + return __syscall(SYS_getpgid, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getpid.c b/vendor/modernc.org/libc/musl/src/unistd/getpid.c new file mode 100644 index 000000000..a6d4e6d1b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getpid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t getpid(void) +{ + return __syscall(SYS_getpid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getppid.c b/vendor/modernc.org/libc/musl/src/unistd/getppid.c new file mode 100644 index 000000000..05cade53b --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getppid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t getppid(void) +{ + return __syscall(SYS_getppid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getsid.c b/vendor/modernc.org/libc/musl/src/unistd/getsid.c new file mode 100644 index 000000000..93ba690e7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getsid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t getsid(pid_t pid) +{ + return syscall(SYS_getsid, pid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/getuid.c b/vendor/modernc.org/libc/musl/src/unistd/getuid.c new file mode 100644 index 000000000..61309d1b7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/getuid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +uid_t getuid(void) +{ + return __syscall(SYS_getuid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/isatty.c b/vendor/modernc.org/libc/musl/src/unistd/isatty.c new file mode 100644 index 000000000..75a9c186a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/isatty.c @@ -0,0 +1,13 @@ +#include +#include +#include +#include "syscall.h" + +int isatty(int fd) +{ + struct winsize wsz; + unsigned long r = syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); + if (r == 0) return 1; + if (errno != EBADF) errno = ENOTTY; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/lchown.c b/vendor/modernc.org/libc/musl/src/unistd/lchown.c new file mode 100644 index 000000000..ccd5ee025 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/lchown.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int lchown(const char *path, uid_t uid, gid_t gid) +{ +#ifdef SYS_lchown + return syscall(SYS_lchown, path, uid, gid); +#else + return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/link.c b/vendor/modernc.org/libc/musl/src/unistd/link.c new file mode 100644 index 000000000..feec18e53 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/link.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int link(const char *existing, const char *new) +{ +#ifdef SYS_link + return syscall(SYS_link, existing, new); +#else + return syscall(SYS_linkat, AT_FDCWD, existing, AT_FDCWD, new, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/linkat.c b/vendor/modernc.org/libc/musl/src/unistd/linkat.c new file mode 100644 index 000000000..6a9a0b775 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/linkat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int linkat(int fd1, const char *existing, int fd2, const char *new, int flag) +{ + return syscall(SYS_linkat, fd1, existing, fd2, new, flag); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/lseek.c b/vendor/modernc.org/libc/musl/src/unistd/lseek.c new file mode 100644 index 000000000..b4984f3e9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/lseek.c @@ -0,0 +1,15 @@ +#include +#include "syscall.h" + +off_t __lseek(int fd, off_t offset, int whence) +{ +#ifdef SYS__llseek + off_t result; + return syscall(SYS__llseek, fd, offset>>32, offset, &result, whence) ? -1 : result; +#else + return syscall(SYS_lseek, fd, offset, whence); +#endif +} + +weak_alias(__lseek, lseek); +weak_alias(__lseek, lseek64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/mipsn32/lseek.c b/vendor/modernc.org/libc/musl/src/unistd/mipsn32/lseek.c new file mode 100644 index 000000000..60e74a51f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/mipsn32/lseek.c @@ -0,0 +1,20 @@ +#include +#include "syscall.h" + +off_t __lseek(int fd, off_t offset, int whence) +{ + register long long r4 __asm__("$4") = fd; + register long long r5 __asm__("$5") = offset; + register long long r6 __asm__("$6") = whence; + register long long r7 __asm__("$7"); + register long long r2 __asm__("$2") = SYS_lseek; + __asm__ __volatile__ ( + "syscall" + : "+&r"(r2), "=r"(r7) + : "r"(r4), "r"(r5), "r"(r6) + : SYSCALL_CLOBBERLIST); + return r7 ? __syscall_ret(-r2) : r2; +} + +weak_alias(__lseek, lseek); +weak_alias(__lseek, lseek64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/nice.c b/vendor/modernc.org/libc/musl/src/unistd/nice.c new file mode 100644 index 000000000..6c25c8c32 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/nice.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include "syscall.h" + +int nice(int inc) +{ + int prio = inc; + // Only query old priority if it can affect the result. + // This also avoids issues with integer overflow. + if (inc > -2*NZERO && inc < 2*NZERO) + prio += getpriority(PRIO_PROCESS, 0); + if (prio > NZERO-1) prio = NZERO-1; + if (prio < -NZERO) prio = -NZERO; + return setpriority(PRIO_PROCESS, 0, prio) ? -1 : prio; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/pause.c b/vendor/modernc.org/libc/musl/src/unistd/pause.c new file mode 100644 index 000000000..90bbf4ca8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pause.c @@ -0,0 +1,11 @@ +#include +#include "syscall.h" + +int pause(void) +{ +#ifdef SYS_pause + return syscall_cp(SYS_pause); +#else + return syscall_cp(SYS_ppoll, 0, 0, 0, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/pipe.c b/vendor/modernc.org/libc/musl/src/unistd/pipe.c new file mode 100644 index 000000000..d07b8d24a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pipe.c @@ -0,0 +1,11 @@ +#include +#include "syscall.h" + +int pipe(int fd[2]) +{ +#ifdef SYS_pipe + return syscall(SYS_pipe, fd); +#else + return syscall(SYS_pipe2, fd, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/pipe2.c b/vendor/modernc.org/libc/musl/src/unistd/pipe2.c new file mode 100644 index 000000000..f24f74fb0 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pipe2.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include "syscall.h" + +int pipe2(int fd[2], int flag) +{ + if (!flag) return pipe(fd); + int ret = __syscall(SYS_pipe2, fd, flag); + if (ret != -ENOSYS) return __syscall_ret(ret); + ret = pipe(fd); + if (ret) return ret; + if (flag & O_CLOEXEC) { + __syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC); + __syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC); + } + if (flag & O_NONBLOCK) { + __syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK); + __syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK); + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/posix_close.c b/vendor/modernc.org/libc/musl/src/unistd/posix_close.c new file mode 100644 index 000000000..90f51a82e --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/posix_close.c @@ -0,0 +1,6 @@ +#include + +int posix_close(int fd, int flags) +{ + return close(fd); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/pread.c b/vendor/modernc.org/libc/musl/src/unistd/pread.c new file mode 100644 index 000000000..5681b045d --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pread.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +ssize_t pread(int fd, void *buf, size_t size, off_t ofs) +{ + return syscall_cp(SYS_pread, fd, buf, size, __SYSCALL_LL_PRW(ofs)); +} + +weak_alias(pread, pread64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/preadv.c b/vendor/modernc.org/libc/musl/src/unistd/preadv.c new file mode 100644 index 000000000..8376d60f2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/preadv.c @@ -0,0 +1,12 @@ +#define _BSD_SOURCE +#include +#include +#include "syscall.h" + +ssize_t preadv(int fd, const struct iovec *iov, int count, off_t ofs) +{ + return syscall_cp(SYS_preadv, fd, iov, count, + (long)(ofs), (long)(ofs>>32)); +} + +weak_alias(preadv, preadv64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/pwrite.c b/vendor/modernc.org/libc/musl/src/unistd/pwrite.c new file mode 100644 index 000000000..ca3765762 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pwrite.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +ssize_t pwrite(int fd, const void *buf, size_t size, off_t ofs) +{ + return syscall_cp(SYS_pwrite, fd, buf, size, __SYSCALL_LL_PRW(ofs)); +} + +weak_alias(pwrite, pwrite64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/pwritev.c b/vendor/modernc.org/libc/musl/src/unistd/pwritev.c new file mode 100644 index 000000000..f5a612c48 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/pwritev.c @@ -0,0 +1,12 @@ +#define _BSD_SOURCE +#include +#include +#include "syscall.h" + +ssize_t pwritev(int fd, const struct iovec *iov, int count, off_t ofs) +{ + return syscall_cp(SYS_pwritev, fd, iov, count, + (long)(ofs), (long)(ofs>>32)); +} + +weak_alias(pwritev, pwritev64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/read.c b/vendor/modernc.org/libc/musl/src/unistd/read.c new file mode 100644 index 000000000..f3589c05c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/read.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t read(int fd, void *buf, size_t count) +{ + return syscall_cp(SYS_read, fd, buf, count); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/readlink.c b/vendor/modernc.org/libc/musl/src/unistd/readlink.c new file mode 100644 index 000000000..a152d5249 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/readlink.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize) +{ +#ifdef SYS_readlink + return syscall(SYS_readlink, path, buf, bufsize); +#else + return syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/readlinkat.c b/vendor/modernc.org/libc/musl/src/unistd/readlinkat.c new file mode 100644 index 000000000..9af45cd5a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/readlinkat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize) +{ + return syscall(SYS_readlinkat, fd, path, buf, bufsize); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/readv.c b/vendor/modernc.org/libc/musl/src/unistd/readv.c new file mode 100644 index 000000000..91e6de816 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/readv.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t readv(int fd, const struct iovec *iov, int count) +{ + return syscall_cp(SYS_readv, fd, iov, count); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/renameat.c b/vendor/modernc.org/libc/musl/src/unistd/renameat.c new file mode 100644 index 000000000..c3b40a258 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/renameat.c @@ -0,0 +1,11 @@ +#include +#include "syscall.h" + +int renameat(int oldfd, const char *old, int newfd, const char *new) +{ +#ifdef SYS_renameat + return syscall(SYS_renameat, oldfd, old, newfd, new); +#else + return syscall(SYS_renameat2, oldfd, old, newfd, new, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/rmdir.c b/vendor/modernc.org/libc/musl/src/unistd/rmdir.c new file mode 100644 index 000000000..6825ffc83 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/rmdir.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int rmdir(const char *path) +{ +#ifdef SYS_rmdir + return syscall(SYS_rmdir, path); +#else + return syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setegid.c b/vendor/modernc.org/libc/musl/src/unistd/setegid.c new file mode 100644 index 000000000..e6da2573c --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setegid.c @@ -0,0 +1,8 @@ +#include +#include "libc.h" +#include "syscall.h" + +int setegid(gid_t egid) +{ + return __setxid(SYS_setresgid, -1, egid, -1); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/seteuid.c b/vendor/modernc.org/libc/musl/src/unistd/seteuid.c new file mode 100644 index 000000000..ef8b9df43 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/seteuid.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#include "libc.h" + +int seteuid(uid_t euid) +{ + return __setxid(SYS_setresuid, -1, euid, -1); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setgid.c b/vendor/modernc.org/libc/musl/src/unistd/setgid.c new file mode 100644 index 000000000..bae4616ad --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setgid.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#include "libc.h" + +int setgid(gid_t gid) +{ + return __setxid(SYS_setgid, gid, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setpgid.c b/vendor/modernc.org/libc/musl/src/unistd/setpgid.c new file mode 100644 index 000000000..061606951 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setpgid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int setpgid(pid_t pid, pid_t pgid) +{ + return syscall(SYS_setpgid, pid, pgid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setpgrp.c b/vendor/modernc.org/libc/musl/src/unistd/setpgrp.c new file mode 100644 index 000000000..a2a37f65f --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setpgrp.c @@ -0,0 +1,6 @@ +#include + +pid_t setpgrp(void) +{ + return setpgid(0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setregid.c b/vendor/modernc.org/libc/musl/src/unistd/setregid.c new file mode 100644 index 000000000..f5a8972ae --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setregid.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#include "libc.h" + +int setregid(gid_t rgid, gid_t egid) +{ + return __setxid(SYS_setregid, rgid, egid, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setresgid.c b/vendor/modernc.org/libc/musl/src/unistd/setresgid.c new file mode 100644 index 000000000..b9af540af --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setresgid.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" +#include "libc.h" + +int setresgid(gid_t rgid, gid_t egid, gid_t sgid) +{ + return __setxid(SYS_setresgid, rgid, egid, sgid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setresuid.c b/vendor/modernc.org/libc/musl/src/unistd/setresuid.c new file mode 100644 index 000000000..83692b4c9 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setresuid.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" +#include "libc.h" + +int setresuid(uid_t ruid, uid_t euid, uid_t suid) +{ + return __setxid(SYS_setresuid, ruid, euid, suid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setreuid.c b/vendor/modernc.org/libc/musl/src/unistd/setreuid.c new file mode 100644 index 000000000..3fcc59e29 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setreuid.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#include "libc.h" + +int setreuid(uid_t ruid, uid_t euid) +{ + return __setxid(SYS_setreuid, ruid, euid, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setsid.c b/vendor/modernc.org/libc/musl/src/unistd/setsid.c new file mode 100644 index 000000000..609bbe4ac --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setsid.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +pid_t setsid(void) +{ + return syscall(SYS_setsid); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setuid.c b/vendor/modernc.org/libc/musl/src/unistd/setuid.c new file mode 100644 index 000000000..602ecbbf4 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setuid.c @@ -0,0 +1,8 @@ +#include +#include "syscall.h" +#include "libc.h" + +int setuid(uid_t uid) +{ + return __setxid(SYS_setuid, uid, 0, 0); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/setxid.c b/vendor/modernc.org/libc/musl/src/unistd/setxid.c new file mode 100644 index 000000000..0239f8afa --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/setxid.c @@ -0,0 +1,39 @@ +#include +#include +#include "syscall.h" +#include "libc.h" +#include "pthread_impl.h" + +struct ctx { + int id, eid, sid; + int nr, err; +}; + +static void do_setxid(void *p) +{ + struct ctx *c = p; + if (c->err>0) return; + int ret = -__syscall(c->nr, c->id, c->eid, c->sid); + if (ret && !c->err) { + /* If one thread fails to set ids after another has already + * succeeded, forcibly killing the process is the only safe + * thing to do. State is inconsistent and dangerous. Use + * SIGKILL because it is uncatchable. */ + __block_all_sigs(0); + __syscall(SYS_kill, __syscall(SYS_getpid), SIGKILL); + } + c->err = ret; +} + +int __setxid(int nr, int id, int eid, int sid) +{ + /* err is initially nonzero so that failure of the first thread does not + * trigger the safety kill above. */ + struct ctx c = { .nr = nr, .id = id, .eid = eid, .sid = sid, .err = -1 }; + __synccall(do_setxid, &c); + if (c.err) { + if (c.err>0) errno = c.err; + return -1; + } + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/sleep.c b/vendor/modernc.org/libc/musl/src/unistd/sleep.c new file mode 100644 index 000000000..d64509413 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/sleep.c @@ -0,0 +1,10 @@ +#include +#include + +unsigned sleep(unsigned seconds) +{ + struct timespec tv = { .tv_sec = seconds, .tv_nsec = 0 }; + if (nanosleep(&tv, &tv)) + return tv.tv_sec; + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/symlink.c b/vendor/modernc.org/libc/musl/src/unistd/symlink.c new file mode 100644 index 000000000..0973d78a8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/symlink.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int symlink(const char *existing, const char *new) +{ +#ifdef SYS_symlink + return syscall(SYS_symlink, existing, new); +#else + return syscall(SYS_symlinkat, existing, AT_FDCWD, new); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/symlinkat.c b/vendor/modernc.org/libc/musl/src/unistd/symlinkat.c new file mode 100644 index 000000000..d1c59b4db --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/symlinkat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int symlinkat(const char *existing, int fd, const char *new) +{ + return syscall(SYS_symlinkat, existing, fd, new); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/sync.c b/vendor/modernc.org/libc/musl/src/unistd/sync.c new file mode 100644 index 000000000..f18765aa8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/sync.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +void sync(void) +{ + __syscall(SYS_sync); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/tcgetpgrp.c b/vendor/modernc.org/libc/musl/src/unistd/tcgetpgrp.c new file mode 100644 index 000000000..50080c7e8 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/tcgetpgrp.c @@ -0,0 +1,11 @@ +#include +#include +#include + +pid_t tcgetpgrp(int fd) +{ + int pgrp; + if (ioctl(fd, TIOCGPGRP, &pgrp) < 0) + return -1; + return pgrp; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/tcsetpgrp.c b/vendor/modernc.org/libc/musl/src/unistd/tcsetpgrp.c new file mode 100644 index 000000000..67c38cb45 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/tcsetpgrp.c @@ -0,0 +1,9 @@ +#include +#include +#include + +int tcsetpgrp(int fd, pid_t pgrp) +{ + int pgrp_int = pgrp; + return ioctl(fd, TIOCSPGRP, &pgrp_int); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/truncate.c b/vendor/modernc.org/libc/musl/src/unistd/truncate.c new file mode 100644 index 000000000..972968007 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/truncate.c @@ -0,0 +1,9 @@ +#include +#include "syscall.h" + +int truncate(const char *path, off_t length) +{ + return syscall(SYS_truncate, path, __SYSCALL_LL_O(length)); +} + +weak_alias(truncate, truncate64); diff --git a/vendor/modernc.org/libc/musl/src/unistd/ttyname.c b/vendor/modernc.org/libc/musl/src/unistd/ttyname.c new file mode 100644 index 000000000..0f3e11411 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/ttyname.c @@ -0,0 +1,14 @@ +#include +#include +#include + +char *ttyname(int fd) +{ + static char buf[TTY_NAME_MAX]; + int result; + if ((result = ttyname_r(fd, buf, sizeof buf))) { + errno = result; + return NULL; + } + return buf; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/ttyname_r.c b/vendor/modernc.org/libc/musl/src/unistd/ttyname_r.c new file mode 100644 index 000000000..82acb75e1 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/ttyname_r.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include "syscall.h" + +int ttyname_r(int fd, char *name, size_t size) +{ + struct stat st1, st2; + char procname[sizeof "/proc/self/fd/" + 3*sizeof(int) + 2]; + ssize_t l; + + if (!isatty(fd)) return errno; + + __procfdname(procname, fd); + l = readlink(procname, name, size); + + if (l < 0) return errno; + else if (l == size) return ERANGE; + + name[l] = 0; + + if (stat(name, &st1) || fstat(fd, &st2)) + return errno; + if (st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) + return ENODEV; + + return 0; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/ualarm.c b/vendor/modernc.org/libc/musl/src/unistd/ualarm.c new file mode 100644 index 000000000..2985855c7 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/ualarm.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include +#include + +unsigned ualarm(unsigned value, unsigned interval) +{ + struct itimerval it = { + .it_interval.tv_usec = interval, + .it_value.tv_usec = value + }, it_old; + setitimer(ITIMER_REAL, &it, &it_old); + return it_old.it_value.tv_sec*1000000 + it_old.it_value.tv_usec; +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/unlink.c b/vendor/modernc.org/libc/musl/src/unistd/unlink.c new file mode 100644 index 000000000..c40c28d50 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/unlink.c @@ -0,0 +1,12 @@ +#include +#include +#include "syscall.h" + +int unlink(const char *path) +{ +#ifdef SYS_unlink + return syscall(SYS_unlink, path); +#else + return syscall(SYS_unlinkat, AT_FDCWD, path, 0); +#endif +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/unlinkat.c b/vendor/modernc.org/libc/musl/src/unistd/unlinkat.c new file mode 100644 index 000000000..e0e25d22a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/unlinkat.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +int unlinkat(int fd, const char *path, int flag) +{ + return syscall(SYS_unlinkat, fd, path, flag); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/usleep.c b/vendor/modernc.org/libc/musl/src/unistd/usleep.c new file mode 100644 index 000000000..6c9665269 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/usleep.c @@ -0,0 +1,12 @@ +#define _GNU_SOURCE +#include +#include + +int usleep(unsigned useconds) +{ + struct timespec tv = { + .tv_sec = useconds/1000000, + .tv_nsec = (useconds%1000000)*1000 + }; + return nanosleep(&tv, &tv); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/write.c b/vendor/modernc.org/libc/musl/src/unistd/write.c new file mode 100644 index 000000000..8fd5bc5c2 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/write.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t write(int fd, const void *buf, size_t count) +{ + return syscall_cp(SYS_write, fd, buf, count); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/writev.c b/vendor/modernc.org/libc/musl/src/unistd/writev.c new file mode 100644 index 000000000..5a46c951a --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/writev.c @@ -0,0 +1,7 @@ +#include +#include "syscall.h" + +ssize_t writev(int fd, const struct iovec *iov, int count) +{ + return syscall_cp(SYS_writev, fd, iov, count); +} diff --git a/vendor/modernc.org/libc/musl/src/unistd/x32/lseek.c b/vendor/modernc.org/libc/musl/src/unistd/x32/lseek.c new file mode 100644 index 000000000..326364295 --- /dev/null +++ b/vendor/modernc.org/libc/musl/src/unistd/x32/lseek.c @@ -0,0 +1,15 @@ +#include +#include "syscall.h" + +off_t __lseek(int fd, off_t offset, int whence) +{ + off_t ret; + __asm__ __volatile__ ("syscall" + : "=a"(ret) + : "a"(SYS_lseek), "D"(fd), "S"(offset), "d"(whence) + : "rcx", "r11", "memory"); + return ret < 0 ? __syscall_ret(ret) : ret; +} + +weak_alias(__lseek, lseek); +weak_alias(__lseek, lseek64); diff --git a/vendor/modernc.org/libc/netbsd/ctype_.c b/vendor/modernc.org/libc/netbsd/ctype_.c new file mode 100644 index 000000000..b12c41a17 --- /dev/null +++ b/vendor/modernc.org/libc/netbsd/ctype_.c @@ -0,0 +1,160 @@ +/* $NetBSD: ctype_.c,v 1.20 2013/04/13 10:21:20 joerg Exp $ */ + +/* + * Copyright (c) 1989 The Regents of the University of California. + * All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +/*static char *sccsid = "from: @(#)ctype_.c 5.6 (Berkeley) 6/1/90";*/ +#else +__RCSID("$NetBSD: ctype_.c,v 1.20 2013/04/13 10:21:20 joerg Exp $"); +#endif +#endif /* LIBC_SCCS and not lint */ + +#include +#include +#include "ctype_local.h" + +#if EOF != -1 +#error "EOF != -1" +#endif + +#ifdef __BUILD_LEGACY +#define _C _COMPAT_C +#define _S _COMPAT_S +#define _U _COMPAT_U +#define _X _COMPAT_X +#define _L _COMPAT_L +#define _P _COMPAT_P +#define _B _COMPAT_B +#define _N _COMPAT_N + +const unsigned char _C_compat_bsdctype[1 + _CTYPE_NUM_CHARS] = { + 0, + _C, _C, _C, _C, _C, _C, _C, _C, + _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, + _C, _C, _C, _C, _C, _C, _C, _C, + _C, _C, _C, _C, _C, _C, _C, _C, + _S|_B, _P, _P, _P, _P, _P, _P, _P, + _P, _P, _P, _P, _P, _P, _P, _P, + _N, _N, _N, _N, _N, _N, _N, _N, + _N, _N, _P, _P, _P, _P, _P, _P, + _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, + _U, _U, _U, _U, _U, _U, _U, _U, + _U, _U, _U, _U, _U, _U, _U, _U, + _U, _U, _U, _P, _P, _P, _P, _P, + _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, + _L, _L, _L, _L, _L, _L, _L, _L, + _L, _L, _L, _L, _L, _L, _L, _L, + _L, _L, _L, _P, _P, _P, _P, _C +}; + +#undef _C +#undef _S +#undef _U +#undef _X +#undef _L +#undef _P +#undef _B +#undef _N + +#ifdef __weak_alias +__weak_alias(_C_ctype_, _C_compat_bsdctype) +#endif + +const unsigned char *_ctype_ = &_C_compat_bsdctype[0]; +#endif /* __BUILD_LEGACY */ + +#define _A _CTYPE_A +#define _BL _CTYPE_BL +#define _C _CTYPE_C +#define _D _CTYPE_D +#define _G _CTYPE_G +#define _L _CTYPE_L +#define _P _CTYPE_P +#define _R _CTYPE_R +#define _S _CTYPE_S +#define _U _CTYPE_U +#define _X _CTYPE_X + +const unsigned short _C_ctype_tab_[1 + _CTYPE_NUM_CHARS] = { + 0, + _C, _C, _C, _C, + _C, _C, _C, _C, + _C, _BL|_C|_S, _C|_S, _C|_S, + _C|_S, _C|_S, _C, _C, + _C, _C, _C, _C, + _C, _C, _C, _C, + _C, _C, _C, _C, + _C, _C, _C, _C, + _BL|_R|_S, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _D|_G|_R|_X, _D|_G|_R|_X, _D|_G|_R|_X, _D|_G|_R|_X, + _D|_G|_R|_X, _D|_G|_R|_X, _D|_G|_R|_X, _D|_G|_R|_X, + _D|_G|_R|_X, _D|_G|_R|_X, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _A|_G|_R|_U|_X, _A|_G|_R|_U|_X, _A|_G|_R|_U|_X, + _A|_G|_R|_U|_X, _A|_G|_R|_U|_X, _A|_G|_R|_U|_X, _A|_G|_R|_U, + _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, + _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, + _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, + _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, + _A|_G|_R|_U, _A|_G|_R|_U, _A|_G|_R|_U, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _G|_R|_P, + _G|_R|_P, _A|_G|_L|_R|_X, _A|_G|_L|_R|_X, _A|_G|_L|_R|_X, + _A|_G|_L|_R|_X, _A|_G|_L|_R|_X, _A|_G|_L|_R|_X, _A|_G|_L|_R, + _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, + _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, + _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, + _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, + _A|_G|_L|_R, _A|_G|_L|_R, _A|_G|_L|_R, _G|_R|_P, + _G|_R|_P, _G|_R|_P, _G|_R|_P, _C, +}; + +#undef _A +#undef _BL +#undef _C +#undef _D +#undef _G +#undef _L +#undef _P +#undef _R +#undef _S +#undef _U +#undef _X + +const unsigned short *_ctype_tab_ = &_C_ctype_tab_[0]; diff --git a/vendor/modernc.org/libc/netbsd/ctype_.cpp.c b/vendor/modernc.org/libc/netbsd/ctype_.cpp.c new file mode 100644 index 000000000..2879bee68 --- /dev/null +++ b/vendor/modernc.org/libc/netbsd/ctype_.cpp.c @@ -0,0 +1,2233 @@ +# 1 "ctype_.c" +# 1 "" +# 1 "" +# 1 "ctype_.c" +# 37 "ctype_.c" +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 63 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/amd64/cdefs.h" 1 3 4 +# 64 "/usr/include/sys/cdefs.h" 2 3 4 + +# 1 "/usr/include/sys/cdefs_elf.h" 1 3 4 +# 66 "/usr/include/sys/cdefs.h" 2 3 4 +# 629 "/usr/include/sys/cdefs.h" 3 4 + +# 629 "/usr/include/sys/cdefs.h" 3 4 +static __inline long long __zeroll(void) { return 0; } +static __inline unsigned long long __zeroull(void) { return 0; } +# 38 "ctype_.c" 2 +# 46 "ctype_.c" +# 1 "/usr/include/sys/ctype_bits.h" 1 3 4 +# 60 "/usr/include/sys/ctype_bits.h" 3 4 + +# 60 "/usr/include/sys/ctype_bits.h" 3 4 +#pragma GCC visibility push(default) +# 60 "/usr/include/sys/ctype_bits.h" 3 4 + +extern const unsigned short *_ctype_tab_; +extern const short *_tolower_tab_; +extern const short *_toupper_tab_; + +extern const unsigned short _C_ctype_tab_[]; +extern const short _C_toupper_tab_[]; +extern const short _C_tolower_tab_[]; + +# 68 "/usr/include/sys/ctype_bits.h" 3 4 +#pragma GCC visibility pop +# 68 "/usr/include/sys/ctype_bits.h" 3 4 + +# 47 "ctype_.c" 2 +# 1 "/usr/include/stdio.h" 1 3 4 +# 41 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/sys/featuretest.h" 1 3 4 +# 42 "/usr/include/stdio.h" 2 3 4 +# 1 "/usr/include/sys/ansi.h" 1 3 4 +# 35 "/usr/include/sys/ansi.h" 3 4 +# 1 "/usr/include/amd64/ansi.h" 1 3 4 + + +# 1 "/usr/include/sys/common_ansi.h" 1 3 4 +# 37 "/usr/include/sys/common_ansi.h" 3 4 +# 1 "/usr/include/amd64/int_types.h" 1 3 4 +# 38 "/usr/include/amd64/int_types.h" 3 4 +# 1 "/usr/include/sys/common_int_types.h" 1 3 4 +# 45 "/usr/include/sys/common_int_types.h" 3 4 +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef short int __int16_t; +typedef short unsigned int __uint16_t; +typedef int __int32_t; +typedef unsigned int __uint32_t; +typedef long int __int64_t; +typedef long unsigned int __uint64_t; + + + + + +typedef long int __intptr_t; +typedef long unsigned int __uintptr_t; +# 39 "/usr/include/amd64/int_types.h" 2 3 4 +# 38 "/usr/include/sys/common_ansi.h" 2 3 4 +# 3 "/usr/include/amd64/ansi.h" 2 3 4 +# 36 "/usr/include/sys/ansi.h" 2 3 4 + +typedef char * __caddr_t; +typedef __uint32_t __gid_t; +typedef __uint32_t __in_addr_t; +typedef __uint16_t __in_port_t; +typedef __uint32_t __mode_t; +typedef __int64_t __off_t; +typedef __int32_t __pid_t; +typedef __uint8_t __sa_family_t; +typedef unsigned int __socklen_t; +typedef __uint32_t __uid_t; +typedef __uint64_t __fsblkcnt_t; +typedef __uint64_t __fsfilcnt_t; + +struct __tag_wctrans_t; +typedef struct __tag_wctrans_t *__wctrans_t; + +struct __tag_wctype_t; +typedef struct __tag_wctype_t *__wctype_t; + + + + + +typedef union { + __int64_t __mbstateL; + char __mbstate8[128]; +} __mbstate_t; +# 72 "/usr/include/sys/ansi.h" 3 4 +typedef __builtin_va_list __va_list; +# 43 "/usr/include/stdio.h" 2 3 4 + + +typedef long unsigned int size_t; + + + +typedef long int ssize_t; +# 60 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/sys/null.h" 1 3 4 +# 61 "/usr/include/stdio.h" 2 3 4 + + + + + + +typedef struct __sfpos { + __off_t _pos; + __mbstate_t _mbstate_in, _mbstate_out; +} fpos_t; +# 81 "/usr/include/stdio.h" 3 4 +struct __sbuf { + unsigned char *_base; + int _size; +}; +# 112 "/usr/include/stdio.h" 3 4 +typedef struct __sFILE { + unsigned char *_p; + int _r; + int _w; + unsigned short _flags; + short _file; + struct __sbuf _bf; + int _lbfsize; + + + void *_cookie; + int (*_close)(void *); + ssize_t (*_read) (void *, void *, size_t); + __off_t (*_seek) (void *, __off_t, int); + ssize_t (*_write)(void *, const void *, size_t); + + + struct __sbuf _ext; + + + unsigned char *_up; + int _ur; + + + unsigned char _ubuf[3]; + unsigned char _nbuf[1]; + + int (*_flush)(void *); + + char _lb_unused[sizeof(struct __sbuf) - sizeof(int (*)(void *))]; + + + int _blksize; + __off_t _offset; +} FILE; + + +# 148 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 148 "/usr/include/stdio.h" 3 4 + +extern FILE __sF[3]; + +# 150 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 150 "/usr/include/stdio.h" 3 4 + +# 222 "/usr/include/stdio.h" 3 4 + +# 222 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 222 "/usr/include/stdio.h" 3 4 + +void clearerr(FILE *); +int fclose(FILE *); +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +int fgetc(FILE *); +char *fgets(char * restrict, int, FILE * restrict); +FILE *fopen(const char * restrict , const char * restrict); +int fprintf(FILE * restrict, const char * restrict, ...) + __attribute__((__format__ (__printf__, 2, 3))); +int fputc(int, FILE *); +int fputs(const char * restrict, FILE * restrict); +size_t fread(void * restrict, size_t, size_t, FILE * restrict); +FILE *freopen(const char * restrict, const char * restrict, + FILE * restrict); +int fscanf(FILE * restrict, const char * restrict, ...) + __attribute__((__format__ (__scanf__, 2, 3))); +int fseek(FILE *, long, int); +long ftell(FILE *); +size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict); +int getc(FILE *); +int getchar(void); +void perror(const char *); +int printf(const char * restrict, ...) + __attribute__((__format__ (__printf__, 1, 2))); +int putc(int, FILE *); +int putchar(int); +int puts(const char *); +int remove(const char *); +void rewind(FILE *); +int scanf(const char * restrict, ...) + __attribute__((__format__ (__scanf__, 1, 2))); +void setbuf(FILE * restrict, char * restrict); +int setvbuf(FILE * restrict, char * restrict, int, size_t); +int sscanf(const char * restrict, const char * restrict, ...) + __attribute__((__format__ (__scanf__, 2, 3))); +FILE *tmpfile(void); +int ungetc(int, FILE *); +int vfprintf(FILE * restrict, const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 2, 0))); +int vprintf(const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 1, 0))); + + +char *gets(char *); +int sprintf(char * restrict, const char * restrict, ...) + __attribute__((__format__ (__printf__, 2, 3))); +char *tmpnam(char *); +int vsprintf(char * restrict, const char * restrict, + __va_list) + __attribute__((__format__ (__printf__, 2, 0))); + + + + + +int rename (const char *, const char *); + + +# 281 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 281 "/usr/include/stdio.h" 3 4 + + + +int fgetpos(FILE * restrict, fpos_t * restrict) __asm("__fgetpos50"); +int fsetpos(FILE *, const fpos_t *) __asm("__fsetpos50"); +# 295 "/usr/include/stdio.h" 3 4 + +# 295 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 295 "/usr/include/stdio.h" 3 4 + +char *ctermid(char *); + + + +char *cuserid(char *); + +FILE *fdopen(int, const char *); +int fileno(FILE *); + +# 304 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 304 "/usr/include/stdio.h" 3 4 + + + + + + + + + +# 312 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 312 "/usr/include/stdio.h" 3 4 + +void flockfile(FILE *); +int ftrylockfile(FILE *); +void funlockfile(FILE *); +int getc_unlocked(FILE *); +int getchar_unlocked(void); +int putc_unlocked(int, FILE *); +int putchar_unlocked(int); + +# 320 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 320 "/usr/include/stdio.h" 3 4 + + + + + + + + + +# 328 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 328 "/usr/include/stdio.h" 3 4 + +int pclose(FILE *); +FILE *popen(const char *, const char *); + +# 331 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 331 "/usr/include/stdio.h" 3 4 + + + + +# 334 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 334 "/usr/include/stdio.h" 3 4 + +FILE *popenve(const char *, char *const *, char *const *, const char *); + +# 336 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 336 "/usr/include/stdio.h" 3 4 + +# 347 "/usr/include/stdio.h" 3 4 + +# 347 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 347 "/usr/include/stdio.h" 3 4 + +int snprintf(char * restrict, size_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int vsnprintf(char * restrict, size_t, const char * restrict, + __va_list) + __attribute__((__format__ (__printf__, 3, 0))); + +# 353 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 353 "/usr/include/stdio.h" 3 4 + + + + + + + + +# 360 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 360 "/usr/include/stdio.h" 3 4 + +int getw(FILE *); +int putw(int, FILE *); + + +char *tempnam(const char *, const char *); + + +# 367 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 367 "/usr/include/stdio.h" 3 4 + +# 376 "/usr/include/stdio.h" 3 4 +typedef __off_t off_t; + + + + +# 380 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 380 "/usr/include/stdio.h" 3 4 + +int fseeko(FILE *, __off_t, int); +__off_t ftello(FILE *); + +# 383 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 383 "/usr/include/stdio.h" 3 4 + + + + + + + + + +# 391 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 391 "/usr/include/stdio.h" 3 4 + +int vscanf(const char * restrict, __va_list) + __attribute__((__format__ (__scanf__, 1, 0))); +int vfscanf(FILE * restrict, const char * restrict, __va_list) + __attribute__((__format__ (__scanf__, 2, 0))); +int vsscanf(const char * restrict, const char * restrict, + __va_list) + __attribute__((__format__ (__scanf__, 2, 0))); + +# 399 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 399 "/usr/include/stdio.h" 3 4 + +# 413 "/usr/include/stdio.h" 3 4 + +# 413 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 413 "/usr/include/stdio.h" 3 4 + +int asprintf(char ** restrict, const char * restrict, ...) + __attribute__((__format__ (__printf__, 2, 3))); +char *fgetln(FILE * restrict, size_t * restrict); +char *fparseln(FILE *, size_t *, size_t *, const char[3], int); +int fpurge(FILE *); +void setbuffer(FILE *, char *, int); +int setlinebuf(FILE *); +int vasprintf(char ** restrict, const char * restrict, + __va_list) + __attribute__((__format__ (__printf__, 2, 0))); +const char *fmtcheck(const char *, const char *) + __attribute__((__format_arg__ (2))); + +# 426 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 426 "/usr/include/stdio.h" 3 4 + + + + + + +# 431 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 431 "/usr/include/stdio.h" 3 4 + +FILE *funopen(const void *, + int (*)(void *, char *, int), + int (*)(void *, const char *, int), + __off_t (*)(void *, __off_t, int), + int (*)(void *)); +FILE *funopen2(const void *, + ssize_t (*)(void *, void *, size_t), + ssize_t (*)(void *, const void *, size_t), + __off_t (*)(void *, __off_t, int), + int (*)(void *), + int (*)(void *)); + +# 443 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 443 "/usr/include/stdio.h" 3 4 + +# 453 "/usr/include/stdio.h" 3 4 + +# 453 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 453 "/usr/include/stdio.h" 3 4 + +int __srget(FILE *); +int __swbuf(int, FILE *); + +# 456 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 456 "/usr/include/stdio.h" 3 4 + + + + + + + + +static __inline int __sputc(int _c, FILE *_p) { + if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) + return *_p->_p++ = (unsigned char)_c; + else + return __swbuf(_c, _p); +} +# 513 "/usr/include/stdio.h" 3 4 + +# 513 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 513 "/usr/include/stdio.h" 3 4 + +int vdprintf(int, const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 2, 0))); +int dprintf(int, const char * restrict, ...) + __attribute__((__format__ (__printf__, 2, 3))); + +# 518 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 518 "/usr/include/stdio.h" 3 4 + +# 532 "/usr/include/stdio.h" 3 4 + +# 532 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 532 "/usr/include/stdio.h" 3 4 + +FILE *fmemopen(void * restrict, size_t, const char * restrict); +FILE *open_memstream(char **, size_t *); +ssize_t getdelim(char ** restrict, size_t * restrict, int, + FILE * restrict); +ssize_t getline(char ** restrict, size_t * restrict, FILE * restrict); + +# 538 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 538 "/usr/include/stdio.h" 3 4 + + + + + +typedef struct _locale *locale_t; + + + +# 546 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility push(default) +# 546 "/usr/include/stdio.h" 3 4 + +int fprintf_l(FILE * restrict, locale_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int vfprintf_l(FILE * restrict, locale_t, const char * restrict, + __va_list) __attribute__((__format__ (__printf__, 3, 0))); +int printf_l(locale_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 2, 3))); +int vprintf_l(locale_t, const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 2, 0))); +int asprintf_l(char ** restrict, locale_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int vasprintf_l(char ** restrict, locale_t, const char * restrict, + __va_list) + __attribute__((__format__ (__printf__, 3, 0))); +int vdprintf_l(int, locale_t, const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 3, 0))); +int dprintf_l(int, locale_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int snprintf_l(char * restrict, size_t, locale_t, + const char * restrict, ...) __attribute__((__format__ (__printf__, 4, 5))); +int vsnprintf_l(char * restrict, size_t, locale_t, + const char * restrict, __va_list) __attribute__((__format__ (__printf__, 4, 0))); + +int sprintf_l(char * restrict, locale_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int vsprintf_l(char * restrict, locale_t, const char * restrict, + __va_list) __attribute__((__format__ (__printf__, 3, 0))); + + +int fscanf_l(FILE * restrict, locale_t, const char * restrict, ...) + __attribute__((__format__ (__scanf__, 3, 4))); +int scanf_l(locale_t, const char * restrict, ...) + __attribute__((__format__ (__scanf__, 2, 3))); +int sscanf_l(const char * restrict, locale_t, + const char * restrict, ...) __attribute__((__format__ (__scanf__, 3, 4))); +int vscanf_l(locale_t, const char * restrict, __va_list) + __attribute__((__format__ (__scanf__, 2, 0))); +int vfscanf_l(FILE * restrict, locale_t, const char * restrict, + __va_list) __attribute__((__format__ (__scanf__, 3, 0))); +int vsscanf_l(const char * restrict, locale_t, const char * restrict, + __va_list) __attribute__((__format__ (__scanf__, 3, 0))); + +int snprintf_ss(char *restrict, size_t, const char * restrict, ...) + __attribute__((__format__ (__printf__, 3, 4))); +int vsnprintf_ss(char *restrict, size_t, const char * restrict, __va_list) + __attribute__((__format__ (__printf__, 3, 0))); + + +# 593 "/usr/include/stdio.h" 3 4 +#pragma GCC visibility pop +# 593 "/usr/include/stdio.h" 3 4 + +# 48 "ctype_.c" 2 +# 1 "ctype_local.h" 1 +# 31 "ctype_local.h" +# 1 "/usr/include/limits.h" 1 3 4 +# 37 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/sys/featuretest.h" 1 3 4 +# 38 "/usr/include/limits.h" 2 3 4 +# 156 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/amd64/limits.h" 1 3 4 +# 39 "/usr/include/amd64/limits.h" 3 4 +# 1 "/usr/include/sys/featuretest.h" 1 3 4 +# 40 "/usr/include/amd64/limits.h" 2 3 4 +# 157 "/usr/include/limits.h" 2 3 4 +# 166 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/sys/syslimits.h" 1 3 4 +# 37 "/usr/include/sys/syslimits.h" 3 4 +# 1 "/usr/include/sys/featuretest.h" 1 3 4 +# 38 "/usr/include/sys/syslimits.h" 2 3 4 +# 167 "/usr/include/limits.h" 2 3 4 +# 32 "ctype_local.h" 2 +# 45 "ctype_local.h" + +# 45 "ctype_local.h" +extern const unsigned short _C_ctype_tab_[]; +extern const short _C_toupper_tab_[]; +extern const short _C_tolower_tab_[]; +# 49 "ctype_.c" 2 +# 112 "ctype_.c" +const unsigned short _C_ctype_tab_[1 + (1 << +# 112 "ctype_.c" 3 4 + 8 +# 112 "ctype_.c" + )] = { + 0, + +# 114 "ctype_.c" 3 4 +0x0002 +# 114 "ctype_.c" + , +# 114 "ctype_.c" 3 4 + 0x0002 +# 114 "ctype_.c" + , +# 114 "ctype_.c" 3 4 + 0x0002 +# 114 "ctype_.c" + , +# 114 "ctype_.c" 3 4 + 0x0002 +# 114 "ctype_.c" + , + +# 115 "ctype_.c" 3 4 +0x0002 +# 115 "ctype_.c" + , +# 115 "ctype_.c" 3 4 + 0x0002 +# 115 "ctype_.c" + , +# 115 "ctype_.c" 3 4 + 0x0002 +# 115 "ctype_.c" + , +# 115 "ctype_.c" 3 4 + 0x0002 +# 115 "ctype_.c" + , + +# 116 "ctype_.c" 3 4 +0x0002 +# 116 "ctype_.c" + , +# 116 "ctype_.c" 3 4 + 0x0200 +# 116 "ctype_.c" + | +# 116 "ctype_.c" 3 4 + 0x0002 +# 116 "ctype_.c" + | +# 116 "ctype_.c" 3 4 + 0x0040 +# 116 "ctype_.c" + , +# 116 "ctype_.c" 3 4 + 0x0002 +# 116 "ctype_.c" + | +# 116 "ctype_.c" 3 4 + 0x0040 +# 116 "ctype_.c" + , +# 116 "ctype_.c" 3 4 + 0x0002 +# 116 "ctype_.c" + | +# 116 "ctype_.c" 3 4 + 0x0040 +# 116 "ctype_.c" + , + +# 117 "ctype_.c" 3 4 +0x0002 +# 117 "ctype_.c" + | +# 117 "ctype_.c" 3 4 + 0x0040 +# 117 "ctype_.c" + , +# 117 "ctype_.c" 3 4 + 0x0002 +# 117 "ctype_.c" + | +# 117 "ctype_.c" 3 4 + 0x0040 +# 117 "ctype_.c" + , +# 117 "ctype_.c" 3 4 + 0x0002 +# 117 "ctype_.c" + , +# 117 "ctype_.c" 3 4 + 0x0002 +# 117 "ctype_.c" + , + +# 118 "ctype_.c" 3 4 +0x0002 +# 118 "ctype_.c" + , +# 118 "ctype_.c" 3 4 + 0x0002 +# 118 "ctype_.c" + , +# 118 "ctype_.c" 3 4 + 0x0002 +# 118 "ctype_.c" + , +# 118 "ctype_.c" 3 4 + 0x0002 +# 118 "ctype_.c" + , + +# 119 "ctype_.c" 3 4 +0x0002 +# 119 "ctype_.c" + , +# 119 "ctype_.c" 3 4 + 0x0002 +# 119 "ctype_.c" + , +# 119 "ctype_.c" 3 4 + 0x0002 +# 119 "ctype_.c" + , +# 119 "ctype_.c" 3 4 + 0x0002 +# 119 "ctype_.c" + , + +# 120 "ctype_.c" 3 4 +0x0002 +# 120 "ctype_.c" + , +# 120 "ctype_.c" 3 4 + 0x0002 +# 120 "ctype_.c" + , +# 120 "ctype_.c" 3 4 + 0x0002 +# 120 "ctype_.c" + , +# 120 "ctype_.c" 3 4 + 0x0002 +# 120 "ctype_.c" + , + +# 121 "ctype_.c" 3 4 +0x0002 +# 121 "ctype_.c" + , +# 121 "ctype_.c" 3 4 + 0x0002 +# 121 "ctype_.c" + , +# 121 "ctype_.c" 3 4 + 0x0002 +# 121 "ctype_.c" + , +# 121 "ctype_.c" 3 4 + 0x0002 +# 121 "ctype_.c" + , + +# 122 "ctype_.c" 3 4 +0x0200 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0400 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0040 +# 122 "ctype_.c" + , +# 122 "ctype_.c" 3 4 + 0x0008 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0400 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0020 +# 122 "ctype_.c" + , +# 122 "ctype_.c" 3 4 + 0x0008 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0400 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0020 +# 122 "ctype_.c" + , +# 122 "ctype_.c" 3 4 + 0x0008 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0400 +# 122 "ctype_.c" + | +# 122 "ctype_.c" 3 4 + 0x0020 +# 122 "ctype_.c" + , + +# 123 "ctype_.c" 3 4 +0x0008 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0400 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0020 +# 123 "ctype_.c" + , +# 123 "ctype_.c" 3 4 + 0x0008 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0400 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0020 +# 123 "ctype_.c" + , +# 123 "ctype_.c" 3 4 + 0x0008 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0400 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0020 +# 123 "ctype_.c" + , +# 123 "ctype_.c" 3 4 + 0x0008 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0400 +# 123 "ctype_.c" + | +# 123 "ctype_.c" 3 4 + 0x0020 +# 123 "ctype_.c" + , + +# 124 "ctype_.c" 3 4 +0x0008 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0400 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0020 +# 124 "ctype_.c" + , +# 124 "ctype_.c" 3 4 + 0x0008 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0400 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0020 +# 124 "ctype_.c" + , +# 124 "ctype_.c" 3 4 + 0x0008 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0400 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0020 +# 124 "ctype_.c" + , +# 124 "ctype_.c" 3 4 + 0x0008 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0400 +# 124 "ctype_.c" + | +# 124 "ctype_.c" 3 4 + 0x0020 +# 124 "ctype_.c" + , + +# 125 "ctype_.c" 3 4 +0x0008 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0400 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0020 +# 125 "ctype_.c" + , +# 125 "ctype_.c" 3 4 + 0x0008 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0400 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0020 +# 125 "ctype_.c" + , +# 125 "ctype_.c" 3 4 + 0x0008 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0400 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0020 +# 125 "ctype_.c" + , +# 125 "ctype_.c" 3 4 + 0x0008 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0400 +# 125 "ctype_.c" + | +# 125 "ctype_.c" 3 4 + 0x0020 +# 125 "ctype_.c" + , + +# 126 "ctype_.c" 3 4 +0x0004 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0008 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0400 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0100 +# 126 "ctype_.c" + , +# 126 "ctype_.c" 3 4 + 0x0004 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0008 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0400 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0100 +# 126 "ctype_.c" + , +# 126 "ctype_.c" 3 4 + 0x0004 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0008 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0400 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0100 +# 126 "ctype_.c" + , +# 126 "ctype_.c" 3 4 + 0x0004 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0008 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0400 +# 126 "ctype_.c" + | +# 126 "ctype_.c" 3 4 + 0x0100 +# 126 "ctype_.c" + , + +# 127 "ctype_.c" 3 4 +0x0004 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0008 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0400 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0100 +# 127 "ctype_.c" + , +# 127 "ctype_.c" 3 4 + 0x0004 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0008 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0400 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0100 +# 127 "ctype_.c" + , +# 127 "ctype_.c" 3 4 + 0x0004 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0008 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0400 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0100 +# 127 "ctype_.c" + , +# 127 "ctype_.c" 3 4 + 0x0004 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0008 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0400 +# 127 "ctype_.c" + | +# 127 "ctype_.c" 3 4 + 0x0100 +# 127 "ctype_.c" + , + +# 128 "ctype_.c" 3 4 +0x0004 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0008 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0400 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0100 +# 128 "ctype_.c" + , +# 128 "ctype_.c" 3 4 + 0x0004 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0008 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0400 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0100 +# 128 "ctype_.c" + , +# 128 "ctype_.c" 3 4 + 0x0008 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0400 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0020 +# 128 "ctype_.c" + , +# 128 "ctype_.c" 3 4 + 0x0008 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0400 +# 128 "ctype_.c" + | +# 128 "ctype_.c" 3 4 + 0x0020 +# 128 "ctype_.c" + , + +# 129 "ctype_.c" 3 4 +0x0008 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0400 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0020 +# 129 "ctype_.c" + , +# 129 "ctype_.c" 3 4 + 0x0008 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0400 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0020 +# 129 "ctype_.c" + , +# 129 "ctype_.c" 3 4 + 0x0008 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0400 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0020 +# 129 "ctype_.c" + , +# 129 "ctype_.c" 3 4 + 0x0008 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0400 +# 129 "ctype_.c" + | +# 129 "ctype_.c" 3 4 + 0x0020 +# 129 "ctype_.c" + , + +# 130 "ctype_.c" 3 4 +0x0008 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0400 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0020 +# 130 "ctype_.c" + , +# 130 "ctype_.c" 3 4 + 0x0001 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0008 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0400 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0080 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0100 +# 130 "ctype_.c" + , +# 130 "ctype_.c" 3 4 + 0x0001 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0008 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0400 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0080 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0100 +# 130 "ctype_.c" + , +# 130 "ctype_.c" 3 4 + 0x0001 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0008 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0400 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0080 +# 130 "ctype_.c" + | +# 130 "ctype_.c" 3 4 + 0x0100 +# 130 "ctype_.c" + , + +# 131 "ctype_.c" 3 4 +0x0001 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0008 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0400 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0080 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0100 +# 131 "ctype_.c" + , +# 131 "ctype_.c" 3 4 + 0x0001 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0008 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0400 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0080 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0100 +# 131 "ctype_.c" + , +# 131 "ctype_.c" 3 4 + 0x0001 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0008 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0400 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0080 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0100 +# 131 "ctype_.c" + , +# 131 "ctype_.c" 3 4 + 0x0001 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0008 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0400 +# 131 "ctype_.c" + | +# 131 "ctype_.c" 3 4 + 0x0080 +# 131 "ctype_.c" + , + +# 132 "ctype_.c" 3 4 +0x0001 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0008 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0400 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0080 +# 132 "ctype_.c" + , +# 132 "ctype_.c" 3 4 + 0x0001 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0008 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0400 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0080 +# 132 "ctype_.c" + , +# 132 "ctype_.c" 3 4 + 0x0001 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0008 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0400 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0080 +# 132 "ctype_.c" + , +# 132 "ctype_.c" 3 4 + 0x0001 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0008 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0400 +# 132 "ctype_.c" + | +# 132 "ctype_.c" 3 4 + 0x0080 +# 132 "ctype_.c" + , + +# 133 "ctype_.c" 3 4 +0x0001 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0008 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0400 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0080 +# 133 "ctype_.c" + , +# 133 "ctype_.c" 3 4 + 0x0001 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0008 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0400 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0080 +# 133 "ctype_.c" + , +# 133 "ctype_.c" 3 4 + 0x0001 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0008 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0400 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0080 +# 133 "ctype_.c" + , +# 133 "ctype_.c" 3 4 + 0x0001 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0008 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0400 +# 133 "ctype_.c" + | +# 133 "ctype_.c" 3 4 + 0x0080 +# 133 "ctype_.c" + , + +# 134 "ctype_.c" 3 4 +0x0001 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0008 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0400 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0080 +# 134 "ctype_.c" + , +# 134 "ctype_.c" 3 4 + 0x0001 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0008 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0400 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0080 +# 134 "ctype_.c" + , +# 134 "ctype_.c" 3 4 + 0x0001 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0008 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0400 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0080 +# 134 "ctype_.c" + , +# 134 "ctype_.c" 3 4 + 0x0001 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0008 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0400 +# 134 "ctype_.c" + | +# 134 "ctype_.c" 3 4 + 0x0080 +# 134 "ctype_.c" + , + +# 135 "ctype_.c" 3 4 +0x0001 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0008 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0400 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0080 +# 135 "ctype_.c" + , +# 135 "ctype_.c" 3 4 + 0x0001 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0008 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0400 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0080 +# 135 "ctype_.c" + , +# 135 "ctype_.c" 3 4 + 0x0001 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0008 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0400 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0080 +# 135 "ctype_.c" + , +# 135 "ctype_.c" 3 4 + 0x0001 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0008 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0400 +# 135 "ctype_.c" + | +# 135 "ctype_.c" 3 4 + 0x0080 +# 135 "ctype_.c" + , + +# 136 "ctype_.c" 3 4 +0x0001 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0008 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0400 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0080 +# 136 "ctype_.c" + , +# 136 "ctype_.c" 3 4 + 0x0001 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0008 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0400 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0080 +# 136 "ctype_.c" + , +# 136 "ctype_.c" 3 4 + 0x0001 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0008 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0400 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0080 +# 136 "ctype_.c" + , +# 136 "ctype_.c" 3 4 + 0x0008 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0400 +# 136 "ctype_.c" + | +# 136 "ctype_.c" 3 4 + 0x0020 +# 136 "ctype_.c" + , + +# 137 "ctype_.c" 3 4 +0x0008 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0400 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0020 +# 137 "ctype_.c" + , +# 137 "ctype_.c" 3 4 + 0x0008 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0400 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0020 +# 137 "ctype_.c" + , +# 137 "ctype_.c" 3 4 + 0x0008 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0400 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0020 +# 137 "ctype_.c" + , +# 137 "ctype_.c" 3 4 + 0x0008 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0400 +# 137 "ctype_.c" + | +# 137 "ctype_.c" 3 4 + 0x0020 +# 137 "ctype_.c" + , + +# 138 "ctype_.c" 3 4 +0x0008 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0400 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0020 +# 138 "ctype_.c" + , +# 138 "ctype_.c" 3 4 + 0x0001 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0008 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0010 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0400 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0100 +# 138 "ctype_.c" + , +# 138 "ctype_.c" 3 4 + 0x0001 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0008 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0010 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0400 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0100 +# 138 "ctype_.c" + , +# 138 "ctype_.c" 3 4 + 0x0001 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0008 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0010 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0400 +# 138 "ctype_.c" + | +# 138 "ctype_.c" 3 4 + 0x0100 +# 138 "ctype_.c" + , + +# 139 "ctype_.c" 3 4 +0x0001 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0008 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0010 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0400 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0100 +# 139 "ctype_.c" + , +# 139 "ctype_.c" 3 4 + 0x0001 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0008 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0010 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0400 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0100 +# 139 "ctype_.c" + , +# 139 "ctype_.c" 3 4 + 0x0001 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0008 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0010 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0400 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0100 +# 139 "ctype_.c" + , +# 139 "ctype_.c" 3 4 + 0x0001 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0008 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0010 +# 139 "ctype_.c" + | +# 139 "ctype_.c" 3 4 + 0x0400 +# 139 "ctype_.c" + , + +# 140 "ctype_.c" 3 4 +0x0001 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0008 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0010 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0400 +# 140 "ctype_.c" + , +# 140 "ctype_.c" 3 4 + 0x0001 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0008 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0010 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0400 +# 140 "ctype_.c" + , +# 140 "ctype_.c" 3 4 + 0x0001 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0008 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0010 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0400 +# 140 "ctype_.c" + , +# 140 "ctype_.c" 3 4 + 0x0001 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0008 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0010 +# 140 "ctype_.c" + | +# 140 "ctype_.c" 3 4 + 0x0400 +# 140 "ctype_.c" + , + +# 141 "ctype_.c" 3 4 +0x0001 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0008 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0010 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0400 +# 141 "ctype_.c" + , +# 141 "ctype_.c" 3 4 + 0x0001 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0008 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0010 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0400 +# 141 "ctype_.c" + , +# 141 "ctype_.c" 3 4 + 0x0001 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0008 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0010 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0400 +# 141 "ctype_.c" + , +# 141 "ctype_.c" 3 4 + 0x0001 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0008 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0010 +# 141 "ctype_.c" + | +# 141 "ctype_.c" 3 4 + 0x0400 +# 141 "ctype_.c" + , + +# 142 "ctype_.c" 3 4 +0x0001 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0008 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0010 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0400 +# 142 "ctype_.c" + , +# 142 "ctype_.c" 3 4 + 0x0001 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0008 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0010 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0400 +# 142 "ctype_.c" + , +# 142 "ctype_.c" 3 4 + 0x0001 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0008 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0010 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0400 +# 142 "ctype_.c" + , +# 142 "ctype_.c" 3 4 + 0x0001 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0008 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0010 +# 142 "ctype_.c" + | +# 142 "ctype_.c" 3 4 + 0x0400 +# 142 "ctype_.c" + , + +# 143 "ctype_.c" 3 4 +0x0001 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0008 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0010 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0400 +# 143 "ctype_.c" + , +# 143 "ctype_.c" 3 4 + 0x0001 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0008 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0010 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0400 +# 143 "ctype_.c" + , +# 143 "ctype_.c" 3 4 + 0x0001 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0008 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0010 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0400 +# 143 "ctype_.c" + , +# 143 "ctype_.c" 3 4 + 0x0001 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0008 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0010 +# 143 "ctype_.c" + | +# 143 "ctype_.c" 3 4 + 0x0400 +# 143 "ctype_.c" + , + +# 144 "ctype_.c" 3 4 +0x0001 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0008 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0010 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0400 +# 144 "ctype_.c" + , +# 144 "ctype_.c" 3 4 + 0x0001 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0008 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0010 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0400 +# 144 "ctype_.c" + , +# 144 "ctype_.c" 3 4 + 0x0001 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0008 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0010 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0400 +# 144 "ctype_.c" + , +# 144 "ctype_.c" 3 4 + 0x0008 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0400 +# 144 "ctype_.c" + | +# 144 "ctype_.c" 3 4 + 0x0020 +# 144 "ctype_.c" + , + +# 145 "ctype_.c" 3 4 +0x0008 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0400 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0020 +# 145 "ctype_.c" + , +# 145 "ctype_.c" 3 4 + 0x0008 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0400 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0020 +# 145 "ctype_.c" + , +# 145 "ctype_.c" 3 4 + 0x0008 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0400 +# 145 "ctype_.c" + | +# 145 "ctype_.c" 3 4 + 0x0020 +# 145 "ctype_.c" + , +# 145 "ctype_.c" 3 4 + 0x0002 +# 145 "ctype_.c" + , +}; +# 160 "ctype_.c" +const unsigned short *_ctype_tab_ = &_C_ctype_tab_[0]; diff --git a/vendor/modernc.org/libc/netbsd/ctype_local.h b/vendor/modernc.org/libc/netbsd/ctype_local.h new file mode 100644 index 000000000..b8a230c72 --- /dev/null +++ b/vendor/modernc.org/libc/netbsd/ctype_local.h @@ -0,0 +1,54 @@ +/* $NetBSD: ctype_local.h,v 1.5 2013/04/13 10:21:20 joerg Exp $ */ + +/*- + * Copyright (c) 2010 Citrus Project, + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _CTYPE_LOCAL_H_ +#define _CTYPE_LOCAL_H_ + +#include + +#define _CTYPE_NUM_CHARS (1 << CHAR_BIT) +#define _CTYPE_CACHE_SIZE (1 << 8) + +#define _COMPAT_U 0x01 +#define _COMPAT_L 0x02 +#define _COMPAT_N 0x04 +#define _COMPAT_S 0x08 +#define _COMPAT_P 0x10 +#define _COMPAT_C 0x20 +#define _COMPAT_X 0x40 +#define _COMPAT_B 0x80 + +extern const unsigned short _C_ctype_tab_[]; +extern const short _C_toupper_tab_[]; +extern const short _C_tolower_tab_[]; + +#ifdef __BUILD_LEGACY +extern const unsigned char *_ctype_; +extern const unsigned char _C_compat_bsdctype[]; +#endif + +#endif /*_CTYPE_LOCAL_H_*/ diff --git a/vendor/modernc.org/libc/testdata/memgrind/badfree.c b/vendor/modernc.org/libc/testdata/memgrind/badfree.c new file mode 100644 index 000000000..ba3265b15 --- /dev/null +++ b/vendor/modernc.org/libc/testdata/memgrind/badfree.c @@ -0,0 +1,15 @@ +// This program attempts to free a pointer not acquired by malloc/calloc/realloc. +// +// Compile to Go: `$ ccgo -o main.go badfree.c`. +// +// To run the resulting Go code: `$ go run main.go`. +// +// To run the resulting Go code with memgrind: `$ go run -tags=libc.memgrind main.go`. + +#include + +int main() { + int i; + free(&i); +} + diff --git a/vendor/modernc.org/libc/testdata/memgrind/doublefree.c b/vendor/modernc.org/libc/testdata/memgrind/doublefree.c new file mode 100644 index 000000000..c781e80b5 --- /dev/null +++ b/vendor/modernc.org/libc/testdata/memgrind/doublefree.c @@ -0,0 +1,16 @@ +// This program frees allocated memory twice. +// +// Compile to Go: `$ ccgo -o main.go doublefree.c`. +// +// To run the resulting Go code: `$ go run main.go`. +// +// To run the resulting Go code with memgrind: `$ go run -tags=libc.memgrind main.go`. + +#include + +int main() { + void *p = malloc(42); + free(p); + free(p); +} + diff --git a/vendor/modernc.org/libc/testdata/memgrind/leak.c b/vendor/modernc.org/libc/testdata/memgrind/leak.c new file mode 100644 index 000000000..2e5dcfcc3 --- /dev/null +++ b/vendor/modernc.org/libc/testdata/memgrind/leak.c @@ -0,0 +1,13 @@ +// This program leaks memory. +// +// Compile to Go: `$ ccgo -o main.go leak.c`. +// +// To run the resulting Go code: `$ go run main.go`. +// +// To run the resulting Go code with memgrind: `$ go run -tags=libc.memgrind main.go`. + +#include + +int main() { + malloc(42); +} diff --git a/walletdatabase/migrations/bindata.go b/walletdatabase/migrations/bindata.go index bbea97ff8..4989f72ed 100644 --- a/walletdatabase/migrations/bindata.go +++ b/walletdatabase/migrations/bindata.go @@ -11,7 +11,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -21,7 +20,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } var buf bytes.Buffer @@ -29,7 +28,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %w", name, err) } if clErr != nil { return nil, err @@ -85,7 +84,7 @@ func _1691753758_initialUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1692367626, 0)} + info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1692687412, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0x25, 0x31, 0xc8, 0x27, 0x3, 0x6b, 0x9f, 0x15, 0x42, 0x2f, 0x85, 0xfb, 0xe3, 0x6, 0xea, 0xf7, 0x97, 0x12, 0x56, 0x3c, 0x9a, 0x5b, 0x1a, 0xca, 0xb1, 0x23, 0xfa, 0xcd, 0x57, 0x25, 0x5c}} return a, nil } @@ -105,7 +104,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1692367626, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1692687412, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -202,19 +201,23 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "1691753758_initial.up.sql": _1691753758_initialUpSql, - - "doc.go": docGo, + "doc.go": docGo, } +// AssetDebug is true if the assets were built with the debug flag enabled. +const AssetDebug = false + // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -247,8 +250,8 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "1691753758_initial.up.sql": &bintree{_1691753758_initialUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1691753758_initial.up.sql": {_1691753758_initialUpSql, map[string]*bintree{}}, + "doc.go": {docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -265,7 +268,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err }